今天教大家用HTML5来在网页里实现一个很炫酷的功能,手机摇一摇。如果你之前做过手机端的开发,可能对于这样的功能非常了解。但是下面,我们将在Web上首次实现这个功能。

方向事件deviceorientation

该事件实在设备方向发生变化时触发, 使用方法如下;

window.addEventListener('deviceorientation', orientationHandler, true);

回调函数orientationHandler会接收到一个DeviceOrientationEvent类型参数, 包含以下信息.

属性名 说明

absolute 如果方向数据跟地球坐标系和设备坐标系有差异, 则为true

alpha 设备在alpha方向上旋转的角度, 范围为0-360

beta 设备在Beta方向上旋转的角度, 范围为-180-180

gamma 设备在Gamma方向上旋转的角度, 范围为-90-90

移动事件devicemotion

该事件实在设备位置发生变化时触发

window.addEventListener('devicemotion', motionHandler, false);

该回调函数会接受DeviceMotionEvent类型参数, 包含以下信息.

属性名 说明

acceleration 设备在X,Y,Z三个轴的方向上移动的距离, 以抵消重力加速度

accelerationIncludingGravity 设备在X,Y,Z三个轴方向移动的距离, 包含重力加速度

rotationRate 设备在Alpha, Beta, Gamma三个方向旋转的角度

interval 从设备获取数据的频率, 单位是毫秒

代码部分

摇一摇

摇一摇

const SHAKE_SPEED = 300;

let lastTime = 0;//上次变化的时间

let x = y = z = lastX = lastY = lastZ = 0;//位置变量初始化

function motionHandler(event) {

let acceleration = event.accelerationIncludingGravity;

let curTime = Date.now();//取得当前时间

if ((curTime - lastTime) > 120) {

let diffTime = curTime - lastTime;

lastTime = curTime;

x = acceleration.x;

y = acceleration.y;

z = acceleration.z;

//计算摇动速度

let speed = Math.abs(x + y + z - lastX - lastY - lastZ) / diffTime * 1000;

if (speed > SHAKE_SPEED) {

alert("你摇动了手机");

}

lastX = x;

lastY = y;

lastZ = z;

}

}

if(window.DeviceMotionEvent) {

window.addEventListener('devicemotion', motionHandler, false);

} else {

alert("你的设备不支持位置感应");

}

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

相关阅读:

php用手机摇一摇,H5做出手机摇一摇功能的实现步骤相关推荐

  1. html5调用手机摄像头和相册,h5 调用手机摄像头/相册

    html 部分 js 部分 getBase64: function (file, callback) { var maxWidth = 640 if (file.files && fi ...

  2. H5调用手机摄像头拍照,如何压缩后上传

    H5调用手机摄像头拍照后,怎样压缩再上传? 实际的压缩功能,就是利用canvas画布功能,将图片进行裁剪后保存图片的base64数据流,然后上传. 案例全部代码,示下: <!DOCTYPE ht ...

  3. H5调用手机摄像头,实时拍照上传(旧)

    H5调用手机摄像头,完成拍照,实时上传(旧) 项目开发中,偶尔会遇到网页中调用手机摄像头,通过相册选择或直接实时拍照的方式,完成图片上传的功能型需求. 今天,就通过一个小的案例,演示一下完整的实现流程 ...

  4. SpringBoot项目H5界面手机拍照调用腾讯云OCR卡证识别接口完整例子

    最近一个微信端项目的功能涉及一个手机拍照上传身份证识别身份证信息回显的功能,调用的接口是腾讯云OCR的卡证识别功能.看了腾讯云的api通俗易懂,本地写好了demo测试可用.H5界面手机拍照调用后台方法 ...

  5. html5 手机相册裁剪,H5的手机图片裁剪特效

    H5的手机图片裁剪特效 js代码 //document.addEventListener('touchmove', function (e) { e.preventDefault(); }, fals ...

  6. Android端h5不能选择图片,weui公众号开发h5部分手机不能选择图片及拍照问题

    在使用weui采用h5进行公众号开发时,input file选择图片控件,在部分安卓手机不能拍照.不能选择图片. 经过创软公众号开发团队分析,将input代码设置如下方式即可选择图片或者拍摄图片,成功 ...

  7. 解决H5 IOS手机图片上传时图片会旋转90°问题

    解决H5 IOS手机图片上传时图片会旋转90°问题 Vant 官方给出的解答需要自己解决,没有处理. 解决办法主要使用了 compressorjs 插件库 一.Vant UI库Uploader 组件图 ...

  8. h5调用手机摄像头获取图片用于人脸识别

    h5调用手机摄像头获取图片用于人脸识别 1.安卓手机获取前置摄像头,并在video标签显示 注:navigator.mediaDevices.getUserMedia文档说明兼容Safari11,实测 ...

  9. H5唤起手机打电话(拨号)和发短信功能

    H5唤起手机打电话(拨号)和发短信功能 拨打电话 发送短信 移动web页面自动探测电话号码 使用wtai协议进行拨打电话 关于微信页面出现屏蔽的情况,采用以下解决方案 在移动端页面,有时候我们需要唤起 ...

最新文章

  1. 深度学习在自动驾驶感知领域的应用
  2. SVN 报错svn: E200014: Checksum mismatch for 。。。。。
  3. 彻底弄懂为什么不能把栈上分配的数组(字符串)作为返回值
  4. Windows:打开MSDTC,恢复Windows任务栏,查看windows日志,打开远程桌面,打开Services,资源监控...
  5. 没有做数据备份 网站随时毁于一旦
  6. 发生冲突未及时离场 绿军大将被NBA罚款3.5万美元
  7. 联想第三季:PC+时代的航母启航?
  8. 拓端tecdat:R语言贝叶斯广义线性混合效应(多层次/水平/嵌套)模型GLMM、逻辑回归分析教育留级影响因素数据
  9. Java的表达式和运算符
  10. vue cli3.0 解决跨域问题和axios等问题,配合Django
  11. python代理IP的使用
  12. 关闭笔记本电脑计算机键盘,笔记本电脑键盘怎么关_笔记本电脑键盘关闭步骤-win7之家...
  13. Android手机号码正则表达式
  14. java断点下载文件_java实现文件断点续传下载功能
  15. springboot elementui vue商城微信小程序源码(毕设)开发讲解
  16. 深入理解MyBatis缓存
  17. https证书、公钥、私钥、签名介绍
  18. 学习软件技术的五大技巧
  19. 自然语言处理之——句法分析
  20. 查找java最耗费CPU线程的命令

热门文章

  1. L1 - 闭包和原型链
  2. 关于重构中的“函数尽量小”的负作用
  3. HDU2025 查找最大元素【最值】
  4. Bailian2758 菲波那契数列(2)【递推】
  5. 《程序设计技术》第五章例程
  6. 经典书单、站点 —— 大数据/数据分析/R语言
  7. Boltzmann 玻尔兹曼机(BM)
  8. Python Flask Web 第八课 —— request 请求对象
  9. 深度学习基础(六)—— 从 RBM 到 DBN
  10. 【剑指 offer】(十)—— 二进制形式 1 的个数