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

1、px 像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。 屏幕设备物理上能显示出的最小的一个点,这个点不是固定宽度的,不同设备上点的长宽比例有可能会不同,也不...
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>


你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
廖雪
廖雪

78 篇文章

作家榜 »

  1. admin 651 文章
  2. 粪斗 185 文章
  3. 王凯 92 文章
  4. 廖雪 78 文章
  5. 牟雪峰 12 文章
  6. 李沁雪 9 文章
  7. 全易 2 文章
  8. Stevengring 0 文章