我正在尝试仅在.link.box.gradient
添加渐变,但在ie7中添加.link.box.gradient
和.style.box.gradient
<!DOCTYPE html>
<html lang="sv">
<head>
<title></title>
<script src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.4.min.js"></script>
<script>
jQuery(function ($) {
$('head').append("<style>.link.box{height:100px;width:100px;}.link.box.gradient{filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#000000',EndColorStr='#ffffff');}</style>");
});
</script>
</head>
<body>
<div class="style box gradient">Gradient (style-tag)</div>
<div class="link box gradient">Gradient (link-tag)</div>
</body>
</html>
你也可以在这里看到,http://jsfiddle.net/Zhvpy/ 一个奇怪的事情是当我从javascript中移出.link.box {height:100px; width:100px;},你可以在这里看到http://jsfiddle.net/Zhvpy/1它似乎有效,但我不想搬出去。
为什么会这样?我该如何修复这个错误?
答案 0 :(得分:2)
删除了原始错误答案
编辑1
奇怪 - 决定它可能是旧版本的IE处理某些元素(如<script />
)所以尝试a non-jQuery solution的方式。
似乎工作!
编辑2
将此添加到完整脚本中 - 输出与IE8输出更符合的不同结果
function appendStyle(element, cssObj) {
//$('#a').append($('<span/>').text(cssObjToText(cssObj)));
if ($.browser.version == 7) {
var head = document.getElementsByTagName('head')[0],
style = document.createElement('style'),
rules = document.createTextNode(cssObjToText(cssObj));
style.type = 'text/css';
head.appendChild(style);
style.styleSheet.cssText = rules.nodeValue;
}
else {
element.after('<style class="css-finalized">' + cssObjToText(cssObj) + '</style>');
}
}