Я пишу небольшой плагин, который позволяет пользователю легко добавлять переходы в JavaScript без JQuery:Override/удалить 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 Plugin:
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;
, но это работает только один раз. Есть ли способ удалить background-color:green;
в таблицу стилей css или переопределить без необходимости вставить в нее !important
? (Я хочу изменить цвет более одного раза).
Я пробовал .addRule
вместо .insertRule
, но я думаю, что я лаю неправильное дерево.
Я удивлен, что это важно - я думал, что javascript ставит стили в линию, и что встроенные стили переписывают любые другие стили CSS, важно или нет. – wunth
Он работает только тогда, когда я ставил! Важно, он просто остается зеленым, иначе – ScriptKitty
Это делает разница, если вы делаете transSelector = '# snip' – wunth