移动端中的陀螺仪

横竖屏

  window下的orientation属性来表示移动端的横竖屏状态,chrome模拟器不支持该属性,只能在真机上测试

window.orientation

  按照上右下左的顺序,该属性的结果分别是0、90、180、-90

  [注意]手机头朝下的切换没有实现

  window下的orientationchange事件来监测移动端的横竖屏状态

  [注意]横竖屏切换也会触发resize事件

    window.addEventListener('orientationchange',()=>{alert(window.orientation)})

  测试代码如下

<style>
#box{width: 100px;height: 100px;line-height: 100px;background: pink;margin: 30px auto 0;text-align: center;
}  
</style>
<div id="box"></div>
<script>
let oBox = document.getElementById('box')window.addEventListener('orientationchange',()=>{oBox.innerHTML = window.orientation})
</script>

设备方向

  deviceorientation事件用来监听设备的方向

  设备在三维空间中是靠x、y和z轴来定位的。当设备静止放在水平表面上时,这三个值都是0

  x轴方向是从左往右,y轴方向是从下往上,z轴方向是从后往前

  触发deviceorientation事件时,事件对象中包含着每个轴相对于设备静止状态下发生变化的信息,事件对象包含以下5个属性

alpha:在围绕z轴旋转时(即左右旋转时),y轴的度数差;是一个介于0到360之间的浮点数
beta:在围绕x轴旋转时(即前后旋转时),z轴的度数差;是一个介于-180到180之间的浮点数
gamma:在围绕y轴旋转时(即扭转设备时),z轴的度数差;是一个介于-90到90之间的浮点数
absolute:布尔值,表示设备是否返回—个绝对值
compassCalibrated:布尔值,表示设备的指南针是否校准过

  手机放置在水平桌面上,android的alpha、beta、gamma值为90、0、0;IOS的alpha、beta、gamma值为0、0、0

  测试代码如下

<style>
#box{width: 100px;line-height: 100px;height: 100px;background: pink;margin: 30px auto 0;text-align: center;
}  
</style>
<div id="box"></div>
<script>
let oBox = document.getElementById('box');
window.addEventListener('deviceorientation',(e)=>{oBox.innerHTML = Math.round(e.beta)oBox.style.transform = `rotate(${e.beta}deg)`
})
</script>

设备移动

  window.devicemotion事件告诉开发人员设备什么时候移动,而不仅仅是设备方向如何改变

  触发devicemotion事件时,事件对象包含以下属性

acceleration:一个包含X、y和z属性的对象,在不考虑重力的情况下,告诉你在每个方向上的加速度
accelerationIncludingGravity: 一个包含x、y和z属性的对象,在考虑z轴自然重力加速度的情况下,告诉你在每个方向上的加速度
interval:以毫秒表示的时间值,必须在另一个devicemotion事件触发前传入。这个值在每个事件中应该是一个常量
rotationRate: —个包含表示方向的alpha、beta和gamma属性的对象

  手机在不同方向下,android和IOS的acceleration和accelerationlncludingGravity这两个属性的x、y、z的值表示不同

  1、放置在水平桌面上

android x:0 y:0 z:10
IOS x:0 y:0 z:-10

  2、屏幕朝右

android x:-10 y:0 z:0
IOS x:10 y:0 z:0

  3、屏幕正对人

android x:0 y:10 z:0
IOS x:0 y:-10 z:0

  所以,android和IOS下重力加速度的取值相反

【元素跟随手机移动】

  下面利用accelerationlncludingGravity属性实现元素跟随手机移动的效果

  测试代码如下

<style>
#box{width: 100px;height: 100px;background: pink;margin: 30px auto 0;text-align: center;
}  
</style>
<div id="box"></div>
<script>
let oBox = document.getElementById('box');
let lastX=0,lastY=0,lastZ=0;
window.addEventListener('devicemotion',(e)=>{requestAnimationFrame(()=>{let {x,y,z} = e.accelerationIncludingGravityx = 6*xy = 6*yz = 6*zoBox.style.transform = `translate3d(${x+lastX}px,${y+lastY}px,${z+lastZ}px)`lastX = xlastY = ylastZ = z    })
})
</script>

【摇一摇】

  摇一摇的原理非常简单,检测到手机的重力加速忽然有比较大的变化幅度即可。摇一摇时,元素颜色发生变化

  测试代码如下

<style>
#box{width: 100px;height: 100px;background: pink;margin: 30px auto 0;text-align: center;transition: 1s;
}  
</style>
<div id="box"></div>
<script>
let oBox = document.getElementById('box');
let colorArr = ['orange','lightblue','lightgreen','pink','lightyellow']
let lastX,lastY,lastZ
let index = 0
window.addEventListener('devicemotion',(e)=>{requestAnimationFrame(()=>{let {x,y,z} = e.accelerationIncludingGravitylet nowRange = Math.abs(lastX -x) + Math.abs(lastY - y) + Math.abs(lastZ - z) if(nowRange > 80){index = (index+1)%colorArr.lengthoBox.style.background = colorArr[index]}lastX = x lastY = ylastZ = z })
})
</script>

 

转载于:https://www.cnblogs.com/lst619247/p/8515314.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571132.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php 收缩栏,HTML5每日一练之details展开收缩标签的应用

HTML5每日一练之details展开收缩标签的应用details标签的出现&#xff0c;为我们带来了更好的用户体验&#xff0c;不必为这种收缩展开的效果再编写JS来实现。注&#xff1a;目前仅Chrome支持此标签。details有一个新增加的子标签——summary&#xff0c;当鼠标点击summary标签…

博客阅读和思考

1.关于当初 选择说来惭愧&#xff0c;当初选择专业之时&#xff0c;我并没有认真审视过所有专业&#xff0c;没有自己感兴趣的专业方向.是父母帮我选择了软件工程这个方向&#xff0c;他们说IT行业发展前景好&#xff0c;以后不愁工作.我想想&#xff0c;也是这样的.于是稀里糊…

oracle行列互换sql,解决Oracle行列转换问题的一个方法

不好意思&#xff0c;编译错误&#xff0c;可能是版本的问题其实&#xff0c;实现的方法很简单&#xff0c;请参考精华帖子下面是源文件 &#xff0c;我是的数据库版本是9.2.0.1&#xff0c;OS为NT[PHP]---Author: Accelerator---Date : 2004-11-25create or replace type lis…

zufeoj 分数线划定

分数线划定 时间限制: 1 Sec 内存限制: 128 MB提交: 13 解决: 7[提交][状态][讨论版]题目描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才&#xff0c;A市对所有报名的选手进行了笔试&#xff0c;笔试分数达到面试分数线的选手方可进入面试。面试…

php 主进程子进程,PHP中的子进程的任何等价物?

通过双向通信,您可以访问stdin,stdout和stderr的最接近的等价物是proc_open().以下是文档中的示例&#xff1a;$descriptorspec array(0 > array("pipe", "r"), // stdin is a pipe that the child will read from1 > array("pipe", &quo…

oracle只读事物,oracle的只读事务

一致性读是oracle区别于其他数据库的重要特点之一&#xff0c;但一般来说&#xff0c;这个一致性读是sql级别的&#xff0c;只针对单个sql有效。由于业务逻辑需要&#xff0c;我们可能需要在一个事务中的多个sql也能实现读一致性&#xff0c;也就是说&#xff0c;数据源在事务开…

获得网页中元素的位置

网页大小&#xff1a; clientWidth和clientHeight。 最快速的方法&#xff1a;getBoundingClientRect() 获得top, right, bottom, left&#xff0c;是获得元素距离viewport的左上角。 获得元素的相对位置&#xff1a;不断向父元素获得offsetHeight和offsetWidth。 获得元素的绝…

实验一 软件工程准备

1、实验目的与要求 &#xff08;1&#xff09; 学习通过博客园软件开发者学习社区的协作与支持完成软件工程课程学习的技巧和经验。 &#xff08;2&#xff09; 掌握Github操作&#xff1b; 2、实验内容和步骤 任务1&#xff1a;在以下网址提交课程调查问卷&#xff1a;https:/…

matlab气相分解反应动力学,第十二章 化学动力学.ppt

快反应 慢反应 速控法 稳态法 (1) 一级反应 (2) 二级反应 高压时 低压时 RRKM理论 12.7 光化学反应 * 物理化学(下) PHYSICAL CHEMISTRY (11) 碰撞理论 单分子反应理论 过渡态理论 光化学反应 催化反应动力学 本章主要内容&#xff1a; 12 化学动力学基础(二) 反应速率理论 碰撞…

深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)

http://blog.csdn.net/u014595019/article/details/52989301转载于:https://www.cnblogs.com/mdumpling/p/8527799.html

基础题

1&#xff0c;别名&#xff0c;内部&#xff0c;外部&#xff0c;hash优先级&#xff1f; 2&#xff0c;screen协助 1.一台screen -S 协助名称 2.另外一台screen -ls 列出目前开的协助会话&#xff08;session&#xff09;&#xff0c;找到上面协助名称对应的session号。 3. sc…

oracle查询字段精度,【Oracle】查询字段的长度、类型、精度、注释等信息

在mysql中alter命令可以修改字段类型,长度,名称或一些其它的参数,下面我来给大家介绍alter函数修改字段长度与类型的两个命令,希望文章来给各位带来帮助. mysql 修改字段长度 alter table news modify column title varchar(130); alter table 表名 modify column 字段名 …

linux改文件后run,linux下.run文件如何安装与卸载

w 表示可写入&#xff0c;其中 u 表示该档案的拥有者&#xff0c;有个 uninstall 文件&#xff0c; r 表示可读取&#xff0c;利用 chmod 可以藉以控制档案如何被他人所调用。执行./uninstall就ok了 下面是其他网友的补充&#xff1a; 比如安装QT编程软件 安装方法如下 命令第一…

leetcode链表题

1. sort_list Sort a linked list in O(n log n) time using constant space complexity. 分析&#xff1a;时间复杂度是nlogn,所以可以考虑归并排序。取中点&#xff0c;对左边和右边分别递归排序&#xff0c;最后合并。 知识点&#xff1a;快慢指针&#xff0c;用来取链表中点…

linux进程管理之mm_struct,【转】Linux进程管理之SMP负载平衡(续二)

继续来分析balance_tasks()函数,结合代码中的注释,理解这段代码应该很容易,在这里主要分析它的两个重要的子函数,即can_migrate_task()和pull_task().先来看can_migrate_task().该函数用来判断当前进程是否能够迁移到目标cpu上,代码如下:staticint can_migrate_task(struct tas…

分治法求最大最小

分治法的基本思想&#xff1a;是将一个规模为n的原问题分解为k个规模较小的子问题&#xff0c;这些子问题互相独立且与原问题相同。递归地解这些子问题&#xff0c;然后将子问题的解合并为原问题的解。 1 #include<stdio.h>2 /* 分治法计算最大值和最小值的算法程序&…

linux安装程序乱码,linux远程桌面乱码解决及引起的相关问题、字库安装

一、解决linux中文乱码问题通过xmanager远程访问linux(我这里使用redhat as5)&#xff0c;原先本机可以看到的中文出现乱码(ssh终端访问时也是乱码)。如何解决这一问题&#xff1f;其实&#xff0c;很简单只要设置系统字符集就行。具体如下&#xff1a;1、修改/etc/sysconfig/i…

第12课第2.2节 字符设备驱动程序之LED驱动程序_测试改进

第12课第2.2节 字符设备驱动程序之LED驱动程序_测试改进 //仅用flash上的根文件系统启动后&#xff0c;手工MOUNT NFSmount -t nfs -o nolock,vers2 192.168.31.202:/work/nfs_root /mnt //在虚拟机中操作/work/nfs_root/tmp$ sudo chown book:book fs_mini_mdev -R //修改为可…

linux查看目录下文件个球,球服务翻译……只找到以前版本的。新版的服务名称改了……...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼还是优化的问题……看得懂地我就关了。比如蓝牙什么的……5985ms fedora-storage-init.service4451ms colord-sane.service3578ms udev-settle.service1545ms NetworkManager.service1492ms boot.mount1443ms systemd-vconsole-set…

大数据笔记(十三)——常见的NoSQL数据库之HBase数据库(A)

一.HBase的表结构和体系结构 1.HBase的表结构 把所有的数据存到一张表中。通过牺牲表空间&#xff0c;换取良好的性能。 HBase的列以列族的形式存在。每一个列族包括若干列 2.HBase的体系结构 主从结构&#xff1a; 主节点&#xff1a;HBase 从节点&#xff1a;RegionServer 包…