HTML5使用DeviceOrientation实现摇一摇功能


Posted in Javascript onJune 05, 2015

HTML5有一个重要特性:DeviceOrientation,它将底层的方向和运动传感器进行了高级封装,它使我们能够很容易的实现重力感应、指南针等有趣的功能。本文将结合实例给大家介绍使用HTML5的重力运动和方向传感器实现手机摇一摇效果。

DeviceOrientation包括两个事件:

1、deviceOrientation:封装了方向传感器数据的事件,可以获取手机静止状态下的方向数据,例如手机所处角度、方位、朝向等。
2、deviceMotion:封装了运动传感器数据的事件,可以获取手机运动状态下的运动加速度等数据。

HTML

页面上有一个div#hand,用来放置一个手摇的图片,div#result用来展示摇动后的结果信息。

<div id="hand" class="hand hand-animate"></div> 
<div id="result"></div>

我们可以使用CSS3来增强页面效果,使用-webkit-animation动画效果实现手摇图片的动态效果,具体请下载源代码查看。

Javascript

“摇一摇”这个动作即“一定时间内设备了一定距离”,因此通过devicemotion监听设备晃动获取到的x, y, z轴的 值在一定时间范围内的变化率,即判断设备是否有进行晃动。而为了防止正常移动的误判,需要给该变化率设置一个合适的临界值。
HTML5判断设备晃动的代码我们使用已经封装好的shake.js,项目地址:https://github.com/alexgibson/shake.js。

<script src="shake.js"></script>

首先实例化Shake,然后启动开始监听设备运动情况,监听设备运动,回调监听结果:shakeEventDidOccur。

window.onload = function() { 
  var myShakeEvent = new Shake({ 
    threshold: 15 
  }); 
 
  myShakeEvent.start(); 
 
  window.addEventListener('shake', shakeEventDidOccur, false); 
 
  function shakeEventDidOccur () { 
    var result = document.getElementById("result"); 
    result.className = "result"; 
    var arr = ['妹子一枚','福利图片一套','码农笔记一本','土豪金一台']; 
    var num = Math.floor(Math.random()*4); 
    result.innerHTML = "恭喜,摇得"+arr[num]+"!"; 
    setTimeout(function(){ 
      result.className = "result result-show"; 
    }, 1000); 
  } 
};

这里,函数shakeEventDidOccur()可以自定义,本例是将摇晃后的结果返回在页面上展示出来,请看DEMO演示。

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
javascript写的一个链表实现代码
Oct 25 Javascript
JavaScript之编码规范 推荐
May 23 Javascript
把jquery 的dialog和ztree结合实现步骤
Aug 02 Javascript
动态添加option及createElement使用示例
Jan 26 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
Dec 28 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
Jan 10 Javascript
vue移动端弹框组件的实例
Sep 25 Javascript
对layui数据表格动态cols(字段)动态变化详解
Oct 25 Javascript
javascript实现弹出层效果
Dec 10 Javascript
记一次react前端项目打包优化的方法
Mar 30 Javascript
JS array数组检测方式解析
May 19 Javascript
用js实现放大镜效果
Oct 28 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
Jun 05 #Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
Jun 05 #Javascript
jQuery+HTML5实现手机摇一摇换衣特效
Jun 05 #Javascript
在JavaScript中使用NaN值的方法
Jun 05 #Javascript
jQuery实现表格行上下移动和置顶效果
Jun 05 #Javascript
jQuery实现弹出窗口中切换登录与注册表单
Jun 05 #Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
Jun 05 #Javascript
You might like
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
PHP异常处理浅析
2015/05/12 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
javascript JSON操作入门实例
2010/04/16 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
vue动画效果实现方法示例
2019/03/18 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
Python3实现生成随机密码的方法
2014/08/23 Python
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
Python线程指南分享
2019/11/19 Python
Django ORM filter() 的运用详解
2020/05/14 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
利用python绘制正态分布曲线
2021/01/04 Python
加拿大便宜的隐形眼镜商店:Clearly
2016/09/15 全球购物
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
小学生评语集锦
2014/04/18 职场文书
品德评语大全
2014/05/05 职场文书
旅游专业毕业生自荐书
2014/06/30 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
民事赔偿协议书
2014/11/02 职场文书
2015入党自传格式范文
2015/06/26 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书