ie11和edge瀏覽器下REM的bug

最近在做項目的時候,爲了進行響應式的操作,採用了現在出現的一個新的單位——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瀏覽器和其他瀏覽器的讀取順序有關。

歡迎大家相互學習交流

說明:轉載請聯繫作者並獲得作者授權,同時註明轉載的地址和作者

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章