探究為何rem在chrome瀏覽器上計算出錯


最近在一個項目中,測試同學提了一個bug,說手機上有個頁面的某些字體顯示偏大。就像這樣

我用chrome瀏覽器在pc上測試了一下,發現pc上也有這個問題,但是用其它瀏覽器打開這個頁面就沒有發現這個問題。

於是,上網百度了一下,發現原來是chrome瀏覽器的問題。

通過各種百度Google然后我總結了一下這個問題產生的原因:

chrome瀏覽器目前支持的最小的字體大小為12px,而我在html根元素上設置font-size:62.5%,計算之后就是10px,1rem=10px。

由於我頁面字體大小都是按照10px的基數去算的,所以當chrome瀏覽器計算字體大小時就出現了出錯。

解決方案:

又經過一番百度Google之后,總結了一下這種問題的解決方法。

網上提供的兩種最多的解決方案就是

1、js方法

<script type="text/javascript">
document.body.style.fontSize = '1.6rem';
</script>

具體的字號根據你的項目來決定

2、css方法

 

<style>
body {
font-size: 1.6rem;
}
</style>

 

將這個樣式插入到head標簽里面

這兩種方式我都試用了,但是並沒有效果,我也不清楚是怎么回事,如果有大神知道,還望不吝賜教。

所以,目前我認為最根本的解決方法就是,將html根元素的font-size大小設置為大於等於12px。

 

一些疑惑:

1、當1rem小於12px時,chrome是怎么計算的。

 

如上圖所示,我的html根元素的font-size設置為62.5%(10px),圖中字體計算的時候並不是25px,而是28.5941px,這個數是怎么來的,如果按照最小12px來算應該是30px才對啊。

 

2、為啥有的字體計算正確,有的出錯。

如上圖所示,同樣設置為2.5rem的字體,有的能正確計算出是25px,有的卻不行,這是怎么回事呢?

 

希望了解其中緣由的人能不吝賜教。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM