您好,欢迎访问一九零五行业门户网

基于HTML5陀螺仪实现移动动画效果

这次给大家带来基于html5陀螺仪实现移动动画效果,基于html5陀螺仪实现移动动画效果的注意事项有哪些,下面就是实战案例,一起来看一下。
最近用ofo小黄车app的时候,发现以前下方扫一扫变成了一个眼睛动的小黄人,觉得蛮有意思的,这里用html5仿一下效果。
ofo眼睛效果
效果分析
从效果中不难看出,是使用陀螺仪事件实现的。
这里先来看一下html5中陀螺仪事件的一些概念。
陀螺仪事件为deviceorientation,这里主要获取事件中的alpha,beta,gamma。
aplha
行动装置水平放置时,绕 z 轴旋转的角度,数值为 0 度到 360 度。
beta
行动装置水平放置时,绕 x 轴旋转的角度,数值为 -180 度到 180 度。
gamma
行动装置水平放置时,绕 z 轴旋转的角度,数值为 -90 度到 90 度。
这里,只需要用到beta和gamma。
将apk解压,得到眼睛素材:
代码实现
<!doctype html> <html lang="en"> <head>   <meta charset="utf-8">   <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">   <title>document</title>   <style>     #box{       position: relative;       width: 300px;       margin: 0 auto;     }     #face{       background-image: url(images/face.png);       background-size: cover;       width: 300px;       height: 300px;       position: absolute;     }     #eyeleft{       background-image: url(images/eye.png);       background-size: cover;       width: 40px;       height: 40px;       position: absolute;       top: 90px;       left: 100px;     }     #eyeright{       background-image: url(images/eye.png);       background-size: cover;       width: 40px;       height: 40px;       position: absolute;       top: 90px;       left: 190px;     }     #glass{       background-image: url(images/glass.png);       background-size: cover;       width: 300px;       height: 300px;       position: absolute;     }   </style> </head> <body>   <p id="box">     <p id="face"></p>     <p id="eyeleft"></p>     <p id="eyeright"></p>     <p id="glass"></p>     <p id="log"></p>   </p> <script> 'use strict'; /* * author: 王乐平 * date:2017.7.17 */ var eyeleftposition = {   start: [70, 78],   end: [100, 110] }; var eyerightposition = {   start: [150, 78],   end: [190, 110] }; var eyeleftcenterposition = {   x: (eyeleftposition.end[0] - eyeleftposition.start[0]) / 2 + eyeleftposition.start[0],   y: (eyeleftposition.end[1] - eyeleftposition.start[1]) / 2 + eyeleftposition.start[1] }; var eyerightcenterposition = {   x: (eyerightposition.end[0] - eyerightposition.start[0]) / 2 + eyerightposition.start[0],   y: (eyerightposition.end[1] - eyerightposition.start[1]) / 2 + eyerightposition.start[1] }; var r = 20; var eyeleft = document.queryselector('#eyeleft'); var eyeright = document.queryselector('#eyeright'); if (window.deviceorientationevent) {   window.addeventlistener('deviceorientation', function (event) {     let {alpha, beta, gamma} = event;     eyeleft.style.left = eyeleftcenterposition.x + gamma / 90 * r + 'px';     eyeright.style.left = eyerightcenterposition.x + gamma / 90 * r + 'px';     eyeleft.style.top = eyeright.style.top                        = eyeleftcenterposition.y + beta / 180 * r + 'px';     eyeright.style.transform = eyeleft.style.transform                           = eyeright.style.webkittransform                           = eyeleft.style.webkittransform                           = 'rotate(' + beta + 'deg)';   }, false); } else {   document.queryselector('body').innerhtml = '浏览器不支持deviceorientationevent'; } </script> </body> </html>
最终效果
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
h5拖放api进行拖放排序
ie8不兼容rgba()如何处理
以上就是基于html5陀螺仪实现移动动画效果的详细内容。
其它类似信息

推荐信息