Since IE8 does not support getComputedStyle
, we can only use currentStyle
. However, it does not return the real "computed" value for some properties.
For example:
<style type="text/css">
#div {/* no properties are defined here */}
</style>
<div id="div">div</div>
// returns "medium" instead of 0px
document.getElementById('div').currentStyle.borderLeftWidth
// returns "auto" instead of 0px
document.getElementById('div').currentStyle.marginLeft
// returns "undefined" instead of 1
document.getElementById('div').currentStyle.opacity
Does anyone have a cross-browser solution for all properties without using jQuery or other Javascript libraries?
Here's a cross-browser function to get a computed style...
getStyle = function (el, prop) {
if (typeof getComputedStyle !== 'undefined') {
return getComputedStyle(el, null).getPropertyValue(prop);
} else {
return el.currentStyle[prop];
}
}
You may store it as an utility within an object, or just use it as provided. Here's a sample demo!
// Create paragraph element and append some text to it
var p = document.createElement('p');
p.appendChild(document.createTextNode('something for fun'));
// Append element to the body
document.getElementsByTagName('body')[0].appendChild(p);
// Set hex color to this element
p.style.color = '#999';
// alert element's color using getStyle function
alert(getStyle(p, 'color'));
Check this demo to see it in action:
getStyle = function(el, prop) {
if (getComputedStyle !== 'undefined') {
return getComputedStyle(el, null).getPropertyValue(prop);
} else {
return el.currentStyle[prop];
}
}
// Create paragraph element and append some text to it
var p = document.createElement('p');
p.appendChild(document.createTextNode('something for fun'));
// Append element to the body
document.getElementsByTagName('body')[0].appendChild(p);
// Set hex color to this element
p.style.color = '#999';
// alert element's color using getStyle function
console.log(getStyle(p, 'color'));
p {
color: red;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With