JS修改CSS设置的样式

404 阅读2分钟

设置CSS样式

语法:元素.style.样式名=样式值

注意:如果CSS的样式名中含有-,这种名称在JS中是不合法的,比如background-color。需要将这种样式名修改为驼峰命名法:去掉-,然后将-后的第一个字母大写,比如backgroundColor

我们通过style属性设置的样式都是内联样式,而内联样式有较高的优先级,所以通过JS修改的样式往往会立即显示
但是如果在样式中写了!important,则此时样式会有最高的优先级,即使通过JS也不能覆盖该样式,此时将会导致JS修改样式失效
所以尽量不要为样式添加!important

读取CSS样式

语法:元素.style.样式名
通过style属性设置和读取的都是内联样式,无法读取样式表中的样式

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
			#box1{
				width: 100px;
				height: 100px;
				/*background-color: red !important;*/
				background-color: red ;
			}
		</style>
	</head>
	<body>
		<button id="btn01" onclick="btn01()">点我一下</button>
		<button id="btn02" onclick="btn02()">点我一下02</button>
		<div id="box1">
			
		</div>
	</body>
	<script>
		function btn01(){
			box1.style.width="300px";
			box1.style.height="300px";
			box1.style.backgroundColor="yellow";
		};
		function btn02(){
			alert(box1.style.width);
		};
	</script>
</html>

currentStyle读取当前元素正在显示的样式(只有IE浏览器支持)

语法:元素.currentStyle.样式名
如果当前元素没有设置该样式,则获取它的默认值
例如:box1.currentStyle.width

getComputedStyle()方法可读取当前元素正在显示的样式

这个方法是window的方法,可以直接使用需要两个参数
第一个:要获取样式的元素
第二个:可以传递一个伪元素,一般都传null

该方法会返回一个对象,对象中封装了当前元素对应的样式
可以通过对象﹒样式名来读取样式

如果获取的样式没有设置,则会获取到真实的值,而不是默认值
比如:没有设置width,它不会获取到auto,而是一个长度

// var obj = getComputedStyle( box1, null );
alert(getComputedStyle(box1,null).width);

注意:通过currentStyle和getComputedstyle()读取到的样式都是只读的,不能修改,如果要修改必须通过style属性

定义一个函数,可在所有浏览器里获取指定元素的当前样式

参数:
obj 要获取样式的元素
name 要获取的样式名

		function getStyle(obj, name) {
			if(window.getComputedStyle) {
				//正常浏览器,具有getComputedStyle()方法
				return getComputedStyle(obj, null)[name];
			} else {
				//IE8,没有getComputedStyle()方法
				return obj.currentStyle[name];
			}
		}
                //调用函数
		//var w=getStyle(box1,"width");
		alert(getStyle(box1,"width"));