html5 判断横竖屏,前端js横竖屏检测的4种方案

最近有人提需求,产品要适配横竖屏,这就令人头秃了呀。

这在家办公也不让闲着点。虽然说需求提出来了,但是我们身为一个前端er,还是要有自己的想法呀,我们要统计一波数据看看到底有多少人在横屏使用我们的产品。

方案一:orientation

window.addEventListener("orientationchange", function(event) {

// 等于0或者180竖屏

// 等于90或者-90度横屏

_this.eventValue = event.orientation ||

(screen.orientation && screen.orientation.angle)

}, false);

通过 orientationchange 事件来监听横竖屏的变化

通过 orientation 来获取当前屏幕的方向角度

方案二:resize判断宽高

基于上个方案的兼容性,那么我们搞个兼容性好一点的。

window.addEventListener("resize", function(event) {

_this.innerWidth = window.innerWidth

_this.innerHeight = window.innerHeight

}, false);

通过 resize 事件来监听浏览器的宽高变化

通过比对宽高来判断当前横竖屏状态。

因为是移动端,所以键盘弹出的时候也会干扰。

兼容性当然是棒棒的。

方案三:matchMedia 媒体查询

matchMedia 是什么?

matchMedia() 可以解析任何一个 CSS @media 的特性,如 min-height, min-width, orientation 等。

matchMedia() 返回一个新的 MediaQueryList 对象,表示指定的媒体查询字符串解析后的结果。

MediaQueryList 对象有以下两个属性:

media:当前查询的内容,也就是你传入的内容。

matches:检测查询结果,如果匹配,则值为 true,否则为 false。

如何使用

var mediaQueryList = window

.matchMedia("screen and (orientation: portrait)");

if(window.mediaQueryList && mediaQueryList.addListener){

mediaQueryList.addListener(function(){

_this.matchMediaAddEvent =

mediaQueryList.matches?'竖屏':'横屏'

})

}

方案四:媒体查询

看到这个方案你是不是满头问号。这个方案和上个不一样吗?

哈哈,这个方案是我在网上看到的,有可能是那个人不知道 matchMedia 这个 API。或者是 API 有兼容性问题,他自己搞了一个 hack 方法。

原理也是依赖css的媒体查询。只不过他通过定时比对样式来判断当前状态。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值