La propiedad element.style le permite conocer solo las propiedades CSS que se definieron como en línea en ese elemento (mediante programación o definidas en el atributo de estilo del elemento), debe obtener el estilo calculado.
No es tan fácil hacerlo de forma cruzada, IE tiene su propio camino, a través de la propiedad element.currentStyle, y la forma estándar DOM Nivel 2, implementada por otros navegadores es a través del método document.defaultView.getComputedStyle.
Las dos formas tienen diferencias, por ejemplo, la propiedad IE element.currentStyle espera que acceda a los nombres de propiedad CSS compuestos de dos o más palabras en camelCase (por ejemplo, maxHeight, fontSize, backgroundColor, etc.), la forma estándar espera las propiedades con palabras separadas con guiones (por ejemplo, altura máxima, tamaño de fuente, color de fondo, 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;
}
}
Referencia principal stackoverflow