我在使用火狐浏览器时遇到了一个问题,无法精确地获取CSS属性值(以“%”为单位)。
假设我们有这个非常简单的标记:
<div id="box">box</div>
以及这段 CSS 代码:
#box{
width:200px;
height:200px;
left:10%;
position:absolute;
background:red;
}
我想使用JavaScript获取左侧位置的百分比(%)。
使用MooTools很容易实现(示例->http://jsfiddle.net/steweb/AWdzB/):
var left = $('box').getStyle('left');
或者使用jQuery(示例 -> http://jsfiddle.net/steweb/RaVyU/):
var left = $('#box').css('left');
或者通过纯JavaScript(示例->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有bug吗?是否有人知道这是一个已知的bug?我做错了什么吗?
谢谢:)
更新:我还在旧版的Firefox上尝试了一下,结果也不正确(它总是返回像素值)...为了完整起见,在IE上它可以正确运行。