CSS旋转和平移转换会产生意想不到的结果
CSS rotate and translate transform give unexpected results
我已经查看了CSS-TRICKS和谷歌提供给我的任何其他网站的链接列表的第二页,所以我唯一的假设是我误解了这是如何工作的,或者做错了。
我想要的是将图像从当前位置滑入页面的绝对中心。当它滑动时,我希望它在中心旋转,像一个完全平衡的轮子一样旋转。当它滑动和旋转时,我希望它看起来朝向用户。我想做到这一点,同时仍然保持图像平面和未折叠。
它所做的而是顺时针旋转图像,向下朝页面左侧旋转,然后离开页面。
这是我的代码(从animate.css借来,并根据我的需要进行了更改):
@-webkit-keyframes rotOutZm {
0% {
-webkit-transform-origin: center;
transform-origin: center;
opacity: 1;
}
100% {
-webkit-transform-origin: center;
transform-origin: center;
-webkit-transform: rotate3d(0, 0, 1, 90deg) scale3d(3, 3, 3) translate3d(100% ,100% ,0);
transform: rotate3d(0, 0, 1, 90deg) scale3d(3, 3, 3) translate3d(100% ,100% ,0);
opacity: 0;
}
}
@keyframes rotOutZm {
0% {
-webkit-transform-origin: center;
transform-origin: center;
opacity: 1;
}
100% {
-webkit-transform-origin: center;
transform-origin: center;
-webkit-transform: rotate3d(0, 0, 1, 90deg) scale3d(3, 3, 3) translate3d(100% ,100% ,0);
transform: rotate3d(0, 0, 1, 90deg) scale3d(3, 3, 3) translate3d(100% ,100% ,0);
opacity: 0;
}
}
.rotOutZm {
-webkit-animation-name: rotOutZm;
animation-name: rotOutZm;
-webkit-animation-duration: 2s;
animation-duration: 2s;
-webkit-animation-fill-mode: forwards;
animation-fill-mode: forwards;
}
目前,我的代码没有考虑图像的起点,当我有一行图像时,这将是错误的/混乱的。如果他们需要向上滑动到中心,向下滑动到中心等,有没有一种方法可以从他们的起始位置动态计算?我很确定这是JavaScript或jQuery的工作,但我不确定如何编码。
我只是期望过多的动画功能吗?由于复杂性,我是否应该简化我的设计以避免这样做?
编辑:这是一个JSFiddle,展示了正在运行的代码。这是一个动画延迟很小的图像,所以你可以看到图像,然后观察它的动画效果,看看我的问题。我很抱歉没有尽快提供。
JSFiddle
当然可以:
FireFox Live示例
@keyframes rotOutZm {
100% {
margin: -50px; /* image is 100x100px size so... */
transform: translate3d(50vw, 50vh, 0) scale(3) rotate(360deg);
opacity: 0;
}
}
.rotOutZm {
transform-origin: center;
animation: rotOutZm 2s forwards 0.5s;
}
p.S:对-webkit-
和其他供应商前缀也进行上述扩展
vw
和vh
是Viewport的大小。50vh
是视口高度的一半
请注意,放置transform
堆栈的顺序非常重要,即:如果将translate3d移动到转换规则的末尾,则可能会得到不需要的结果。
相关文章:
- JavaScript 模块模式给出了意想不到的结果
- 使用 jQuery 从 HTML 获取 id,给出意想不到的结果
- Javascript for loop产生意想不到的结果
- Javascript计算产生意想不到的结果
- 比较 JavaScript 中的浮点数会产生意想不到的结果
- 弄乱jquery产生了意想不到的结果
- 当元素相等时,Array.sort() 会产生意想不到的结果
- 在JavaScript中循环获得意想不到的结果
- Math.round与Math.ceil相比会产生意想不到的结果
- CSS旋转和平移转换会产生意想不到的结果
- 在Javascript函数中传递参数产生意想不到的结果
- 函数迭代日期数组会产生意想不到的结果
- 重新启动函数会产生意想不到的结果
- CSS为jQuery页面生成与意想不到的结果
- json字符串中的数组长度在angular ng-repeat中返回意想不到的结果
- Javascript:从对象方法内部调用回调函数,产生意想不到的结果
- Javascript: Async嵌套函数在其他Async函数中会产生意想不到的结果
- Raphael-使用transform缩放js路径-意想不到的结果
- 使用窗口.反复打开会产生意想不到的结果
- Lodash isUndefined提供了意想不到的结果