javascript - 在 CSS 中设置时无法使用 JavaScript DOM 检测边距

标签 javascript css dom margin

在 CSS 中设置时无法使用 JavaScript DOM 检测边距:

<div>
  <div id="elem">

  </div>
</div>


#elem{
   margin:0;   
}

console.log(document.getElementById('elem').style.marginLeft)     //""
console.log(document.getElementById('elem').style["margin-left"]) //undefined
console.log($('#elem').css('margin-left'))                        //0px

怎么了? 在不通过 DOM 设置边距的情况下确定检测边距的防弹方法是什么? 为什么 jQuery 会检测? 任何人都可以在技术细节中解释为什么无法检测到 margin 以便我了解吗?

http://jsfiddle.net/SBznP/1/

最佳答案

请记住,CSS 和 DOM 是不同的部分。 CSS 的更改不会更改 DOM 内容,反之亦然。

这意味着,element.style.marginLeft (DOM) 返回 style 属性的 marginLeft 属性的当前值。

使用 document.defaultView.getComputedStyle(element, '').getPropertyValue('margin-left') 您可以获得计算值。

PS:最后一种方式 - 很遗憾 - 与一些旧版浏览器不兼容。您可能对跨浏览器版本感兴趣:http://cross-browser.com/x/lib/view.php?s=xGetComputedStyle

关于javascript - 在 CSS 中设置时无法使用 JavaScript DOM 检测边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11799403/

相关文章:

javascript - 如何使用 PHP 和 Ajax 实时读取文件

html - 我有 HTML 和 CSS 布局问题

html - 对齐 Span 的内容

css - Flexbox 子项在 Safari 中折叠

javascript - 向 NodeList 对象添加函数在 Firefox 中不起作用

javascript - 如何更改 JS 中的字体大小以适合其容器?

javascript - javascript 中访问 dom 中特定 id 的奇怪语法

javascript - 列表项样式 |动态添加 |更新样式

javascript - 以安全的方式将 JS 数据保存到数据库中

javascript - 当您将鼠标悬停在javascript中的div上时如何只发出一次声音