| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
9年前发布

HTML5摇一摇(下)—如何实现签筒摇动动画

演示demo:“ 摇一摇,万福签

上一篇博客( HTML5摇一摇—如何判断设备摇动(上) )中讲到了如何利用HTML5中的DeviceOrientationEvent和DeviceMotionEvent来实现手机摇一摇的判断,这次主要来讲如何利用CSS3实现签筒摇动的动画

半透明遮罩层

当签筒摇动动画出发时,半透明遮罩层显示出来用来凸显签筒摇动的动画

/* 半透明遮罩层 */  .cover {      background: rgba(0, 0, 0, 0.7) no-repeat top right;      position: fixed;      width: 100%;      height: 100%;      top: 0;      left: 0;      display: none;  }

CSS3动画关键帧

了解动画原理的人应该都知道,所谓的动画其实就是由若干个关键帧构成,当一连串的关键帧连续播放时就形成了我们所看见的动画

这里我们所用到的素材其实就是6张连续摇动的签筒所拼成的一张大图:

实现这个动画有两个思路:

  1. 把动画分成一步,动画开始以结尾端点为起点开始执行,然后在0%,20,40,80,100执行了背景图的切换

  2. 第二种是动画分成5步,然后每一步在100%处的时候调用最后一张背景图这里我们就拿第二种实现方法来举例

接下来我们利用CSS3中的 @keyframes 来定义的动画的关键帧,其中 -737px -2px 表明每一步动画都会往右移737像素并上移-2px

@keyframes play {      100% {          background-position: -737px -2px;      }  }  /*为了兼容性考虑,可能还需要加上浏览器厂商的前缀,  例如下面给只出了webkit内核的浏览器厂商前缀,  其他的还有-moz-animation,-o-animation */  @-webkit-keyframes play {      100% {          background-position: -737px -2px;      }  }

调用我们定义的CSS3关键帧

这里我们利用 steps() 这个函数把动画平分成5等份,每份0.8s(100%处的时候调用最后一张背景图), infinite 参数则会让动画无限循环播放

.sprite {      width: 145px;      height: 300px;      display: inline-block;      overflow: hidden;      background: url('./img/animation.png') no-repeat -2px -2px;      animation: play 0.8s steps(5) infinite;      -webkit-animation: play 0.8s steps(5) infinite;  }
</div>

来自: http://segmentfault.com/a/1190000004325435

 本文由用户 jopen 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1453099431417.html
HTML5 CSS3 JavaScript开发