Javascript可以在一个元素的两种不同的CSS样式之间切换
Javascript pure switch beetween 2 different CSS styles of an element
我有两个body style。我能想到的选择和应用
的方法有三种-
applyStyle(bodyName or Element, #styleNumber)
-
If () {select style)
-
switch { case 1: ... case 2: ... }
我应该将样式存储在一个变量中还是两个不同的CSS文件中?
/* body style 1 */
body {
background-color: #E6F6F6;
}
/* body style 2 */
body {
background-color: #F6F6F6;
}
如果你不介意使用JQuery,我会这样做:
body {
background-color: #E6F6F6;
}
body.different {
background-color: #F6F6F6;
}
然后使用$('body').toggleClass('different')
在它们之间切换。文档在这里。
你可以创建不同的类然后应用它。
CSS body.style1 {
background : red;
}
body.style2 {
background : blue;
}
Javascript document.getElementsByTagName('body')[0].className = 'style2';
完成了!
这不是最好的解决方案(使用类代替),但你所要求的,CSS操作与香草JavaScript,是完全可能的。
首先,引用要修改的<style>
,例如
var style = document.querySelector('style');
现在你可以访问这个<style>
的CSSStyleSheet了
var sheet = style.sheet;
CSSStyleSheet有insertRule和deleteRule方法,它们使用指示感兴趣的规则应该在哪里的索引。
现在,把这些放在一起
// initial
var idx = sheet.cssRules.length; // append a new rule to the end
sheet.insertRule('body {background-color: #E6F6F6;}', idx);
// then change
sheet.insertRule('body {background-color: #F6F6F6;}', idx);
sheet.removeRule(idx + 1); // remove the previous rule which got incremented one index
访问 cssstylesheet 的另一种方法是通过
document.styleSheets
。这跳过了<style>
步骤,但我不喜欢它,例如,如果你试图访问不同的源托管表,你可能会以SecurityError结束。通过<style>
,在我看来,给你更多的控制。
相关文章:
- 使用javascript单击同一按钮,在两种样式之间更改css值
- 把两种不同的形式合为一
- 这两种不同的创建对象文字的方法有什么区别
- angularjs两种功能的替代品(欧芹和重置)
- 我想要相同的函数以两种方式反应
- HTML中两种JS实现之间的差异
- 比较两种不同格式的时间戳-GAS
- 这两种方法有什么不同
- 正则表达式,两种方式,不同的结果
- 如何将两种不同类型的事件附加到同一元素
- 这两种使用 jQuery 追加 DOM 元素的方法有什么不同
- 通过两种方法创建和更新 CSS
- 什么'这两种继承策略之间的区别是什么
- 使用jQuery过滤两种输入类型
- 如何在面板中添加在两种类型的谷歌图表之间切换的按钮
- 有两种CSS嵌入语言风格的网页,不同的文本语言类型
- 如何用两种方式将css过渡隐藏在另一个元素后面
- Javascript可以在一个元素的两种不同的CSS样式之间切换
- Jquery切换两种颜色之间的css类
- 混合两种css用于不同的导航定义