移动端具有window.orientation属性,
它返回视口相对于设备自然方向的角度。
可能的值是-90
,0
,90
,和180,其中
正值是顺时针,负值是逆时针的。
监听orientationchange事件监听屏幕变化,如果不支持用resize,
function is_mobile_horizontal() { function cb() { if (window.orientation == undefined) { return ‘Not mobile‘; } if (window.orientation == 180 || window.orientation == 0) { alert(‘竖屏‘) } if (window.orientation == 90 || window.orientation == -90) { alert(‘横屏‘) } return; } cb(); window.addEventListener("onorientationchange" in window ? "orientationchange" : "resize", cb, false); }
此外,还可以使用Javascript提供的 MediaQueryList 对象接口判断是否横屏,使用如下语句
window.matchMedia("(orientation: portrait)")
有两个参数,"(orientation: portrait)" (竖屏)和 “(orientation: landscape)”(横屏)
返回一个MediaQueryList 对象
这是一个动态的对象,是当前状态的一个快照,随状态动态变更。
该对象接口的实质是指定输出设备中的页面可见区域高度大于或等于宽度,则为portrait,与css3媒体查询orientation效果一致。
可以在pc端和移动端使用。
使用添加事件监听的方式检测屏幕改变,有两种方式
window.matchMedia("(orientation: portrait)").addListener(cb); window.matchMedia("(orientation: portrait)").onchange = cb;
移除监听的方法
window.matchMedia("(orientation: portrait)").removeListener(cb);; window.matchMedia("(orientation: portrait)").onchange = null;
function is_horizontal(){ let cb = function(){console.log(window.matchMedia("(orientation: portrait)").matches ? "竖屏" : "横屏");}; let match_media_list = window.matchMedia("(orientation: portrait)"); match_media_list.addListener(cb); return cb(); }
原文地址:https://www.cnblogs.com/usebylgb/p/10894079.html
时间: 2024-11-25 17:27:00