事件之设备事件

一 定义:以用于确定用户使用设备的方式

二 事件

  • orientationchange 事件
    • 定义:以方便开发者判断用户的设备 是处于垂直模式还是水平模式
    • window.orientation 属性(3 种值):
      • 0 表示垂直模式
      • 90 表示左转水平模式(主屏幕键在右侧)
      • –90 表示右转水平模式(主屏幕键在左)

 

// 以下是这个事件典型的用法:
window.addEventListener("load", (event) => { 
 let div = document.getElementById("myDiv"); 
 div.innerHTML = "Current orientation is " + window.orientation; 
 window.addEventListener("orientationchange", (event) => { 
 div.innerHTML = "Current orientation is " + window.orientation; 
 }); 
}); 

// 这个例子会在 load 事件触发时显示设备初始的朝向。然后,又指定了 orientationchange 事件处理程序。此后,只要这个事件触发,页面就会更新以显示新的朝向信息。
// 所有 iOS 设备都支持 orientationchange 事件和 window.orientation 属性

  • deviceorientation 事件
    • 定义:是DeviceOrientationEvent规范定义的事件
    • 如果可以获取设备的加速计信息, 而且数据发生了变化,这个事件就会在 window 上触发
    • 要注意的是,deviceorientation 事件只反映设备在空间中的朝向,而不涉及移动相关的信息
    • 属性:设备本身处于 3D 空间即拥有 x 轴、y 轴和 z 轴的坐标系中
      • 如果把设备静止放在水平的表面上,那么三轴的值均为 0
      • x 轴方向为从设备左侧到右侧
      • y 轴方向为从设备底部到上部
      • z 轴方向为从 设备背面到正面

  •  对象属性:event 对象中会包含各个轴相对于设备静置时坐标值的变化
    • alpha:0~360 范围内的浮点值,表示围绕 z 轴旋转时 y 轴的度数(左右转)
    • beta:–180~180 范围内的浮点值,表示围绕 x 轴旋转时 z 轴的度数(前后转)
    • gamma:–90~90 范围内的浮点值,表示围绕 y 轴旋转时 z 轴的度数(扭转)
    • absolute:布尔值,表示设备是否返回绝对值
    • compassCalibrated:布尔值,表示设备的指南针是否正确校准。

 

window.addEventListener("deviceorientation", (event) => { 
 let output = document.getElementById("output"); 
 output.innerHTML = 
 `Alpha=${event.alpha}, Beta=${event.beta}, Gamma=${event.gamma}<br>`; 
}); 

// 基于这些信息,可以随着设备朝向的变化重新组织或修改屏幕上显示的元素。例如,以下代码会随着朝向变化旋转一个元素:
window.addEventListener("deviceorientation", (event) => { 
 let arrow = document.getElementById("arrow"); 
 arrow.style.webkitTransform = `rotate(${Math.round(event.alpha)}deg)`; 
}); 

// 这个例子只适用于移动 WebKit 浏览器,因为使用的是专有的 webkitTransform 属性(CSS 标准的 transform 属性的临时版本)。“箭头”(arrow)元素会随着 event.alpha 值的变化而变化,呈现出指南针的样子。这里给 CSS3 旋转变形函数传入了四舍五入后的值,以确保平顺。

  • devicemotion 事件
    • 定义:用于提示设备实际上在移动, 而不仅仅是改变了朝向
    • 属性:
属性定义
acceleration对象,包含 x、y 和 z 属性,反映不考虑重力情况下各个维度的加速信息
accelerationIncludingGravity对象,包含 x、y 和 z 属性,反映各个维度的加速信息, 包含 z 轴自然重力加速度
interval毫秒,距离下次触发 devicemotion 事件的时间。此值在事件之间应为常量
rotationRate对象,包含 alpha、beta 和 gamma 属性,表示设备朝向
// 如果无法提供 acceleration、accelerationIncludingGravity 和 rotationRate 信息,则属性值为 null。为此,在使用这些属性前必须先检测它们的值是否为 null。比如:
window.addEventListener("devicemotion", (event) => { 
 let output = document.getElementById("output"); 
 if (event.rotationRate !== null) { 
 output.innerHTML += `Alpha=${event.rotationRate.alpha}` + 
 `Beta=${event.rotationRate.beta}` + 
 `Gamma=${event.rotationRate.gamma}`; 
 } 
}); 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值