Skip to content

裸眼3d?--网页陀螺仪浅析

本文深入解析DeviceOrientationEvent技术原理,详解alpha/beta/gamma陀螺仪参数计算方式。针对移动端浏览器兼容性问题,对比分析iOS与Android系统的权限处理差异,提出基于https的安全部署方案。通过3D视差效果实现案例,演示如何通过设备旋转数据驱动网页元素空间变换。

DeviceOrientationEvent

DeviceOrientationEvent 提供给网页开发者当设备(指手机,平板等移动设备)在浏览页面时物理旋转的信息。

Experimental: 这是一个实验中的功能 此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

警告: 当前,火狐浏览器和谷歌浏览器并未能用同一种方式实现,在使用请注意。

[1] 在版本50之前Chrome为该事件提供绝对的值而非相对的值。开发者仍需使用绝对的值,当使用ondeviceorientationabsolute 事件时.

[2] 火狐3.6, 4, and 5支持mozOrientation 而非标准的 DeviceOrientationEvent

属性

DeviceOrientationEvent.absolute 只读

用来说明设备是提供的旋转数据是否是绝对定位的布尔值。

DeviceOrientationEvent.alpha 只读

一个表示设备绕z轴旋转的角度(范围在0-360之间)的数字

DeviceOrientationEvent.beta 只读

一个表示设备绕x轴旋转(范围在-180到180之间)的数字,从前到后的方向为正方向。

DeviceOrientationEvent.gamma 只读

一个表示设备绕y轴旋转(范围在-90到90之间)的数字,从左向右为正方向。

axes

Demo

https://saraph1nes.gitee.io/demo/01/demo01.html

展示:

4debc9464d76193b9b7a0ad4432ee169

注意

ios需要特殊处理,ios13以上调用陀螺仪需要申请权限(需要用户手动授权,不能默认授权,并且ios真机测试时需要使用https)

Sarfari文档:https://developer.apple.com/safari/resources/#documentation/SafariDOMAdditions/Reference/DeviceOrientationEventClassRef/DeviceOrientationEvent/DeviceOrientationEvent.html

MDN:https://developer.mozilla.org/zh-CN/docs/Web/API/DeviceOrientationEvent

demo-gitee(可能是临时的,以后可能会删掉):https://gitee.com/saraph1nes/demo/pages

Last updated: