H5常用代碼:適配方案4


前面有分享了4種適配方案,但始終是通過手動縮放或者視口縮放來實現,用來做一些專題頁,或者功能相對簡單的項目來說也是完全能應付的,但整體來說感覺還是一種縮放,說不上是真正的適配,言外之意就是即將分享真正的適配嘍,呵呵,開個玩笑,其實適配方式千差萬種,怎么用全靠自己把握,遇到問題總有解決方法,兵來將擋水來土掩,實在解決不了的就想辦法繞過,哈哈。

前面說了那么多廢話,開始干正事,適配方案4主要是通過CSS3新增的一個長度單位REM來實現的,約定如下,頁面中的1rem就是當前html的字體大小,假如當HTML的字體大小設為100px,那些時頁面上的1rem=100PX,假設頁面上的640PX的元素用REM表示就是6.4rem.

適配代碼如下:

<!DOCTYPE html>
<html>
<head>
<title>主結構&適配方案4</title>   
<meta charset="utf-8">
<meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="black" name="apple-mobile-web-app-status-bar-style">
<meta content="telephone=no" name="format-detection">
<meta content="email=no" name="format-detection">

<!--適配主邏輯 S-->
<script type="text/javascript">
    //適配函數
    function reset(){
        var htmlo=document.getElementsByTagName('html')[0],
            clientW=document.documentElement.clientWidth || document.body.clientWidth,
            fontSz=clientW/16+'px';
        htmlo.style.fontSize=fontSz;
    }
    //初始進來執行一次適配
    reset();
    //當屏幕旋轉的時候,再次執行一次適配,這里延時100ms是為了解決當用戶快速轉換屏幕的時候,適配失敗的問題
    window.addEventListener('resize',function(){
        setTimeout(function(){reset();},100);
    },false)
</script>
<!--適配主邏輯 E-->
<style>
    body{
        margin:0;
        background:#000;
    }
    h3,p,ul{
        margin:0;
        padding:0;
    }
    .wrap{
         width:100%;
        -webkit-box-sizing: border-box;
        box-sizing: border-box;
        padding:0 0.5rem;
        background:#ccc;
        overflow:hidden;
        line-height:0.9rem;
        font-size:0.55rem;
    }
    .aside_left,.aside_right{
        width:7.5rem;
        height:4rem;
        float:left;
        color:white;
        line-height:4rem;
        font-size:0.65rem;
        text-align:center;
    }
    .aside_con{
        width:15rem;
        height:4rem;
        overflow:hidden;
        background:blue;
        color:white;
        line-height:2rem;
        font-size:0.75rem;
        text-align:center;
    }
    .aside_left{
        background:red;
    }
    .aside_right{
        background:green;
    }
    h3{
        font-size:0.7rem;
        line-height:1rem;
    }
     ul{
        overflow:hidden;
        padding-left:1rem;
        border:1px solid #000;
    }
</style>
</head>
<body>
    <div id="wrap" class="wrap">

        <!--示范結構 S-->
        <div class="aside_con">
            <div class="aside_left">示范塊內容0</div>
            <div class="aside_right">示范塊內容1</div>
        </div>
        <div class="aside_con">整條示范內容2</div>
        <!--示范結構 E-->
        

    </div>
</body>
</html>

適配說明:

1:前面有提到1rem等於HTML的字體大小,那現在最關鍵的就是怎么根據不同屏幕尺寸修改HTML的字體大小,主要是通過根據屏幕的可視區寬度設置html節點的字體大小。例如你的設計稿是640px,我們就想像在可視區是640PX的時候,那除以16則HTML節點的字號就是40px,那要表現設計上的尺寸是320PX的元素,在寫樣式的時候就寫320/40即8rem即可。

可能會問為什么這里要除以16,是因為為了計算出一個合適的HTML字體大小,你完全可以除以其它值,或者直接不除,直接拿可視區寬度作為上HTML字體大小也是可以的,但是在布局計算元素尺寸的時候又是另一場惡夢。


2:此種方案是開發HTML5項目很理想的適配方案,特別是公司的wap端項目或者wepAPP,此種適配有一個問題就是很難實現1px的東東,如果手機的像素比是2,那1px的邊框會顯示成2像素,只會影響這些小細節,不會影響功能使用,要想做出近1PX的東東,可以通過偽類:after :before來插入元素再縮小1部就可以模擬出近似1px的東東,如果想完美實現1px,適配方案5會是你需要的。

 

以上代碼歸屬於我的github常用H5代碼整理項目(詳見其中adaptationMode/mode4/index.html):https://github.com/xw5/mobile-code/

歡迎clone,歡迎star,一起學習,一起進步


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM