首页前端开发HTML基于HTML5陀螺仪实现移动动画效果

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

时间2024-01-23 08:12:04发布访客分类HTML浏览821
导读:收集整理的这篇文章主要介绍了基于HTML5陀螺仪实现移动动画效果,觉得挺不错的,现在分享给大家,也给大家做个参考。这次给大家带来基于HTML5陀螺仪实现移动动画效果,基于HTML5陀螺仪实现移动动画效果的注意事项有哪些,下面就是实战案例,一...
收集整理的这篇文章主要介绍了基于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-@R_512_1191@ 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陀螺仪实现移动动画效果的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

h5

若转载请注明出处: 基于HTML5陀螺仪实现移动动画效果
本文地址: https://pptw.com/jishu/583950.html
H5调用相机拍照并压缩图片 自定义实现可以播放暂停、进度拖拽、音量控制及全屏的H5播放器

游客 回复需填写必要信息