element.styleプロパティを使用すると、その要素でインラインとして定義された(プログラムで、または要素のスタイル属性で定義された)CSSプロパティのみを知ることができます。計算されたスタイルを取得する必要があります。
ブラウザー間で簡単に行うことはできません。IEにはelement.currentStyleプロパティによる独自の方法があり、他のブラウザーによって実装されるDOMレベル2の標準的な方法はdocument.defaultView.getComputedStyleメソッドを使用する方法です。
2つの方法には違いがあります。たとえば、IE element.currentStyleプロパティは、キャメルケースの2つ以上の単語で構成されるCSSプロパティ名(maxHeight、fontSize、backgroundColorなど)にアクセスすることを想定しています。標準の方法では、ダッシュで区切られた単語(例:max-height、font-size、background-colorなど)。……
function getStyle(el, styleProp) {
var value, defaultView = (el.ownerDocument || document).defaultView;
// W3C standard way:
if (defaultView && defaultView.getComputedStyle) {
// sanitize property name to css notation
// (hyphen separated words eg. font-Size)
styleProp = styleProp.replace(/([A-Z])/g, "-$1").toLowerCase();
return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);
} else if (el.currentStyle) { // IE
// sanitize property name to camelCase
styleProp = styleProp.replace(/\-(\w)/g, function(str, letter) {
return letter.toUpperCase();
});
value = el.currentStyle[styleProp];
// convert other units to pixels on IE
if (/^\d+(em|pt|%|ex)?$/i.test(value)) {
return (function(value) {
var oldLeft = el.style.left, oldRsLeft = el.runtimeStyle.left;
el.runtimeStyle.left = el.currentStyle.left;
el.style.left = value || 0;
value = el.style.pixelLeft + "px";
el.style.left = oldLeft;
el.runtimeStyle.left = oldRsLeft;
return value;
})(value);
}
return value;
}
}
メインリファレンススタックオーバーフロー