我们在js的工作学习中总会遇到一些不轻易通过style属性动态加载css样式的情况(eg:伪类的样式控制,动画的样式控制),这里总结一下js改变样式的几种方法:
1,通过style属性或者setAttribute()来更改样式
2,如果只是改变伪类(after,before)的content内容也可以这么做
3,通过更改类名来更改样式
4,那么重点来了:利用document.styleSheets我们获取到所有样式表,然后选择一个样式表通过 insertRule 来添加样式;也可以创建新的cssRules,通过addRule()来添加样式
5,动态加载样式表
如果需要更改的样式比较多,还是建议通过动态加载样式的方式来改变页面样式
本文来自PHP中文网,原文地址: https://www.php.cn/website-design-ask-479590.html 推荐视频教程:《 js基础教程 》
JavaScript动态建立或增加CSS样式表,参考如下:
1、简单的方法:
document.createStyleSheet().cssText = '标签{color:red' +// 这个注释只在当前JS中帮助理解,并不会写入CSS中
'width:300pxheight:150px}' +
'.类名{……}' +
'#ID们{……}'
2、比较完美的方法,防止重复添加,通过添加样式表ID并对其判断来实现:
if (!document.styleSheets['要建立的样式表ID如theforever']) { //先检查要建立的样式表ID是否存在,防止重复添加var ss = document.createStyleSheet()
ss.owningElement.id = '要建立的样式表ID如theforever'
ss.cssText = '标签{display:inline-blockoverflow:hidden' +
// 这个注释只在当前JS中帮助理解,并不会写入CSS中
'text-align:leftwidth:300pxheight:150px}' +
'.类名{……}' +
'#ID们{……}'
}
在页面内用JS操作CSS除非用AJAX,但操作页面内的样式的话,是可以的。操作样式分为改变直接样式,改变className和改变cssText三种一、局部改变样式
调用方法:
改变className
<div
id="demo">测试</div>
<script>
document.getElementById('demo').className="test"
</script>
改变直接样式
<div
id="demo">测试</div>
<script>
document.getElementById('obj').style.backgroundColor="#003366"
</script>
二、全局改变样式
可以通过改变外链样式的的href的值实现网页样式的实时切换
<link
rel
=
"stylesheet"
type="text/css"
id="css"
href="firefox.css"
/>
<span
on
click="javascript:document.getElementById('css').href
=
'ie.css'">点我改变样式</span>