码迷,mamicode.com
首页 > Web开发 > 详细

css中px,em和rem的区别

时间:2016-09-08 18:11:59      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

css中px,em和rem的区别

   今天,突然间发现一个特别有意思的问题,就是无意间看到一个网站中的em并不是16px,下面展开了对于px和em以及rem的探究。

  首先,px是绝对长度单位,是相对于显示器屏幕分辨率而言的,而em、rem是相对长度单位,相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。在国内,大部分网站是无法调整的,他们大部分是用的px做单位,国外的网站大多用em或rem作为单位字体,他们的网站的字体就容易调控。

  然后针对单独的px、em、rem我们说说他们的不同特点:

    px特点:px是典型的度量单位,值是固定的
    em特点:em的值并不是固定的; em会继承父级元素的字体大小。
    rem特点:rem是CSS3新增的一个相对单位(root em,根em),这个单位引起了广泛关注。这个单位与em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。目前,除了IE8及更早版本外,所有浏览器均已支持rem。对于不支持它的浏览器,应对方法也很简单,就是多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。
  那么问题来了,它们之间如何转化呢?下面是几种常见的转化方式:

    PX to EM
      Example: 12px / 16px = .75em
    PX to %
      Example: 12px / 16px * 100 = 75%
    PX to PT
      Example: 16px * (72pt / 96px) = 12pt
    EM to PX
      Example: .75em * 16px = 12px
    EM to %
      Example: .75em * 100 = 75%

  所以我们在写CSS的时候,需要注意:
    1. body选择器中声明Font-size=62.5%;
    2. 将你的原来的px数值除以10,然后换上em作为单位;
    3. 重新计算那些被放大的字体的em数值。避免字体大小的重复声明。
        也就是避免1.2 * 1.2= 1.44的现象。比如说你在#content中声明了字体大小为1.2em,那么在声明p的字体大小时就只能是1em,而不是1.2em, 因为此em非彼em,它因继承#content的字体高而变为了1em=12px。
  我们还需要注意的是:rem设置的字体大小并不会随着浏览器的屏幕的改变而改变,它的改变与浏览器本身有关。

  最后为大家提供一个px,em,rem单位转换工具,地址:http://pxtoem.com/

css中px,em和rem的区别

标签:

原文地址:http://www.cnblogs.com/foodoir/p/5853610.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!