## 一、横竖屏切换事件
使用`window.orientation`检测横竖屏,值为下面的
* 0 竖屏(头朝上)
* 180 竖屏(头朝下)
* 90 横屏(头朝左)
* -90 横屏(头朝右)
~~~
window.addEventListener('orientationchange', function() {
if(window.orientation==90 || window.orientation==-90){
alert('横屏');
}else if(window.orientation==0 || window.orientation==180){
alert('竖屏');
}
});
~~~
## 二、重力加速度事件
监听`devicemotion`事件,在事件对象中,有下面的一些可用属性 acceleration 设备在X,Y,Z三个轴的方向上移动的距离, 不包含重力加速度。
* accelerationIncludingGravity 设备在X,Y,Z三个轴方向移动的距离, 包含重力加速度(重力加速度通常取值为9.8m/s的二次方)
~~~
x轴加速度:以手机屏幕左右两侧为方向移动,往右为正,往左为负
y轴加速度:以手机屏幕前后两侧为方向移动,往前为正,往后为负
z轴加速度:以手机屏幕上下两侧为方向移动,往上为正,往下为负
~~~
* rotationRate 设备在 Alpha, Beta, Gamma 三个方向旋转的速率(度/秒)
~~~
alpha:以设备坐标系z轴为轴的旋转速率
beta:以设备坐标系x轴为轴的旋转速率
gamma:以设备坐标系y轴为轴的旋转速率
~~~
* interval 从设备获取数据的频率, 单位是毫秒
> 注意:ios与android里取到的属性值不一致(正负相反),因为它们各自处理坐标的方式不同
对于设备上的方向,可以参考下面这张图:
![](http://cndpic.dodoke.com/3676759740fd207d8838644625ab916f)
### 三、方向变化事件
监听`deviceorientation`这个方向变化事件,事件对象当中,有下面几个有用的值
* alpha 设备围绕z轴方向旋转的度数,范围:0~360(顶部指向地球的北极,alpha此时为0)
* beta 设备围绕x轴方向旋转的度数,由前向后,范围:-180~180
* gamma 设备围绕y轴方向旋转的度数,由左向右,范围:-90~90
- 第一章:移动开发入门
- 第一节:概述
- 第二节:基础概念
- 第一课时:像素
- 第二课时:视口
- 第二章:Flex 布局
- 第一节:概述
- 第二节:容器属性
- 第一课时:flex-direction 属性
- 第二课时:flex-wrap 属性
- 第三课时:flex-flow 属性
- 第四课时:justify-content 属性
- 第五课时:align-items 属性
- 第六课时:align-content 属性
- 第三节:项目属性
- 第一课时:order 属性
- 第二课时:flex-grow 属性
- 第三课时:flex-shrink 属性
- 第四课时:flex-basis 属性
- 第五课时:flex 属性
- 第六课时:align-self 属性
- 第四节:Flex 实例
- 第一课时:常见页面布局
- 第三章:响应式布局
- 第一节:概述
- 第二节:媒体查询
- 第一课时:概述
- 第二课时:响应式设计
- 第三节:栅格系统
- 第一课时:概述
- 第二课时:案例分析
- 第三课时:Bootstrap 简介
- 第四节:响应式案例
- 第一课时:三星首页
- 第四章:移动端适配
- 第五章:移动端事件
- 第一节:概述
- 第二节:touch 事件
- 第三节:触摸事件对象
- 第四节:其他事件
- 第五节:移动端幻灯片
- 第六章:移动端常见问题
- 第一节:浏览器兼容性
- 第二节:移动端动画
- 第三节:300ms 延迟
- 第四节:文字溢出省略
- 第五节:水平居中和垂直居中
- 第七章:项目案例
- 第一节:美团外卖
- 第一课时:首页
- 第二课时:订单页面
- 第三课时:我的页面
- 第四课时:详情页面
- 第五课时:购物车页