rem自適應布局的回顧總結

2021-09-08 11:56:50 字數 1819 閱讀 1883

使用rem實現自適應布局,應該算是當前移動前端的一大趨勢,有些人對此還有點迷惑,搞不懂rem是如何實現自適應布局,如何根據設計稿來調整rem的值?rem布局如何用雪碧背景?rem一定要載入js嗎?rem的根html font-size設定為多少合適?看看這篇文章,也許能幫到你。

目前有兩種,一種是根據js來調整html的字型大小,另一種則是通過**查詢來調整字型大小。

使用js

;(function(designwidth, maxwidth) ;

if (width > maxwidth)

//與**做法不同,直接採用簡單的rem換算方法1rem=100px

var rem = width * 100 / designwidth;

//相容uc開始

rootstyle="html';

rootitem = document.getelementbyid('rootsize') || document.createelement("style");

if(!document.getelementbyid('rootsize'))

if(rootitem.stylesheet)elsecatch(f)

} //相容uc結束

docel.style.fontsize = rem + "px";

}; refreshrem();

win.addeventlistener("resize", function() , false);

win.addeventlistener("pageshow", function(e)

}, false);

if (doc.readystate === "complete") else , false);

}})(640, 640);

專案主頁

上面**中的關鍵**是:

var width = docel.getboundingclientrect().width;

var rem = width * 100 / designwidth;

docel.style.fontsize = rem + "px";

使用**查詢

說到底,上面的js**不就是根據不同的裝置調整對應的html字型大小嘛,那麼我們根據實際的裝置,來加上相應的字型大小不就行了嗎?

我們知道html的預設字型大小是16px,則對應的裝置下可以通過設定對應的font-size使其有一致的縮放比例。

html 

@media only screen and (min-width: 481px)

}@media only screen and (min-width: 561px)

}@media only screen and (min-width: 641px)

body

}

上面的**則是通過1rem=20px來換算的,從**看出來呢?從最大的乙個值640出發,假如你的設計稿是750的話,那你還要設計更多的** 查詢,換算比例保持一致就可以了。那如果我想要換算比例為1rem=100呢?按照上面的規則,最大的值為:html:font- size:100/16*100%,其它的則按比例,比如480px,則為480/640*(100/16*100%)。

國內的很多人都提倡使用字型圖示或者用svg的方式來實現,但這些在小專案中明顯是有點不實際。我通常使用下面兩種方式。

第一種將背景切成乙個,然後換算成base64.的方式,或者使用sass的方式轉換,不過有弊端就是樣式檔案會增大,看個人衡量。

第二種則是通過背景的百分比精準定位,詳情見這篇文章:css3背景百分比及應用。

或者對於精準度不太高,其實使用rem定位也可以,就是要把相鄰隔開些。

rem自適應布局的回顧總結

使用rem實現自適應布局,應該算是當前移動前端的一大趨勢,有些人對此還有點迷惑,搞不懂rem是如何實現自適應布局,如何根據設計稿來調整rem的值?rem布局如何用雪碧背景?rem一定要載入js嗎?rem的根html font size設定為多少合適?看看這篇文章,也許能幫到你。目前有兩種,一種是根據...

Rem 自適應布局

1.先引入一下js,到頭部的script標籤的最前面。2.根據設計稿大小,調整裡面的最後兩個引數值。3.使用1 rem 100px轉換你的設計稿的畫素,例如設計稿上某個塊是100px 300px,換算成 rem則為1 rem 3rem。上面的 如果在 uc瀏覽器下橫屏與豎屏轉換,發現 並沒有 自適應...

自適應rem布局

自適應處理 假設 function doc,win if doc.addeventlistener return win.addeventlistener resizeevt,recalc,false doc.addeventlistener domcontentloaded recalc,fals...