首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >currentStyle与getComputedStyle的火狐问题

currentStyle与getComputedStyle的火狐问题
EN

Stack Overflow用户
提问于 2011-08-29 12:46:58
回答 2查看 6.6K关注 0票数 5

我正在尝试根据元素的CSS规则获取元素的宽度,问题是对于没有设置CSS width值的元素,"getComputedStyle“返回的是像素值,而不是"auto”。在歌剧中,“elem.currentStyle‘’width‘”返回"auto",但在firefox中,它必须使用"getComputedStyle“返回类似于"1149px”的内容。

知道什么是实际的CSS规则对我来说是至关重要的。除了getComputedStyle之外,还有什么方法可以做到这一点吗?The Firefox MDN明确表示"getComputedStyle“不是可行的方法,但我找不到任何与"currentStyle”等同的火狐文档。

如果您想知道,我的最终目标是找到页面上最大的静态宽度元素。如果我不能读取样式表值--仅呈现/计算出的值--那么我该如何实现呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-29 15:16:48

如果从元素开始,就无法知道对其应用了哪些样式表规则。getComputedStyle()仅仅提供了有效的样式值,而currentStyle并没有太大的不同,即使它恰好给出了您在这个特定场景和这个特定浏览器中所期望的结果。

您可能需要做的是查看样式表。大致如下:

代码语言:javascript
复制
for (var i = 0; i < document.styleSheets.length; i++)
{
  var styleSheet = document.styleSheets[i];
  for (var j = 0; j < styleSheet.cssRules.length; j++)
  {
    var rule = styleSheet.cssRules[j];
    if (rule.type == 1)  // STYLE_RULE
    {
      // Do something with rule.style.width
    }
  }
}

如果您需要查找与该规则匹配的元素,则可以结合使用document.querySelectorAll()rule.selectorText。剩下的问题是,多个样式规则可能应用于相同的元素,并且需要计算规则的特异性。然而,我不确定这对你来说有多大的问题。

其他文档:

票数 4
EN

Stack Overflow用户

发布于 2011-08-29 12:56:12

如果您只想获得元素的维度,为什么不使用

element.clientWidthelement.clientHeight

getcomputestyle不是用来检索元素的宽度或高度的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7226162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档