我正在尝试为精灵图像设置动画,并找到了这个很好的例子:
博客:http://simurai.com/blog/2012/12/03/step-animation/(已经屈服于linkrot) .
Wayback Machine:http://web.archive.org/web/20140208085706/http://simurai.com/blog/2012/12/03/step-animation/
代码小提琴:https://codepen.io/simurai/pen/tukwj
JSFiddle:http://jsfiddle.net/simurai/CGmCe/
.hi {
宽度:50px;
身高:72px;
background-image:url(“http://s.cdpn.io/79/sprite-steps.png”);
-webkit-animation:播放.8s步骤(10)无限;
-moz-animation:播放.8s步骤(10)无限;
-ms-animation:播放.8s步骤(10)无限;
-o-animation:播放.8s步骤(10)无限;
动画:播放.8s步骤(10)无限; }
@ -webkit-keyframes play {from {background-position:0px; } {background-position:-500px; @ -moz-keyframes播放{from {background-position:0px; } {background-position:-500px; } @ -ms-keyframes play {from {background-position:0px; } {background-position:-500px; @ -o-keyframes播放{from {background-position:0px; } {background-position:-500px; @keyframes play {from {background-position:0px; } {background-position:-500px; }}
我想做同样的事情,但使用方形(功率或两个大小)图像图集而不是动画条 . 例如,这一个:
3 回答
由于这可能是一项难以调试的任务,我想从相同的问题开始,但是在一个更容易调试的环境中 .
我选择在整个图像上将其作为矩形动画 .
在图像上,我显示2个伪元素,一个是行选择器,另一个是列选择器 . 我调整动画直到它们没问题
现在,让我们验证同时设置两个动画是否有效:
现在最后的项目:
所有这些对于webkit浏览器,删除IE和FF的前缀 . 此外,在这种方法中,避免在左下角显示2个空白图像是不可能的 . 如果您没有完整的网格,并且不想显示空图像,则需要逐个指定所有关键帧
请改用background-position-x和background-position-y属性 .
对于这个图像
preview http://www.fore6.com/wp-content/uploads/2011/09/henson11-hp-1g.png
尺寸710px×355px
精灵帧尺寸为118.333像素X 118.333像素,我们需要水平移动6帧,垂直移动3帧 .
这意味着我们需要创建两个独立的关键帧动画来遍历每个方向 . 当x方向动画正在播放时,其他必须冻结直到完成 .
y动画的持续时间也必须是3X .
这是代码
fiddle here
为了帮助理解它是如何工作的,除了@vals提供的答案之外,这里还有一个SCSS的通用解决方案:jsfiddle link
SCSS:
HTML: