1

CSSで設定されているJavaScriptDOMでマージンを検出できない:

<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コンテンツは変更されません。その逆も同様です。

これは、element.style.marginLeft(DOM)がstyle属性のmarginLeftプロパティの現在の値を返すことを意味します。

を使用document.defaultView.getComputedStyle(element, '').getPropertyValue('margin-left')すると、代わりに計算値を取得できます。

PS:その最後の方法は、古いブラウザのいくつかとは-悲しいことに-互換性がありません。クロスブラウザバージョンに興味があるかもしれません:http ://cross-browser.com/x/lib/view.php?s = xGetComputedStyle

于 2012-08-03T16:20:41.513 に答える