检查手机端的屏幕是横向还是纵向

发布于 2018-02-20 21:09:01 字数 2479 浏览 4046 评论 0

手机端的网页可能会存在横向或者纵向,PC 的网页则没有这些区别,也没有相关的 API 去检查这个属性,普通的网页纵向的浏览方式是最好的,可能有一些特别的应用适合横向的屏幕浏览,比如说小游戏、视频等,我们可以检查这个属性,提醒用户以舒适的方式浏览我们的网页。

orientationChange

orientationChange 事件是在用户水平或者垂直翻转设备(即方向发生变化)时触发的事件。

// Listen for orientation changes
window.addEventListener("orientationchange", function() {
    // Announce the new orientation number
    alert(window.orientation);
}, false);
// jQuery 写法
$(window).on("orientationchange",function(){
    alert("方向已改变!");
});

如果用户改变屏幕的方向,window.orientation 的值会发生变化,-90 意味着该设备横向旋转到右侧,而 90 表示该设备是横向旋转到左边。

Resize

有些设备并没有提供 orientationchange 事件,但是会触发窗口的 resize 事件:

// Listen for resize changes
window.addEventListener("resize", function() {
    // Get screen size (inner/outerWidth, inner/outerHeight)

}, false);

可能没有 orientationchange 事件那么好用,但是这不失为一种有效的解决方法,只是无法检查用户旋转的方向。

直接比较屏幕的长宽比

手机的屏幕肯定是矩形的,这意味着有一边长一点,有一边要短一点,使用长度除以宽度,如果值是大于 1 的,那么就表明用户是竖着屏幕的,反之亦然。

if(window.screen.availHeight/window.screen.availWidth > 1){
    // 纵向屏幕
}else{
    // 横向屏幕
}

结合上面的 resize 方法,就能检测用户旋转屏幕的方向了。

媒体查询

我们还可以通过 CSS 的媒体查询确定屏幕的方向:

/* portrait */
@media screen and (orientation:portrait) {
    /* portrait-specific styles */
}
/* landscape */
@media screen and (orientation:landscape) {
    /* landscape-specific styles */
}

matchMedia

进一步的通过 JS 的媒体查询,也能确定屏幕的方向:

// Find matches
var mql = window.matchMedia("(orientation: portrait)");
// If there are matches, we're in portrait
if(mql.matches) { 
 // Portrait orientation
} else { 
 // Landscape orientation
}
// Add a media query change listener
mql.addListener(function(m) {
 if(m.matches) {
 // Changed to portrait
 }
 else {
 // Changed to landscape
 }
});

上面这么多的方法,总有一个适合你的项目,如果你有更好的解决方法,请留言告诉我。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

qq_aHcEbj

文章 0 评论 0

寄与心

文章 0 评论 0

13545243122

文章 0 评论 0

流星番茄

文章 0 评论 0

春庭雪

文章 0 评论 0

潮男不是我

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文