1.先設置header裏面的meta標籤:javascript
1 <meta name="viewport" content="initial-scale=1,maximum-scale=1, minimum-scale=1">
2.在header寫上<script>標籤html
1 <script type="text/javascript"> 2 document.documentElement.style.fontSize = document.documentElement.clientWidth / 640*100 + 'px'; 3 </script>
問題:爲何要設置Html的font-size?前端
答:這裏是設置html標籤的font-size,上面概論紅色字寫的很清晰,頁面元素使用rem單位時,是相對於這個html標籤的font-size的大小爲基礎的。java
問題:爲何是clientWidth/640?爲何要乘以100?瀏覽器
答:iphone
1.是由於這裏是做爲一個基礎數值,換個方向去想,這裏先不乘以100以避免產生誤解。字體
例如:設計稿寬度是640px,有一個元素設計稿上的寬度是50px,設備物理寬度是320px,那麼咱們在頁面上應該設置寬度爲 width:50rem,至關於寬度是:50*(320/640)=25px;這裏能正確算出在320px的設備上恰好佔一半,其實能夠想象爲 rem=(320/640)。spa
2.通常瀏覽器的最小字體是12px,若是html的font-size=(320/640)px,至關於font-size=0.5px,那麼這個數值就小於12px,會形成一些計算的錯誤,和一些奇怪的問題,*100後,font-size是50px,就能夠解決這種字體小於12px的問題。設計
3. 爲了計算方便 咱們後面把比率乘以了100,(320/640)*100,那麼相對應這個元素在設置數值的時候就須要除以100了(50/100),這樣能夠保證最後出來的數值不變.code
設計稿是640px,有一個紅色盒子寬高都是320px,裏面的文字是32px,那麼下面是這個例子的代碼。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1, minimum-scale=1"> <script type="text/javascript"> document.documentElement.style.fontSize = document.documentElement.clientWidth / 640*100 + 'px'; </script> </head> <body style="margin: 0 ;padding: 0;font-size: 0.32rem"> <div style="width: 3.2rem;height: 3.2rem ;background: red"> <span>danny.xie</span> </div> </body> </html>
1.在iphone5下的狀況,設備的物理像素是320px
1.在iphone6下的狀況,設備的物理像素是375px
能夠看到字體的大小和紅色盒子的寬高跟設計稿上面的比例是保持一致的,這樣就是rem適配不一樣設備的的基本用法,如上文有錯誤,歡迎指出和討論,十分感謝。