浅谈CSS单位px、pt、em和rem

1、px

 

像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。

 

屏幕设备物理上能显示出的最小的一个点,这个点不是固定宽度的,不同设备上点的长宽比例有可能会不同,也不一定是1:1的正方形。如,A显示器上1px宽=1mm,但B显示器1px宽=2mm,若定义一个div宽度为100px,A显示器上看该div是10cm,B显示器上看该div是20cm。

 

 

 

2、pt

 

磅,印刷业上常使用的单位,等于1/72英寸,表示绝对长度,一般用于页面打印排版。

 

px和pt转换规则:pt=px*3/4。

 

 

 

3、em

 

em实质是一个相对值,而非具体的数值,因此需要一个参考点,一般都是以<body>的font-size为基准,也即body元素的任何子元素的em值都等于font-size设置的大小。

任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。

 

由于em是相对于父元素计算的,因此多层嵌套情况下,每层都会从父元素继承em值,因此em的值并不是固定的。

 

HTML:
<body>
<div id="div1"><!--14 * 1.2 = 16.8px-->
<div id="div2"><!--16.8 * 1.2 = 20.16px-->
<div id="div3"><!--20.16px * 1.2 = 24.192px-->
</div>
</div>
</div>
</body>
CSS:
body {
  font-size: 14px;
}
div {
font-size: 1.2em;
}

 

 

4、rem(第一种)

 

em的问题:子元素设置,需要知道父元素的大小。

 

解决:rem相对于根元素<html>,因此,只需要在根元素上确定一个参考值即可。

 

HTML:
<body>
<div id="div1"><!--14 * 1.2 = 16.8px-->
<div id="div2"><!--14 * 1.2 = 16.8px-->
<div id="div3"><!--14 * 1.2 = 16.8pxpx-->
</div>
</div>
</div>
</body>
CSS:
html {
  font-size: 14px;
}
div {
font-size: 1.2rem;
}

除了IE6-IE8,其它浏览器都支持em和rem。

 

rem第二种:

其实使用js动态定义REM单位比较好,很多人使用css定义,并且还利用媒体查询设置,写的像一坨屎,还有很多jS定义的比屎还屎,下面给出最简单方法:

在头部加入这些JS代码:代表16rem为满屏100%宽度,参考地址:rem单位设置 与 手机H5端如何使用rem单位对设计图进行等比例还原


<script type="text/javascript">
document.documentElement.style.fontSize = document.documentElement.clientWidth / 320 * 20 + 'px';
window.onresize = function() {
document.documentElement.style.fontSize = document.documentElement.clientWidth / 320 * 20 + 'px';
};
</script>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.duanlonglong.com/qdjy/377.html