2010-05-30 115 views

回答

7

使用css()阅读样式表,样式的应用确实在不同的浏览器不同的事情。

在IE,其从IE-特定currentStyle对象,这是访问此信息的唯一方式读取值。 currentStyle为您提供了CSS调用‘specified style’的内容,也就是说您在样式表中所写的内容。如果你没有覆盖它,initial value of border-width是'中等',所以这是你直接得到的。

在其他浏览器上,css()使用标准DOM Level 2 CSS方法getComputedStyle()。不像IE的currentStyle,这将返回“计算样式”,它与指定的样式不同,因为像'medium'这样的相对单位被解析为实际长度。

这里'中'通常会解析为约3px的长度,但您可能实际上没有为该元素打开边框,因此它默认为border-style: none。这使得border-width解析为零。

通常'指定样式'和'计算样式'彼此足够接近,以相同的方式处理它们,这就是jQuery的css()方法所依赖的。但实际上它们并不完全相同。

1

这看起来像是刚刚返回浏览器的默认值。如果没有指定任何边框,则每个浏览器都有其自己的默认值。所以在这里,如果你要添加一个边框样式,IE会自动显示该样式的媒体边界,但FF就什么都没有,因为默认的宽度为0。

0

每当你设计一个网页的风格,你应该始终复位所有元素都设置为默认值,以便在所有浏览器中保持一致。

包括YUI的重置包在你的CSS,使所有值都在所有的浏览器fliud。

http://developer.yahoo.com/yui/reset/

然后当你调用的CSS元素的值将有都开始在相同的值,除非另一个jQuery的情况下改变它,你问前值。