Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[注解] [806] 沿环形路径平移的动画 #81

Open
cssmagic opened this issue Sep 16, 2017 · 6 comments
Open

[注解] [806] 沿环形路径平移的动画 #81

cssmagic opened this issue Sep 16, 2017 · 6 comments
Labels

Comments

@cssmagic
Copy link
Owner

花絮与注解

第 221 页 ‧ 本节

这一节算是全书最烧脑的一个案例了,不过我们用一句话就可以概括它:这基本上是一个 “自转抵消公转” 的故事。

当自转周期与公转周期完全相等时,这个物体在外界看来就没有任何角度变化了,从而以一种 “平移” 的方式在围绕圆心转动。

@cyanxxx
Copy link

cyanxxx commented Jul 3, 2018

请问如果想像书中提到google+那样一圈头像都沿路径转一圈要怎么做呢?

@cssmagic
Copy link
Owner Author

cssmagic commented Jul 7, 2018

@cyanxxx
即使不用 JS,用纯 CSS 来实现应该也是可行的。不如把这个问题留给你自己思考吧? 😉

@cyanxxx
Copy link

cyanxxx commented Jul 9, 2018

我尝试用不同的keyframe来控制它们起始不同的角度,但是会造成有很多keyframe,但是如果要做到google+那样,新加入人挤出去位置的话,假设一开始2个人,每个以180°来填满圆,那样又会就会有两个keyframe控制,3个人,又以120°控制,就这样会又会有3个keyframe,假设满人是8,那就会有45个,不知道有没有好的方法呢?

@cssmagic
Copy link
Owner Author

@cyanxxx
用动画的 delay 能控制起始旋转角度吗?我没试过,只是抛一个想法出来哈。

另外,思路不用局限于 CSS。结合 JS 来控制动画可能会简单一些。

@MwumLi
Copy link

MwumLi commented Oct 6, 2019

文中写到: "每个transform-origin都是可以被两个 translate() 模拟出来的", 示例代码给的是:

transform: rotate(30deg); transform-origin: 200px 300px;
// 等价
transform: translate(200px, 300px) rotate(30deg)
translate(-200px, -300px); transform-origin: 0 0;

最后为什么代码里不用给变换元素设置 transform-origin: 0 0;

@cssmagic
Copy link
Owner Author

@MwumLi
最后为什么代码里不用给变换元素设置 transform-origin: 0 0;

示例代码只是为了说明 translate() 模拟 transform-origin 的原理。

在最终的代码里,动画的原点就是路径的正中心,也就是 transform-origin 的初始值,因此不需要显式写出来。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants