浏览器的标准模式与怪异模式
在W3C标准出台以前,浏览器在对页面的渲染上没有统一规范,产生了差异;由于W3C标准的推出,浏览器渲染页面有了统一的标准,这就是二者最简单的区别。
为保持浏览器渲染的兼容性,使以前的页面能够正常浏览,浏览器都保留了旧的渲染方法。这样浏览器渲染上就产生了Quircks mode和Standards mode,两种渲染方法共存在一个浏览器上。
那么浏览器究竟该采用哪种模式渲染呢?这就引出的DTD,既是网页的头部声明,浏览器会通过识别DTD而采用相对应的渲染模式.浏览器要使老旧的网页正常工作,但这部分网页是没有doctype声明的,所以浏览器对没有doctype声明的网页采用quirks mode解析。
Em&Rem
Em和rem单位之间的区别是浏览器根据谁来转化成px值, 理解这种差异是决定何时使用哪个单元的关键。
当使用rem单位,像素大小取决于页根元素字体的大小,即html元素的字体大小。根元素字体大小乘以rem值。根html元素将继承浏览器中设置的字体大小,除非显式设置固定值去覆盖。没有设置HTML字体大小时,浏览器设置起作用。
当使用em单位时,像素值是将em值乘以使用em单位的元素的字体大小。当em单位设置在html元素上时,它将转换为em值乘以浏览器字体大小的设置。
** 重点理解 ** :
有一个比较普遍的误解,认为em单位是相对于父元素的字体大小。事实上,根据W3标准,它们是相对于使用em单位的元素的字体大小。
父元素的字体大小可以影响em值,但这种情况的发生,纯粹是因为继承。
如果您确实需要更改html元素的字体大小,那么就使用em,rem单位。
应用
- em
根据某个元素的字体大小做缩放而不是根元素的字体大小。一般来说,你需要使用em单位的唯一原因是缩放没有默认字体大小的元素。 - rem
不需要em单位,并且根据浏览器的字体大小设置缩放的任何尺寸。简单地说,一切可扩展都应该使用rem单位。
始终使用 rem 单位做媒体查询
不要在多列布局中使用em或rem-改用 %。
本文整理自:
When to Use Em vs. Rem