移動端自適應佈局之道及解決方案

移動端佈局基礎

    最近iphone7一下出了兩款尺寸的手機,致使的移動端的屏幕種類更加的混亂,設計圖以前以320*2爲設計基準,如今通常以375*2爲設計基準。javascript

    另外各類品牌的android機混亂了市場,加上最近新出的win系統。css

解決之道

    固定寬度作法

        A:直接在header裏寫死<meta name="viewport" conent="width=375,user-scalable=no">,頁面單位直接以px爲基準html

        優勢:開發方便,設計圖用ps量下直接就能夠寫上去單位html5

        缺點:太多了,例如在小寬度手機上出現橫向滾動屏,大手機上出現白邊,1px像素處理等等java

    響應式佈局

        A:用媒體查詢語句在320,375爲界限處進行適配處理android

            寫法:@media only screen and (min-width: 750px) and (max-width: 640px) {
                            ...
                    }
                    @media  and  screen(max-width: 640px) {
                                    ....
                    }
                    @media and screen(min-width: 750px){
                            ...
                     }less

            優勢:頁面處理稍微更精細些iphone

            缺點:最多的缺點就是css查詢語句寫的比較多,且開發速度較慢佈局

   rem方案

        本人使用過兩種方式,都還不錯字體

        1.腳本動態計算

html {font-size: 50px;}
/* javascript */

!(function(win, doc){
    function setFontSize() {
        // 獲取window 寬度
        // zepto實現 $(window).width()就是這麼幹的
        var winWidth =  window.innerWidth;
        // doc.documentElement.style.fontSize = (winWidth / 640) * 100 + 'px' ;
        
        // 2016-01-13 訂正
        // 640寬度以上進行限制 須要css進行配合
        var size = (winWidth / 640) * 100;
        doc.documentElement.style.fontSize = (size < 100 ? size : 100) + 'px' ;
    }
 
    var evt = 'onorientationchange' in win ? 'orientationchange' : 'resize';
    
    var timer = null;
 
    win.addEventListener(evt, function () {
        clearTimeout(timer);
 
        timer = setTimeout(setFontSize, 300);
    }, false);
    
    win.addEventListener("pageshow", function(e) {
        if (e.persisted) {
            clearTimeout(timer);
 
            timer = setTimeout(setFontSize, 300);
        }
    }, false);
 
    // 初始化
    setFontSize();
 
}(window, document));

            2.用現成的flexible.js的解決方案,較推薦,畢竟是淘寶大廠的,能夠參考大漠的文章

                flexible.js: http://www.w3cplus.com/mobile/lib-flexible-for-html5-layout.html,另外就是使用的時候看狀況須要改下js代碼裏的配置項,咱們是以750爲設計基準的,摺合最大7.5rem,有相同的只需改

這裏,另外,須要注意的是字體大小建議使用px的方式,用less/scss中的mixin進行處理。

    優勢:太多

    缺點:暫未發現

強大的單位——vw

html {
    font-size: 31.25vw; /* 表達式:100*100vw/320 */
}

    兼容性問題比較大,沒用過,沒太多的發言權

總結:建議使用rem的解決方案,具體哪種視狀況而定。

相關文章
相關標籤/搜索