CSS animation:How 使图像对象无缝反弹?
CSS animation:How to make the image object bounce back seamlessly?
演示:
http://www.suanle.lol/move.php
在动画demo中可以看到,当鸡蛋刚好弹回来的时候,先闪出一秒再闪入,这样动画就断了。所以我想知道为什么会这样,我该如何解决?
如果你想查看动图:
其实不仅仅限于.gif,任何格式的图片都会出现这个问题
代码如下:
#egg {
z-index: 2;
margin-left: 50px;
/*display: none;*/
position: absolute;
animation-duration: 6.4s;
animation-name: slide;
animation-iteration-count: infinite;
/*animation: pulse 5s infinite;*/
}
@keyframes slide {
0% {
margin-left: 10px;
/*width: 300%; */
}
49% {
-moz-transform: scaleX(1);
-o-transform: scaleX(1);
-webkit-transform: scaleX(1);
transform: scaleX(1);
filter: FlipH;
-ms-filter: "FlipH";
}
50% {
margin-left: 350px;
-moz-transform: scaleX(-1);
-o-transform: scaleX(-1);
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
filter: FlipH;
-ms-filter: "FlipH";
}
100% {
margin-left: 10px;
-moz-transform: scaleX(-1);
-o-transform: scaleX(-1);
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
filter: FlipH;
-ms-filter: "FlipH";
}
}
<img id="egg" src="http://i.stack.imgur.com/Ke7wO.gif">
好的,这看起来好多了,将 49%
更改为 49.9%
并增强了一点,问题是 1%
的 6.4s
动画持续时间仍然很明显,这使得它 "flashes".
通过减少从 1%
到 0.1%
的差异,从 [=18 转换所需的时间=]到scaleX(-1)
不明显
#container {
position: absolute;
background-color: rgb(231, 143, 128);
width: 310px;
height: 42px;
margin-left: 50px;
z-index: 1;
}
#egg {
z-index: 2;
margin-left: 50px;
/*display: none;*/
position: absolute;
animation-duration: 6.4s;
animation-name: slide;
animation-iteration-count: infinite;
/*animation: pulse 5s infinite;*/
}
@keyframes slide {
0% {
margin-left: 10px;
/*width: 300%; */
}
49.9% {
-moz-transform: scaleX(1);
-o-transform: scaleX(1);
-webkit-transform: scaleX(1);
transform: scaleX(1);
filter: FlipH;
-ms-filter: "FlipH";
}
50% {
margin-left: 350px;
-moz-transform: scaleX(-1);
-o-transform: scaleX(-1);
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
filter: FlipH;
-ms-filter: "FlipH";
}
100% {
margin-left: 10px;
-moz-transform: scaleX(-1);
-o-transform: scaleX(-1);
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
filter: FlipH;
-ms-filter: "FlipH";
}
}
<img id="egg" src="http://i.stack.imgur.com/Ke7wO.gif">
演示: http://www.suanle.lol/move.php
在动画demo中可以看到,当鸡蛋刚好弹回来的时候,先闪出一秒再闪入,这样动画就断了。所以我想知道为什么会这样,我该如何解决?
如果你想查看动图:
其实不仅仅限于.gif,任何格式的图片都会出现这个问题
代码如下:
#egg {
z-index: 2;
margin-left: 50px;
/*display: none;*/
position: absolute;
animation-duration: 6.4s;
animation-name: slide;
animation-iteration-count: infinite;
/*animation: pulse 5s infinite;*/
}
@keyframes slide {
0% {
margin-left: 10px;
/*width: 300%; */
}
49% {
-moz-transform: scaleX(1);
-o-transform: scaleX(1);
-webkit-transform: scaleX(1);
transform: scaleX(1);
filter: FlipH;
-ms-filter: "FlipH";
}
50% {
margin-left: 350px;
-moz-transform: scaleX(-1);
-o-transform: scaleX(-1);
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
filter: FlipH;
-ms-filter: "FlipH";
}
100% {
margin-left: 10px;
-moz-transform: scaleX(-1);
-o-transform: scaleX(-1);
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
filter: FlipH;
-ms-filter: "FlipH";
}
}
<img id="egg" src="http://i.stack.imgur.com/Ke7wO.gif">
好的,这看起来好多了,将 49%
更改为 49.9%
并增强了一点,问题是 1%
的 6.4s
动画持续时间仍然很明显,这使得它 "flashes".
通过减少从 1%
到 0.1%
的差异,从 [=18 转换所需的时间=]到scaleX(-1)
不明显
#container {
position: absolute;
background-color: rgb(231, 143, 128);
width: 310px;
height: 42px;
margin-left: 50px;
z-index: 1;
}
#egg {
z-index: 2;
margin-left: 50px;
/*display: none;*/
position: absolute;
animation-duration: 6.4s;
animation-name: slide;
animation-iteration-count: infinite;
/*animation: pulse 5s infinite;*/
}
@keyframes slide {
0% {
margin-left: 10px;
/*width: 300%; */
}
49.9% {
-moz-transform: scaleX(1);
-o-transform: scaleX(1);
-webkit-transform: scaleX(1);
transform: scaleX(1);
filter: FlipH;
-ms-filter: "FlipH";
}
50% {
margin-left: 350px;
-moz-transform: scaleX(-1);
-o-transform: scaleX(-1);
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
filter: FlipH;
-ms-filter: "FlipH";
}
100% {
margin-left: 10px;
-moz-transform: scaleX(-1);
-o-transform: scaleX(-1);
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
filter: FlipH;
-ms-filter: "FlipH";
}
}
<img id="egg" src="http://i.stack.imgur.com/Ke7wO.gif">