作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要在贝塞尔路径上为 div 制作动画,如下图所示。这可以用 JavaScript 实现吗?请注意,这两个点(白色)是相对于浏览器视口(viewport)而言的(如果用户将屏幕拉得更宽,这两个点将彼此远离)。
最佳答案
我不懂 JavaScript,但我可以提供一点帮助。考虑下图:
在三次贝塞尔曲线计时函数中,cubic-bezier(a,b,c,d)
前两个值是值 a,b
是第一个 handle (粉红色) 和 c,d
的坐标是第二个 handle (蓝色)的坐标。
现在就你的情况而言,坐标是已知的。假设两个 handle 的坐标均为1.5,则函数将为 cubic-bezier( x1, 1.5, x2, 1.5)
对于横坐标,假设您将点 1 放置在 10vw
(视口(viewport)宽度)和 90vw
处的点 2 ( timing function end
横坐标是 100vw
),那么对 JS 没有要求,只需删除 vw 并除以 100
。该函数将是 ( 0.1, 1.5, 0.9, 1.5)
)。
但如果相对于viewport的左右两侧,则要求横坐标。需要在 JS 中完成以下操作:
distance from left
.(Width of viewport) - Distance from right
.EG:考虑窗口的宽度为500px。假设点 1 距离左侧 100 像素,点 2 距离右侧 100 像素。因此,插入三次贝塞尔函数的值对于 x1 将为 100/500,对于 x2 则为 400/500 。该函数将是 cubic-bezier(0.2, y1, 0.8, y2)
关于javascript - 贝塞尔路径上的动画元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27846300/
我是一名优秀的程序员,十分优秀!