javascript - 检索百分比 CSS 值(在 Firefox 中)

标签 javascript jquery css mootools

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

假设我们有这个极其简单的标记:

<div id="box">box</div>

和这个 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 上正常工作

最佳答案

这是 documented :

The used value of any CSS property is the final value of that property after all calculations have been performed. Used values can be retrieved by calling window.getComputedStyle. Dimensions (e.g. width, line-height) are all in pixels... etc

似乎没有办法访问给定元素的“指定”css 值,除非您确切知道适用哪个 css 规则并使用 document.stylesheets 或类似界面解析该规则。

关于javascript - 检索百分比 CSS 值(在 Firefox 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8387419/

相关文章:

javascript - 导航时列表项淡入淡出

html - CSS - 如何让元素相互重叠? (没有边距/填充等)

javascript - Joi 覆盖键嵌套模式

javascript - 动态访问对象属性(JS)

javascript - ReactJS : Immutable. js : 合并两个 Json 对象

javascript - 使用动态数据重新加载 bootstrap3 模态

javascript - 将 jQuery 对象传递给 setTimeout 递归函数

javascript - Select2 自定义匹配器,但保留 stripDiacritics

css - 如何使用@media 规则垂直对齐内容以响应?

javascript - 来自 Chart.js 的堆叠组栏 : Can I give each stack group a unique color?