1

在 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会检测?任何人都可以在技术细节中解释为什么无法检测到边距,以便我了解吗?

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

4

1 回答 1

1

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

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

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

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

于 2012-08-03T16:20:41.513 回答