亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Mobile Web開發基礎之四--處理手機設備的橫豎屏問題

2019-11-19 15:50:28
字體:
來源:轉載
供稿:網友

為了應對移動設備屏幕的碎片化,我們在開發Mobile Web應用時,一個最佳實踐就是采用流式布局,保證最大可能地利用有限的屏幕空間。由于屏幕存在著方向性,用戶在切換了屏幕的方向后,有些設計上或實現上的問題就會凸顯――我們至少需要處理一下當前顯示元素的寬度的適配(當然,要做的可能不僅僅是這個)。很多時候,我們需要為不同的屏幕方向來設計對應的應用顯示模式,這個時候,實時地獲知設備的模豎屏狀態就顯得極為重要。

  • window.orientation屬性與onorientationchange事件

window.orientation :這個屬性給出了當前設備的屏幕方向,0表示豎屏,正負90表示橫屏(向左與向右)模式
onorientationchange : 在每次屏幕方向在橫豎屏間切換后,就會觸發這個window事件,用法與傳統的事件類似 

1:使用onorientationchange事件的回調函數,來動態地為body標簽添加一個叫orient的屬性,同時以body[orient=landspace]或body[orient=portrait]的方式在css中定義對應的樣式,這樣就可以實現在不同的屏幕模式下顯示不同的樣式。如下代碼示例:

<!Doctype html> <html>  <head>  <meta charset="utf-8">  <meta id="viewport" name="viewport" content="width=device-width,initial-scale=1.0;">  <title>橫豎屏切換檢測</title>  <style type="text/css">   body[orient=landscape]{   background-color: #ff0000;   }    body[orient=portrait]{   background-color: #00ffff;   }  </style>  </head>  <body orient="landspace">  <div>   內容  </div>  <script type="text/javascript">   (function(){   if(window.orient==0){    document.body.setAttribute("orient","portrait");   }else{    document.body.setAttribute("orient","landscape");   }   })();   window.onorientationchange=function(){   var body=document.body;   var viewport=document.getElementById("viewport");   if(body.getAttribute("orient")=="landscape"){    body.setAttribute("orient","portrait");   }else{    body.setAttribute("orient","landscape");   }   };  </script>  </body> </html>

 2: 類似的思路,不通過CSS的屬性選擇器來實現,如下代碼的實現方案:

<!Doctype html> <html>  <head>  <meta charset="utf-8">  <meta id="viewport" name="viewport" content="width=device-width,initial-scale=1.0;">  <title>橫豎屏切換檢測</title>  <style type="text/css">   .landscape body {   background-color: #ff0000;   }    .portrait body {   background-color: #00ffff;   }  </style>  </head>  <body orient="landspace">  <div>   內容  </div>  <script type="text/javascript">   (function(){   var init=function(){    var updateOrientation=function(){    var orientation=window.orientation;    switch(orientation){     case 90:     case -90:     orientation="landscape";     break;     default:     orientation="portrait";     break;    }    document.body.parentNode.setAttribute("class",orientation);    };     window.addEventListener("orientationchange",updateOrientation,false);    updateOrientation();   };   window.addEventListener("DOMContentLoaded",init,false);   })();  </script>  </body> </html> 

 

  • 使用media query方式

    這是一種更為方便的方式,使用純CSS就實現了對應的功能,如下代碼演示:

<!Doctype html> <html>  <head>  <meta charset="utf-8">  <meta id="viewport" name="viewport" content="width=device-width,initial-scale=1.0;">  <title>橫豎屏切換檢測</title>  <style type="text/css">   @media all and (orientation : landscape) {   body {    background-color: #ff0000;   }   }    @media all and (orientation : portrait){   body {    background-color: #00ff00;   }   }  </style>  </head>  <body>  <div>   內容  </div>  </body> </html> 
 
  • 低版本瀏覽器的平穩降級

    如果目標移動瀏覽器不支持media query,同時window.orientation也不存在,則我們需要采用另外一種方式來實現――――使用定時器“偽實時”地對比當前窗口的高(window.innerHeight)與寬(window.innerWidth)之比,從而判定當前的橫豎屏狀態。如下代碼所示:

<!Doctype html> <html>  <head>  <meta charset="utf-8">  <meta id="viewport" name="viewport" content="width=device-width,initial-scale=1.0;">  <title>按鍵</title>  <style type="text/css">   .landscape body {   background-color: #ff0000;   }    .portrait body {   background-color: #00ffff;   }  </style>  <script type="text/javascript">   (function(){   var updateOrientation=function(){    var orientation=(window.innerWidth > window.innerHeight)? "landscape" : "portrait";    document.body.parentNode.setAttribute("class",orientation);   };    var init=function(){    updateOrientation();    window.setInterval(updateOrientation,5000);   };   window.addEventListener("DOMContentLoaded",init,false);   })();  </script>  </head>  <body>  <div>   內容  </div>  </body> </html> 
  •  統一解決方案

    將以上的兩種解決方案整合在一起,就可以實現一個跨瀏覽器的解決方案,如下代碼:

<!Doctype html> <html>  <head>  <meta charset="utf-8">  <meta id="viewport" name="viewport" content="width=device-width,initial-scale=1.0;">  <title>橫豎屏切換檢測</title>  <style type="text/css">   .landscape body {   background-color: #ff0000;   }    .portrait body {   background-color: #00ffff;   }  </style>  <script type="text/javascript">   (function(){   var supportOrientation=(typeof window.orientation == "number" && typeof window.onorientationchange == "object");    var updateOrientation=function(){    if(supportOrientation){    updateOrientation=function(){     var orientation=window.orientation;     switch(orientation){     case 90:     case -90:      orientation="landscape";      break;     default:      orientation="portrait";     }     document.body.parentNode.setAttribute("class",orientation);    };    }else{    updateOrientation=function(){     var orientation=(window.innerWidth > window.innerHeight)? "landscape":"portrait";     document.body.parentNode.setAttribute("class",orientation);    };    }    updateOrientation();   };    var init=function(){    updateOrientation();    if(supportOrientation){    window.addEventListener("orientationchange",updateOrientation,false);    }else{    window.setInterval(updateOrientation,5000);    }   };   window.addEventListener("DOMContentLoaded",init,false);   })();  </script>  </head>  <body>  <div>   內容  </div>  </body> </html> 

原英文網址:http://davidbcalhoun.com/2010/dealing-with-device-orientation

以上所述是小編給大家介紹的Mobile Web開發基礎之四--處理手機設備的橫豎屏問題,希望對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人性生交xxxxx网站| www国产精品视频| 久久成人人人人精品欧| 成人久久一区二区| 国产视频亚洲视频| 国产精品久久久久久久久男| 精品成人久久av| 久久精品一区中文字幕| 国产精品视频区1| 日韩电影免费在线观看中文字幕| 亚洲精品天天看| 亚洲影影院av| 欧美人与物videos| 亚洲视频在线观看网站| 色综合老司机第九色激情| 91九色在线视频| 欧美另类精品xxxx孕妇| 久久伊人免费视频| 国产福利精品在线| 亚洲天堂av在线免费观看| www.日韩不卡电影av| 国产精品女主播视频| 国产在线观看91精品一区| 欧美专区中文字幕| 91精品久久久久久久| 成人久久久久久| 日韩欧美综合在线视频| 亚洲精品福利免费在线观看| 色悠久久久久综合先锋影音下载| 久久久国产精品视频| 尤物九九久久国产精品的分类| 国产精品嫩草影院一区二区| 亚洲国产成人精品久久久国产成人一区| 欧美黑人视频一区| 久久久久久网站| 国产69久久精品成人| 成人国内精品久久久久一区| 欧美性猛交xxxx偷拍洗澡| 欧美性猛交xxxx黑人猛交| 亚洲欧美日韩中文视频| 欧美尤物巨大精品爽| 国产精品青青在线观看爽香蕉| 8090理伦午夜在线电影| 久久91精品国产| 成人网欧美在线视频| 日韩av网站在线| 久久久91精品国产| 亚洲毛片一区二区| 日韩有码在线视频| 亚洲综合色激情五月| 国产精品亚洲视频在线观看| 国产精品影院在线观看| 中文字幕国产亚洲| 国产成人鲁鲁免费视频a| 国内精品在线一区| 国产亚洲人成网站在线观看| 亚洲精品一区二三区不卡| 九九久久精品一区| 久久亚洲一区二区三区四区五区高| 欧美视频中文在线看| 2018中文字幕一区二区三区| 欧美成人免费在线视频| 欧美丝袜一区二区| 亚洲国产精品悠悠久久琪琪| 欧美在线中文字幕| 色妞色视频一区二区三区四区| 欧美午夜激情小视频| 久久久久久久亚洲精品| 国产精品久久久久久久av电影| 亚洲国产小视频在线观看| 一本一道久久a久久精品逆3p| 国产亚洲一级高清| 欧美激情精品久久久久久久变态| 亚洲第一精品久久忘忧草社区| 日韩hd视频在线观看| 久久九九国产精品怡红院| 5566成人精品视频免费| 亚洲综合自拍一区| 91在线播放国产| 国产91色在线|| 38少妇精品导航| 性金发美女69hd大尺寸| 亚洲成年人在线| 91日韩在线播放| 亚洲视频欧洲视频| 久久综合88中文色鬼| 亚洲最大福利视频网站| 96pao国产成视频永久免费| 国产精品久久一区| 精品久久久久久国产91| 91九色单男在线观看| 韩国日本不卡在线| 亚洲成人网在线观看| 亚洲福利在线看| 色婷婷综合久久久久| 久久人人爽国产| 亚洲精品中文字幕有码专区| 欧美日产国产成人免费图片| 伊人一区二区三区久久精品| 国产综合福利在线| 国产精品免费电影| 92版电视剧仙鹤神针在线观看| 国产精品福利无圣光在线一区| 亚洲精品成人久久久| 亚洲精品欧美日韩| 欧美精品在线极品| 久久青草福利网站| 亚洲第一网站免费视频| 欧洲亚洲免费视频| 日本精品视频网站| 成人黄色片在线| 色综合久久中文字幕综合网小说| 亚洲国产精品电影在线观看| 日韩欧美在线播放| 亚洲女人被黑人巨大进入al| 日韩欧美亚洲一二三区| 色哟哟网站入口亚洲精品| 国产成人亚洲综合青青| 亚洲在线视频福利| 亚洲欧美一区二区三区情侣bbw| 国产日韩在线免费| 亚洲欧洲在线免费| 中文欧美日本在线资源| 国产精品一区专区欧美日韩| 久久视频免费在线播放| 国产欧美va欧美va香蕉在线| 国产精品极品在线| 欧美日韩裸体免费视频| 亚洲精选中文字幕| 国产亚洲aⅴaaaaaa毛片| 日韩免费看的电影电视剧大全| 一区二区三区天堂av| 亚洲成人中文字幕| 日韩精品免费在线观看| 这里只有精品久久| 亚洲精品国产精品国产自| 欧美在线免费看| 51午夜精品视频| 中文字幕在线看视频国产欧美在线看完整| 日韩av影院在线观看| 国产91精品高潮白浆喷水| 久久精品亚洲精品| 国产精品成人一区二区三区吃奶| 欧美裸体视频网站| 欲色天天网综合久久| 日韩av观看网址| 日韩hd视频在线观看| 日韩精品免费综合视频在线播放| 欧美在线观看日本一区| 亚洲一区二区自拍| 中文字幕免费精品一区| 亚洲自拍欧美另类| 国产精品综合久久久| 少妇精69xxtheporn| 国产精品678| 久久久免费精品视频| 丝袜美腿精品国产二区| 2024亚洲男人天堂| 国产热re99久久6国产精品| 欧美日韩中文在线观看| 日本久久中文字幕| 91影院在线免费观看视频| 欧美一区二区三区免费观看| 欧美性视频在线|