px 为单位:
px 实际上就是像素,用PX设置字体大小时,比较稳定和精确。但是这种方法存在一个问题,当用户在浏览器中浏览我们制作的Web页面时,如果改变了浏览器的缩放,这时会使用我们的Web页面布局被打破。这样对于那些关心自己网站可用性的用户来说,就是一个大问题了。因此,这时就提出了使用“em”来定义Web页面的字体。
em 为单位:
em 就是根据基准来缩放字体的大小。em 实质是一个相对值,而非具体的数值。这种技术需要一个参考点,一般都是以<body>的“font-size”为基准。如WordPress官方主题Twenntytwelve的基准就是14px=1em。
另外,em是相对于父元素的属性而计算的,如果想计算 px 和 em 之间的换算。
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
<title>em 的演示</title>
<style>
body {
font-size: 62.5%;/*10 ÷ 16 × 100% = 62.5%*/
}
h1 {
font-size: 2.0em; /*2.0em × 10 = 20px */ font-weight:normal;
}
p {
font-size: 1.6em; /*1.6em × 10 = 16px */
}
li {
font-size: 1.6em; /*1.6 × ? = 16px ? */
}
</style>
</head>
<body>
<h1>阅谁问君诵,水落清香浮</h1>
<p>阅谁问君诵,水落清香浮</p>
<h1>
<ul>
<li>阅谁问君诵,水落清香浮</li>
<li>阅谁问君诵,水落清香浮</li>
<li>阅谁问君诵,水落清香浮</li>
</ul>
</h1>
</body>
</html>
效果图:
rem 为单位:
em 是相对于其父元素来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小。而 rem 是相对于根元素<html>,这样就意味着,我们只需要在根元素确定一个参考值。
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
<title>rem 的演示</title>
<style>
html {
font-size: 62.5%;/*10 ÷ 16 × 100% = 62.5%*/
}
body {
font-size: 1.4rem;/*1.4rem × 10px = 14px */
}
h1 {
font-size: 2.0rem; /*2.0rem × 10px = 20px */ font-weight:normal;
}
p {
font-size: 1.6rem; /*1.6rem × 10px = 16px */
}
li {
font-size: 1.6rem; /*1.6rem × 10px = 16px */
}
</style>
</head>
<body>
<h1>阅谁问君诵,水落清香浮</h1>
<p>阅谁问君诵,水落清香浮</p>
<h1>
<ul>
<li>阅谁问君诵,水落清香浮</li>
<li>阅谁问君诵,水落清香浮</li>
<li>阅谁问君诵,水落清香浮<div>注意一</div></li>
</ul>
</h1>
<div>注意二</div>
</body>
</html>
效果图:
浏览器的兼容性
除了IE6-IE8,其它的浏览器都支持 em 和 rem 属性,px 是所有浏览器都支持。
因此为了浏览器的兼容性,可“px”和“rem”一起使用,用"px"来实现IE6-8下的效果,然后使用“rem”来实现其他浏览器的效果。
综上案例,建议做网站使用 “px” 或 “rem”,不过也有出名的网站使用 em。这是一个考虑的问题。
标签:CSS3,em,1.6,px,问君,rem,font,size From: https://blog.51cto.com/u_16171388/6557282