Chrome的背景位置的计算样式返回0%0%

时间:2013-11-20 19:36:49

标签: javascript html css

说我有一个element,我希望看到background-position

我这样做:

window.getComputedStyle(element).getPropertyValue('background-position')

如果没有为element定义属性background-position,我会得到:

0% 0%

但是,如果我决定将background-position设置为0% 0%,我会获得相同的值。

如何区分这两种情况?我怎么知道属性实际定义了?

编辑:

其他人建议只使用style.getPropertyValue('background-position'),但这只会考虑INLINE值。如果已在外部CSS文件中设置了值,我还要考虑。 http://dev.w3.org/csswg/cssom/#elementcssinlinestyle

2 个答案:

答案 0 :(得分:2)

0% 0% is the initial value for background-position起计算出的值是正确的。 (CSS属性总是有一个值 - 即使只是一个初始值 - 所以从来没有真正"未定义"。)

getComputedStyle无法告诉您差异,但可能会选择假设,例如背景图像0% 0%的背景位置none可能代表初始值。

要追踪样式的来源,请尝试使用非标准getMatchedCSSRules()(参见window.getComputedStyle(): How to Discard properties with default values?)。

答案 1 :(得分:0)

Imho,这两种情况之间的唯一区别是在任何浏览器端css解析之前。这意味着您必须以字符串方式调查css以确定它是否已设置。搜索'background'和'background-position'作为子字符串,然后找出你是否有0或0%