1. 程式人生 > >em和rem的理解

em和rem的理解

之前對於這個內容有點模糊,現在總結一下。

em是根據父類的大小調整,根據程式碼舉例說明

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		body{
			font-size: 100%;
		}
		#parent{
			font-size: 1.1em;
		}
		#child{
			font-size: 2em;
		}
		#div2{
			font-size: 2em;
		}
	</style>
</head>
<body>
	<div id="parent">
		parent
		<div id="child">child</div>
	</div>
	<div id="div2">div2</div>
</body>
</html>
我們設定body的字型為100%,也就是預設字型16px
parent的字型大小為1.1em,也就是預設字型的1.1倍大小

div2的字型大小為2em,也就是預設字型的2倍大小

對於child的字型大小,當然不是預設字型的2倍大小。因為em只是根據自己的父類調整,並不是祖先類。所以child的字型大小為父類的兩倍,也就是2.2em。也就是預設字型的2.2倍大小。效果圖如下:


由於em根據父類的特徵,許多程式開發人員覺得很麻煩,所以就引入了rem。rem是始終相對於body。也就是寫2rem,不管父類是多少,都是預設字型的兩倍大小。 既然rem怎麼好,按照道理em應該被淘汰了啊,可是為什麼仍然存在呢?主要原因是因為曾經的ie7和ie8不支援rem。不過現在可以大膽的使用rem了,再也不用擔心父類的字型大小是多少了。 其實當時為了解決ie不支援的問題,有大神也寫過一些指令碼,只是不願意為了這麼一點問題,讓頁面多載入一個指令碼