CSS3为font-size定义了一个名为rem的新长度单位.这允许我们计算元素的font-size与根元素(html元素)的关系.
为了更容易地计算字体大小,我们通常假设根元素的font-size是16px,因此CSS通常会这样结束:
html { font-size:62.5%; } // 10px = 16px * 0.625
因此,例如,每个具有rem的元素高度相对于10px
p{ font-size : 1.4rem ;} // 14px = 10px * 1.4
我无法找到为什么我们假设我们可以乘以16px?我们如何相信每个浏览器都具有相同的16px基值?是否有关于预定义16px的标准描述?
参考
> MDN font-size
> W3C rem
> CanIUse about rem
> Github skeleton.css
解决方法
基本字体大小由浏览器中用户预定义的首选项确定.
几乎在每个浏览器中,16px都是比例字体的标准.这也可以根据字体是否使用衬线或是固定宽度字体而改变.
在大多数项目中,我通常将html元素预设为使用px值而不是%或em / rem值,以确保所有浏览器,屏幕和设备具有相同的字体大小并且页面上的元素保持相同大小和比例.
请记住,使用em使用父字体大小并与其成比例,而rem使用根html元素
例如:
html { font-size: 16px; } h1 { font-size: 2em; // 32px } p { font-size: 1em; // 16px } .someClass { font-size: .75em; // 12px } .someClass p { font-size: 2em; // 24px } .someClass p .test { font-size: 1.25rem; // 20px }
<html> <h1>2em Title Text</h1> <p>Normal Element Text</p> <div class="someClass"> someClass font size <p>SomeClass with em</p> <p><span class="test">someClass p element with class test</span> </p> </div> </html>