【发布时间】:2016-09-21 02:47:18
【问题描述】:
我有两个盒子:
<div class='item' style='transform:translateY(100px)'>
</div>
<div class='item' style='transform:translateY(300px)'>
</div>
他们都使用同一个类:
.item {
position:absolute;
background:red;
animation:float 3s ease-in-out infinite;
width:100px;
height:100px;
}
动画长这样:
@keyframes float {
from, to { transform: translateY(-10px); }
50% { transform: translateY(10px); }
}
但这会使两个框都在 -10 到 10px 之间。我想要的是它与框的当前值相关。
所以 y:100px 处的 box1 会从 90px 动画到 110px y:300px 处的 box2 将从 290px 动画到 310px
是否可以在 css 中做到这一点?我宁愿每个盒子都没有特定的动画。因为我可能有几百个盒子。
jsfiddle: https://jsfiddle.net/foreyez/1n1en8uk/
这表明在动画点上,两个盒子都在同一个地方……但如果是相对动画,它们只会在当前位置上下浮动。
注意:请不要使用 top/left 来获取相对位置 我正在寻找相对 TRANSFORMS。 (如果您必须知道为什么我在 3d 中为 z 轴执行此操作,因为 x,y 已被使用)。
【问题讨论】:
-
from, to的css语法对于@keyframes是否有效? -
是的,否则它不会动画
-
相对定位元素应该可以解决这个问题 -> jsfiddle.net/adeneo/1n1en8uk/2
-
不,它没有,300 像素的 y 看起来与您的解决方案不同
-
你是对的,所以我会坚持我原来的评论,样式被重置,它不会在原来的样式上增加 10px,这不是它的工作原理。跨度>
标签: javascript html css