最近在做項目的時候,爲了進行響應式的操作,採用了現在出現的一個新的單位——REM,在主流的瀏覽器都是沒什麼問題的。但是在ie出現了靈異的bug。
bug表述:加載頁面的時候,頁面的所有元素沒有按照對應獲取的js來計算出來的rem值來進行顯示。但是在鼠標懸浮在對應的元素時會自己動按照對應的計算值來顯示,從而就會出現閃爍的bug。
由於上述代碼還帶有 resize 函數,假如 body 元素沒有添加 font-size:100% 時。當窗口發生變化時總記錄上一次的的 font-size 大小。當調試時,就變得正常了。同樣需要清除緩存,退出瀏覽器才能繼續查看 bug。
添加 body 樣式後正常,估計是在 IE11 下獲取不了動態修改過的 html 的內聯樣式,body 一直默認瀏覽器 font-size:14px。所以字體變得很小。將 body{font-size:100%} 繼承父元素大小,就可以了。
body {
font-size:100%
}
但是按照rem的表述rem不是根據html font-size計算嗎?爲什麼還要設置body呢?這問題有待解決。
說明:字體大小單位rem創建了一個追大小,該字體大小是相當於在HTML或body元素中的已經聲明的基本字體大小而言的,如果未聲明基本字體大小,則是相對於內建字體大小的。
另外:在谷歌火狐內核的瀏覽器下,頁面被渲染之前根元素文字的默認大小被定義了2次。第一次是css定義。第二次是js計算。最後使用的字體大小是後者。但貌似在ie瀏覽器中,ie認的是前者。這可能與ie瀏覽器和其他瀏覽器的讀取順序有關。
歡迎大家相互學習交流
說明:轉載請聯繫作者並獲得作者授權,同時註明轉載的地址和作者