em和px有什么不同?

xuefeihua 2008-04-10 03:21:33
请问:em和px有什么不同?

我在一个网站上看到这样一句话:"指定元素时尽量使用em而不是px做单位。"
不是很理解?
...全文
312 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
chengliwangtao 2009-07-15
1.25em=1.25*12px=15px
回复
路伊阑珊 2009-01-06
学习了
回复
myvicy 2008-04-10
http://bbs.51js.com/viewthread.php?tid=76697
回复
myvicy 2008-04-10
http://www.hanrui.net/article.asp?id=1046
回复
hookee 2008-04-10
页面放大缩小
回复
xuefeihua 2008-04-10
[Quote=引用 3 楼 hookee 的回复:]
zoom功能[/Quote]

是什么东东
回复
hookee 2008-04-10
em是将字体宽度作为单位的
px的话在客户端桌面设置大字体,小字体的情况下是一样的
不过现在浏览器都有zoom功能,影响就不大了
回复
xuefeihua 2008-04-10
那是不是说要用em作为字体单位啊,???
我还是觉得px比较方便,有什么坏处吗?
回复
小逗狗 2008-04-10
1. IE无法调整那些使用px作为单位的字体大小;
2. 国外的大部分网站能够调整的原因在于其使用了em作为字体单位;
3. Firefox能够调整px和em,但是96%以上的中国网民使用IE浏览器(或内核)。

px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。(引自CSS2.0手册)

em是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。(引自CSS2.0手册)

任意浏览器的默认字体高都是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有如下特点:
1. em的值并不是固定的;
2. em会继承父级元素的字体大小。

所以我们在写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。

但是12px汉字例外,就是由以上方法得到的12px(1.2em)大小的汉字在IE中并不等于直接用12px定义的字体大小,而是稍大一点。这个问题 Jorux已经解决,只需在body选择器中把62.5%换成63%就能正常显示了。原因可能是IE处理汉字时,对于浮点的取值精确度有限。不知道有没有其他的解释。
回复
相关推荐
发帖
CSS
创建于2007-09-28

6.0w+

社区成员

层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
申请成为版主
帖子事件
创建了帖子
2008-04-10 03:21
社区公告
暂无公告