我写一个小插件,让用户轻松地在JavaScript中添加过渡没有jQuery的:覆盖/删除CSS属性与JavaScript的
HTML:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Snippety</title>
<script src="snip.js" type="text/javascript"></script>
<link rel="stylesheet" href="snip.css" type="text/css" />
</head>
<body>
<script>
transition(
transSelector = '.snip',
transTime = '5s',
transDelay = 0000,
transFunc = 'transTo("background-color:red!important;")'
);
</script>
<div class="snip" id="snip">buhhug</div>
</body>
</html>
的js插件:
function transition(transSelector,transTime,transDelay,transFunc) {
document.styleSheets[0].insertRule(''+transSelector+' {transition:'+transTime+';-webkit-transition:'+transTime+';}');
setTimeout(transFunc, transDelay)
}
function transTo(rule) {
document.styleSheets[0].insertRule(''+transSelector+' {'+rule+'}');
}
CSS:
.snip {
background-color: green;
}
的问题是,当颜色变为红色在JavaScript中,我需要添加!important
改变.snip
到background-color:red;
,但它只能使用一次。 有没有什么办法可以删除css样式表中的background-color:green;
,或者不必将!important
放在里面呢? (我打算不止一次地改变颜色)。
我试过.addRule
而不是.insertRule
,但我想我在吠叫错误的树。
我很惊讶它需要重要的 - 我认为JavaScript把内联样式和内联样式覆盖任何其他CSS样式,!重要或否则 – wunth
它只适用于我放!重要的是,它只是保持绿色,否则 – ScriptKitty
它是否使如果你使transSelector ='#snip'有所不同 – wunth