2

是否有一种简单的跨浏览器方法来获取 PrototypeJS 中元素的计算样式,而无需检查 document.defaultView... 和其他属性?...所以代码看起来像

var elt = $$('.xyz')[k],
    border = elt.getComputedStyle('border-bottom-width')

PrototypeJs 提供了返回计算getDimensions尺寸的、-Width-Height方法,但无法获取其他计算样式,如边框、背景等。

我找到了几个独立的 getComputedStyle实现,但也许有一个 PrototypeJS 的补丁/插件可以做到这一点?

4

2 回答 2

4

Prototype 的getStyle方法封装了您正在寻找的大部分跨浏览器计算样式工作:

var bgColor = $(element).getStyle('background-color');

从文档:

此方法查找元素的 CSS 属性,无论它是内联应用还是在样式表中应用。它可以解决浏览器关于浮动、不透明度(返回 0(完全透明)和 1(完全不透明)之间的值)、位置属性(左、上、右和下)以及获取隐藏的尺寸(宽度或高度)时的不一致问题元素。

但是,此方法不会返回应用在 Internet Explorer <= 8 中的样式表中的样式,因为它使用 getComputedStyle() 方法,这对于版本 8 及更低版本是不正确的方法:http ://www.quirksmode.org/dom /w3c_css.html

于 2010-01-13T12:16:57.620 回答
1

从来没听说过。

这可能是因为“获取计算样式”实现是如此不同,以至于几乎不可能保证统一的结果(这使得它们对于跨浏览器框架毫无用处)。

例如,正如我在这个问题中学到的那样,并非总是可以跨浏览器获取计算出的字体大小。

于 2010-01-13T11:39:33.173 回答