章节
问答
课签
笔记
评论
占位
占位

精灵动画的实现

CSS Sprites在国内很多人叫CSS精灵,其实这个技术不新鲜,原理就是:靠不断的切换图片让人感觉视觉上不断在变化,例如gif动画之类的效果

那么前端如何实现精灵效果?

传统的就是靠定时器不断去改变一个元素的background-image属性了,简单的来说就是靠不断的替换图片,但是值得注意的问题就是图片如果很多,加载会比较慢,会占用大量网络资源

大多数的做法就是把图片都合成一张大图再利用CSS的以下属性

background-image
background-repeat
background-position

组合进行背景定位,background-position可以用数字精确的定位出背景图片的位置

这里我将采用最新的CSS3的动画实现。通过 CSS3我们能够创建动画,这可以在许多网页中取代动画图片、Flash 动画以及 JavaScript。

新增一个class类slowWalk,在这个类中定义一个animation,通过关键帧keyframes定义一些规则,就是如何取图片坐标

  • slowWalk样式,用于定义一些动画参数,比如执行的时间、方式、算法、次数等等
  • @keyframes 规则用于创建动画。在 @keyframes 中规定某项 CSS 样式,就能创建由当前样式逐渐改为新样式的动画效果

右边代码区域所示,为方便理解,解读一下样式的slowWalk类定义规则:

定义一个名为person-slow的@keyframes规则,@keyframes用百分比来规定变化发生的时间, 0% 是动画的开始,100% 是动画的完成,规则中有4个百分比值的变化,每个比值分别通过position获取一张图片,分别是0%,25%,50%,75%,100%。在950毫米内从0%-100%发生4次变化,采用的算法是steps(1, start)一帧一帧的切换,通过设置infinite参数每950毫秒不断循环

通过点击开始动画按钮,我们可以看到最终效果,完全靠CSS实现,非常nice!!!!

任务

打开index.html文件,在代码的23行填入相应代码,通过定义个CCS3的样式规则,让人物开始进行帧动画切换

    /*规定 @keyframes 动画的名称。*/
    -webkit-animation-name: person-slow; 
    /*规定动画完成一个周期所花费的秒或毫秒。默认是 0*/
    -webkit-animation-duration: 950ms;
    /*规定动画被播放的次数。默认是 1。 infinite(循环播放)*/
    -webkit-animation-iteration-count: infinite;
    /*动画切换的方式是一帧一帧的改变*/
    -webkit-animation-timing-function: steps(1, start);
    -moz-animation-name: person-slow;
    -moz-animation-duration: 950ms;
    -moz-animation-iteration-count: infinite;
    -moz-animation-timing-function: steps(1, start)
?不会了怎么办
||
1
<!DOCTYPE html
    >
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
2
/////////
// //
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
2
/**/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
2
* {
padding
       : 0;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
提交
重置代码
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布

最新回答 / Zz皓
原因是点击按钮被排挤到其他地方去了,加上下面的css代码就可以,需要触发点击事件啊<...code...>

最新回答 / 慕粉3828920
steps(n,start);n表示帧与帧之间分n次跳跃变化;一般默认情况下你定义的动画,帧与帧之间是【连续】过渡变化;而当你设置了-moz-animation-timing-function:steps(1,start),表示帧与帧之间的变化改为分n次【跳跃】变化,不在连续。

最新回答 / 慕用7870725
这是JavaScript里的  相当于定义了一个方法

最新回答 / qq_莫傷曉_0
很有可能是浏览器的问题,浏览器对C3不兼容

最新回答 / 单人旅途灬
url前面空格去掉

最新回答 / qq_缔曦_04032696
你在页面上单击按钮了么,没看到按钮的话 按f11 全屏显示

已采纳回答 / 慕仙4887915
-moz-是兼容火狐老版本的

已采纳回答 / qq_申奇峰_0
作者采用了“雪碧图”(将很多小图片放在一张大图中),通过移动position的x,y值来调整对应小图的位置图片是由设计给出的,我们现在只需把图片连贯起来;也就上上面的代码移动大图背景坐标,展现小图

已采纳回答 / EricPan
小男孩衣服上的标志你修改图片就可以了

已采纳回答 / 慕粉13527494764
你仔细看他给的压缩包的图,任务其余部分都是透明的不是白色

最新回答 / Cynczl
PS或者是AI吧都可以做的,但是一般这种矢量图用AI做的多

已采纳回答 / 风惕3301535
这是一张有很多人物的图片,你打开这个链接就看到了,http://img.mukewang.com/55ade248000198ae10550582.png,这些坐标是其中一个人物的坐标,.charector {        position: absolute;        left: 6%;        top: 55%;        width: 151px;        height: 291px;        background: url(http://img.mukewang.co...
全部 我要发布
最热 最新
只看我的

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

账号登录 验证码登录

遇到问题
忘记密码

代码语言