语法:元素.style.样式名=样式值
注意:如果CSS的样式名中含有-,这种名称在JS中是不合法的,比如 background-color 。需要将这种样式名修改为驼峰命名法:去掉-,然后将-后的第一个字母大写,比如 backgroundColor
我们通过style属性设置的样式都是内联样式,而内联样式有较高的优先级,所以通过JS修改的样式往往会立即显示
但是如果在样式中写了!important,则此时样式会有最高的优先级,即使通过JS也不能覆盖该样式,此时将会导致JS修改样式失效
所以尽量不要为样式添加!important
语法:元素.style.样式名
通过style属性设置和读取的都是内联样式,无法读取样式表中的样式
语法:元素.currentStyle.样式名
如果当前元素没有设置该样式,则获取它的默认值
例如: box1.currentStyle.width
这个方法是window的方法,可以直接使用需要两个参数
第一个:要获取样式的元素
第二个:可以传递一个伪元素,一般都传null
该方法会返回一个对象,对象中封装了当前元素对应的样式
可以通过对象﹒样式名来读取样式
如果获取的 样式没有设置 ,则会获取到真实的值,而不是默认值
比如:没有设置width,它不会获取到auto,而是 一个长度
注意:通过currentStyle和getComputedstyle()读取到的样式都是只读的,不能修改,如果要修改必须通过style属性
参数:
obj 要获取样式的元素
name 要获取的样式名
在页面内用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>
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们{……}'
}