gpt4 book ai didi

javascript - 跨浏览器(IE8-)getCompulatedStyle 与 Javascript?

转载 作者:行者123 更新时间:2023-12-03 02:24:39 32 4
gpt4 key购买 nike

由于IE8不支持getCompulatedStyle,我们只能使用currentStyle。但是,它不会返回某些属性的真实“计算”值。

例如:

<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

是否有人可以在不使用 jQuery 或其他 Javascript 库的情况下为所有属性提供跨浏览器解决方案?

最佳答案

这是一个跨浏览器函数来获取计算样式...

getStyle = function (el, prop) {
if (typeof 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
alert(getStyle(p, 'color'));

查看此演示以查看其实际效果:

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;
}

关于javascript - 跨浏览器(IE8-)getCompulatedStyle 与 Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15733365/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com