La propriété element.style vous permet de connaître uniquement les propriétés CSS qui ont été définies en ligne dans cet élément (par programme ou définies dans l'attribut style de l'élément), vous devez obtenir le style calculé.
Ce n'est pas si facile de le faire de manière multi-navigateur, IE a sa propre manière, via la propriété element.currentStyle, et la manière standard DOM niveau 2, implémentée par d'autres navigateurs, est via la méthode document.defaultView.getComputedStyle.
Les deux façons ont des différences, par exemple, la propriété IE element.currentStyle attend que vous accédiez aux noms de propriété CSS composés de deux mots ou plus dans camelCase (par exemple maxHeight, fontSize, backgroundColor, etc.), la manière standard attend les propriétés avec le mots séparés par des tirets (par exemple, hauteur maximale, taille de police, couleur d'arrière-plan, etc.). ......
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;
}
}
Empilement de référence principal