h5移動端適配方案

來源:互聯網
上載者:User

標籤:func   ret   eve   log   data-   body   屬性   isp   建議   

 

flex布局

flex布局,不使用rem,直接使用px。

<!DOCTYPE html><html><head>    <title></title>    <style>/*利用flex屬性,可以實現區塊層級元素1:1:1*//*簡單的就能使裡面的內容置中(尤其是垂直置中,好用到爆)*/.box{    display: flex;width: 50px;height: 30px;    /*預設 row*/    flex-direction:colum;}.item1{    display: flex;flex:1;    background-color: rgba(213,34,102);    /*justify-content: space-between;*/    justify-content: center;}.item2{    display: flex;flex:1;    background-color: rgba(34,213,102);    align-items:center;    /*    display: block;    line-height: 10px;    height: 10px;*/}.item3{    display: flex;flex:1;    background-color: rgba(102,213,34);    /*垂直置中*/    justify-content: center;    align-items:center;}    </style>}}</head><body><div class="box">    <div class="item1"></div>    <div class="item2"></div>    <div class="item3"></div></div></body></html>
View Code

rem方案

說明:

螢幕根據設計稿的比例轉換對應的rem值(JS會根據不同的裝置添加不同的縮放比(建議內聯處理,在所有資源載入之前執行這個JS))

螢幕根據設計稿的比例轉換對應的rem值,比如:

  750的設定 = 16*(clientWidth/375)

  640的設定 = 20*(clientWidth/320)

  320的設定 = 10*(clientWidth/320)

  例如:設計稿是750px寬度(基於iphone6 375*2=750 得到的設計稿),如果設計稿中量出某塊地區的margin-top值20px,

     在實際iphone6裝置375px寬度中,應該除以2,所以得到值mragin-top是20/2=10px,

     因為1rem=16px(16*(iphone6裝置寬度/375)+‘px‘),所以對應換算成rem為10/16=0.625rem。

     css代碼中就是margin-top:0.625rem。

var aa = function(doc, win){    var el = doc.documentElement,//html    console.log(el);    // orientationchange 事件是在使用者水平或者垂直翻轉裝置(即方向發生變化)時觸發的事件。    resizeEvt =(‘orientationchange‘ in win )?‘orientationchange‘:‘resize‘,    recalc = function(){        var clientWidth = el.clientWidth;//clientWidth: 擷取對象可見內容的寬度,不包括捲軸,不包括邊框;        if(!clientWidth){return;}        el.style.fontSize = 16*(clientWidth/375)+‘px‘;    }    if(!doc.addEventListener){return;}    // addEventListener事件方法接受三個參數:第一個是事件名稱比如點擊事件onclick,    // 第二個是要執行的函數,第三個是布爾值    win.addEventListener(resizeEvt,recalc,false);    // 綁定瀏覽器縮放與載入時間    win.addEventListener(‘DOMContentLoaded‘,recalc,false);}(function(doc, win){    var el = doc.documentElement,//html    console.log(el);    // orientationchange 事件是在使用者水平或者垂直翻轉裝置(即方向發生變化)時觸發的事件。    resizeEvt =(‘orientationchange‘ in win )?‘orientationchange‘:‘resize‘,    recalc = function(){        var clientWidth = el.clientWidth;//clientWidth: 擷取對象可見內容的寬度,不包括捲軸,不包括邊框;        if(!clientWidth){return;}        el.style.fontSize = 16*(clientWidth/375)+‘px‘;    }    if(!doc.addEventListener){return;}    // addEventListener事件方法接受三個參數:第一個是事件名稱比如點擊事件onclick,    // 第二個是要執行的函數,第三個是布爾值    win.addEventListener(resizeEvt,recalc,false);    // 綁定瀏覽器縮放與載入時間    win.addEventListener(‘DOMContentLoaded‘,recalc,false);})(document, windo
// 移動端H5終端適配方案var aa = function(doc, win){    var el = doc.documentElement,//html        // orientationchange 事件是在使用者水平或者垂直翻轉裝置(即方向發生變化)時觸發的事件。    resizeEvt =(‘orientationchange‘ in win )?‘orientationchange‘:‘resize‘,    recalc = function(){        var clientWidth = el.clientWidth;//clientWidth: 擷取對象可見內容的寬度,不包括捲軸,不包括邊框;        if(!clientWidth){return;}        el.style.fontSize = 16*(clientWidth/375)+‘px‘;    }    // console.log(el);    if(!doc.addEventListener){return;}    // addEventListener事件方法接受三個參數:第一個是事件名稱比如點擊事件onclick,    // 第二個是要執行的函數,第三個是布爾值    win.addEventListener(resizeEvt,recalc,false);    // 綁定瀏覽器縮放與載入時間    win.addEventListener(‘DOMContentLoaded‘,recalc,false);}(function(doc, win){    var el = doc.documentElement,//html    // orientationchange 事件是在使用者水平或者垂直翻轉裝置(即方向發生變化)時觸發的事件。    resizeEvt =(‘orientationchange‘ in win )?‘orientationchange‘:‘resize‘,    recalc = function(){        var clientWidth = el.clientWidth;//clientWidth: 擷取對象可見內容的寬度,不包括捲軸,不包括邊框;        if(!clientWidth){return;}        el.style.fontSize = 16*(clientWidth/375)+‘px‘;    }    // console.log(el);    if(!doc.addEventListener){return;}    // addEventListener事件方法接受三個參數:第一個是事件名稱比如點擊事件onclick,    // 第二個是要執行的函數,第三個是布爾值    win.addEventListener(resizeEvt,recalc,false);    // 綁定瀏覽器縮放與載入時間    win.addEventListener(‘DOMContentLoaded‘,recalc,false);})(document, window);
View Code

 

rem方案二

引入flexible.js,不需要在html結構中加入viewport標籤。
 flexible.js會在<html>元素上增加一個data-dpr屬性,以及一個font-size樣式。JS會根據不同的裝置添加不同的data-dpr值,
 比如說2或者3同時會給html加上對應的font-size的值,
 比如說75px;以及會添加viewport標籤,JS會根據不同的裝置添加不同的縮放比(建議內聯處理,在所有資源載入之前執行這個JS)

h5移動端適配方案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.