JavaScript---手機端--頁面自適應

來源:互聯網
上載者:User

標籤:

在公司新學了一種頁面自適應的方式:

//等比縮放!(function(doc, win) {    var timer,        docEle = doc.documentElement,//擷取body        evt = "onorientationchange" in window ? "orientationchange" : "resize",//擷取手機旋轉事件        setFontSize = function() {            var width = docEle.getBoundingClientRect().width;            width && (docEle.style.fontSize = 20 * (width / 320) + "px");        };    win.addEventListener(evt, function() {        clearTimeout(timer);        timer = setTimeout(setFontSize, 300);    }, false);    doc.addEventListener("DOMContentLoaded", setFontSize, false);//為了相容fireFox,在所有DOM載入完畢後會執行這個事件}(document, window));

仔細一看,一堆東西都不明白,因此做了一些搜查,現在羅列在下方:

1.document.documentElement(引用:http://www.cnblogs.com/scy251147/archive/2011/04/10/2011420.html)

document.body 和 document.documentElement 的區

     在設計頁面時可能經常會用到固定層的位置,這就需要擷取一些html對象的座標以更靈活的設定目標層的座標,這裡可能就會用到 document.body.scrollTop等屬性,但是此屬性在xhtml標準網頁或者更簡單的說是帶<!DOCTYPE ..>標籤的頁面裡得到的結果是0,如果不要此標籤則一切正常,那麼在xhtml頁面怎麼獲得body的座標呢,當然有辦法-使用 document.documentElement來取代document.body,可以這樣寫
例:
var top = document.documentElement.scrollTop || document.body.scrollTop;
 在javascript裡||是個好東西,除了能用在if等條件判斷裡,還能用在變數賦值上。那麼上例等同於下例。
例:
var top = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
這麼寫可以得到很好的相容性。

       相反,如果不做聲明的話,document.documentElement.scrollTop反而會顯示為0。

      順便再存一下這個圖吧,總是挺難記清楚:

  

2.onorientationchange(引用:http://zhidao.baidu.com/link?url=UhRfuvKnkaGAy-c9Neke_bwZ5hn_4s5MUQa5oP5irkcUKrmwS4CRzLMJ5kysZmPH7CMuOuiQvG4Q90nQZA-JPq)

擷取手機旋轉螢幕事件,根據我看的很多網上資料顯示,大部分手機瀏覽器都支援這個事件,如果不支援,可以使用原始的 resize

 

<script type="text/javascript">var evt = "onorientationchange" in window ? "orientationchange" : "resize";      window.addEventListener(evt, function() {    alert("旋轉螢幕");}, false);</script>

 3. width && (docEle.style.fontSize = 20 * (width / 320) + "px");

意思是:

if (width) {
  docEle.style......
}
也就是width != null 或者 undefined或者0

 

 ...後面補充

 

JavaScript---手機端--頁面自適應

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.