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

互联网 18-3-26
这次给大家带来基于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>

最终效果

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

H5拖放API进行拖放排序

IE8不兼容rgba()如何处理

以上就是基于HTML5陀螺仪实现移动动画效果的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 移动
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:H5如何做出碎片式的图片切换

相关资讯