HTML/CSS

CSS3判断横屏竖屏方式(三种)

面包多

很多时候,为了让手机版横竖屏时有一个理想的效果,我们都需要通过判断区间来设定相应的 css 样式,现在的 CSS3 推出了一个可以判断手机横竖屏的媒体查询。在做移动端页面的时候经常会遇到需要判断横屏还是竖屏,下面将目前已知的通过 HTML,CSS,JS 三种判断方法记录下来,方便以后翻阅。
1、通过在 html 中分别引用横屏和竖屏的样式:

  1. <link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css" rel="external nofollow" > //引用竖屏的CSS
  2. <link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css" rel="external nofollow" > //引用横屏的CSS
也想出现在这里?联系我们
创客主机

2、CSS 中通过媒体查询的方法来判断:

  1. @media (orientation: portrait ){
  2.  //竖屏CSS 
  3. }
  4. @media ( orientation: landscape ){
  5.  //横屏CSS 
  6. }

3、js 判断是否为横屏竖屏:

  1. window.addEventListener("onorientationchange" in window ? "orientationchange" : "resize", function() {
  2.   if (window.orientation === 180 || window.orientation === 0) { 
  3.    alert('竖屏状态!');
  4.   } 
  5.   if (window.orientation === 90 || window.orientation === -90 ){ 
  6.    alert('横屏状态!');
  7.   } 
  8.  }, false);

只要用户改变了设备的查看模式,就会触发 onorientationchange 事件。

orientation 有 4 个值:0,90,-90,180

值为 0 和 180 的时候为竖屏(180 为倒过来的竖屏);

90 和-90 时为横屏(-90 为倒过来的竖屏模式);
在 ipad、iphone 网页开发中,我们很可能需要判断是横屏或者竖屏。Android 和 IOS 刚好相反,下面介绍如何用 jQuery 判断 iPad、iPhone、Android 是横屏还是竖屏的方法

  1. function orient() {
  2. if (window.orientation == 90 || window.orientation == -90) {
  3. //ipad、iphone竖屏;Andriod横屏
  4. $("body").attr("class", "landscape");
  5. orientation = 'landscape';
  6. return false;
  7. }
  8. else if (window.orientation == 0 || window.orientation == 180) {
  9. //ipad、iphone横屏;Andriod竖屏
  10. $("body").attr("class", "portrait");
  11. orientation = 'portrait';
  12. return false;
  13. }
  14. }
  15. //页面加载时调用
  16. $(function(){
  17. orient();
  18. });
  19. //用户变化屏幕方向时调用
  20. $(window).bind( 'orientationchange', function(e){
  21. orient();
  22. });

屏幕方向对应的 window.orientation 值:

ipad: 90 或 -90 横屏

ipad: 0 或 180 竖屏

Andriod:0 或 180 横屏

Andriod: 90 或 -90 竖屏

(1)

本文由 创客云 作者:PetitQ 发表,转载请注明来源!

阿里云

热评文章

发表评论

精彩推荐

Supro - 极简电商WordPress汉化主题

钻石珠宝奢侈品DedeCMS织梦模板

本站承接 WordPress / DedeCMS / ThinkPHP 等
系统建站、仿站、开发、定制等业务!

Hi, 如果您有主题插件代购(30-600元)汉化等建站相关业务,可以 跟我联系 哦!
欢迎投稿
嘿,欢迎咨询!