62.5%, 1em = 10px

  今天一天都在捣鼓KD03模版,现在大约完成了30%。其中花了很多时间去调整搜索框的大小位置,具体情况是这样的:搜索框和搜索按钮在Firefox和Opera下用css定义基本上是相同的,但是在IE下却总是大那么一点点。margin, padding, font什么的调了半天还是不对头,因为不清楚具体原因连放狗找哪方面内容也不清楚。幸好在看了半部影音不同步的银河系漫游指南后忽然就顿悟了orz。
  情况是这样的,css里常用的两种定义字体大小的单位:em, px。

  • em是一个相对数,比如1.1em就表示1.1个字符宽度,而这个字符宽度是根据font-size来初始化大小的。同时em还有继承父对象的特性,所以在不同位置的1.2em并不一定相等,不过这篇文章和这个没关系就不细说了。
  • px是对于当前显示设备的解析度而言,虽然对于不同设备仍然会有大小差别,但是相对来说更加适合用在定义字体上。

  而这个模版我没有特别定义搜索部分的字体大小,于是它就使用了父对象的font-size参数12px。而万恶的IE对字体的大小定义竟然和FF/Opera是不同的,默认情况下1em在IE下看起来要比其他浏览器大,所以需要在body部分加入以下定义:
[css]font-size:62.5%;
font-family:’Lucida Grande’, Verdana, Arial, Sans-Serif;[/css]
  关键是第一句,它使得IE下的字体大小看起来是:1em=10px,这样就和FF/Opera差不多了。

Technorati Tags: , , ,

6 Responses to “62.5%, 1em = 10px”

  • hhalloyy says:

    看个电影就能解决CSS问题,佩服。

    一般下载的比较不错的主题,都定义了62.5%

  • zeax says:

    kDolphin是不是还记得Rin?那个模板的CSS从头到尾巴都没有定义px,全部都是em定义,而且不同位置同样em的字体大小也不一定,那么它是如何确定字符大小呢?

  • kDolphin says:

    不是说em不可以用来确定字体大小,其实em还是比较推荐的,只是对于新手来说em比较复杂,主要是ie/ff/opera之间的区别,和继承父对象的问题比较麻烦。比如父对象设置1.2em,子也设置1.2em,这两个就不是一样大的。

  • zeax says:

    >_<

  • guoshuang says:

    我一般都用 px,表单域有时候需要拿到中文宽度时,用 em

Leave a Reply to sammychen

Note: Commenter is allowed to use '@User+blank' to automatically notify your reply to other commenter. e.g, if ABC is one of commenter of this post, then write '@ABC '(exclude ') will automatically send your comment to ABC. Using '@all ' to notify all previous commenters. Be sure that the value of User should exactly match with commenter's name (case sensitive).