检索百分比CSS值(在firefox中)

我在firefox上检索确切的css属性值(在’%’中)时遇到问题。

假设我们有这个非常简单的标记:

box

这个css:

 #box{ width:200px; height:200px; left:10%; position:absolute; background:red; } 

我想通过js 检索左侧位置 (’%’)

使用mootools非常容易(演示 – > http://jsfiddle.net/steweb/AWdzB/ ):

 var left = $('box').getStyle('left'); 

或jQuery(演示 – > http://jsfiddle.net/steweb/RaVyU/ ):

 var left = $('#box').css('left'); 

或者通过普通的js(演示 – > http://jsfiddle.net/steweb/tUAKA/ ):

 function getStyle(el,styleProp){ //from ppk's quirksmode var x = document.getElementById(el); if (x.currentStyle) var y = x.currentStyle[styleProp]; else if (window.getComputedStyle) var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp); return y; } var left = getStyle('box','left'); 

但是如果你在firefox (8.0.1)上尝试它,你会发现结果不正确(应该是10%,但它是91px)。 问题是:这个较新版本的Firefox有没有错误? 有谁知道这是一个已知的错误? 难道我做错了什么?

谢谢 :)

更新 :我也尝试过较旧的firefox版本,并且它不正确(它总是返回px值)..为了完整性,它在IE上正常工作

记录如下:

在执行所有计算之后,任何CSS属性的使用值都是该属性的最终值。 可以通过调用window.getComputedStyle来检索使用的值。 尺寸(例如宽度,线高)都以像素为单位等

似乎无法访问给定元素的“指定”css值,除非您确切知道应用了哪个css规则并使用document.stylesheets或类似接口解析此规则。

据我所知,它从未显示百分比(我使用ff,opera和chrome)。 所以我认为这不仅仅是一个火狐问题。

但是,您可以手动计算它,但如果浏览器窗口很小,它就接近定义的值。

 parseInt($('#box').css('left'))/ $(window).width()*100; 

正确的答案是评论我在bugzilla上提交的错误

https://bugzilla.mozilla.org/show_bug.cgi?id=707691#c7

要获得正确的%值(在firefox上),元素的(或其父节点之一) display应设置为none

测试: http : //jsfiddle.net/4RKsM/

不清楚的是:为什么在相同的浏览器/版本上(参见XP / win7上的firefox 7或mac osx / ubuntu上的Opera 11.5)但是在不同的操作系统上,行为是不同的?

顺便说一句,发布的规格@ thg435(并报道了mdn)仍在不断变化。