La proprietà element.style ti consente di conoscere solo le proprietà CSS che sono state definite come inline in quell'elemento (programmaticamente o definite nell'attributo style dell'elemento), dovresti ottenere lo stile calcolato.
Non è così facile farlo in un browser incrociato, IE ha il suo modo, attraverso la proprietà element.currentStyle, e il modo standard DOM Level 2, implementato da altri browser è attraverso il metodo document.defaultView.getComputedStyle.
I due modi presentano differenze, ad esempio la proprietà IE element.currentStyle prevede che tu acceda ai nomi delle proprietà CSS composti da due o più parole in camelCase (ad es. MaxHeight, fontSize, backgroundColor, ecc.), Il modo standard prevede le proprietà con parole separate da trattini (ad es. altezza massima, dimensione carattere, colore di sfondo, ecc.). ......
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;
}
}
Stackoverflow di riferimento principale