1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title>使用DOM操作CSS</title>
6 </head>
7 <script type="text/javascript">
8 window.onload=function(){
9 //获取box1
10 var box1=document.getElementById("box1");
11 //为按钮绑定单击响应函数
12 var button1=document.getElementById("button1");
13 button1.onclick=function(){
14 /*修改box1的宽度
15 通过JS修改元素的样式
16 语法 元素.style.样式名=样式值
17
18 注意 如果CSS的样式名中含有-
19 这种名称在JS中是不合法比如background-color
20 需要将这种样式名修改为驼峰命名法,去掉-,然后将-后面的字母大写
21
22 我们通过style属性设置的样式都是内联样式,
23 而内联样式有较高的优先级,所以通过JS修改的样式往往会立即显示
24
25 但是如果在样式中写了!important,则此时样式会有最高的优先级,
26 即使通过JS也不能覆盖该样式,此时将会导致JS修改样式失败
27 所以尽量不要为样式添加!important
28
29 通过style属性设置和读取的都是内联样式 无法读取样式表中的样式
30 */
31 box1.style.width="300px";
32 box1.style.backgroundColor="yellow";
33 };
34
35
36 var box2=document.getElementById("box2");
37 var button2=document.getElementById("button2");
38 button2.onclick=function(){
39 /*
40 读取box1的样式
41 语法 元素.style.样式名
42
43 alert(box1.style.width);只能获取到内联样式
44 获取元素的当前显示样式
45 语法 元素.currentStyle.样式名
46 它可以用来读取当前元素正在显示的样式
47 */
48 //alert(box2.currentStyle.width);
49 alert(box2.style.width);
50 };
51
52
53
54 var box3=document.getElementById("box3");
55 var button3=document.getElementById("button3");
56 button3.onclick=function(){
57 //alert(box3.currentStyle.backgroundColor);
58 /*
59 1.currentStyle只有IE浏览器支持,其他的浏览器都不支持
60 在其他浏览器中可以使用
61 2.getComputedStyle()这个方法来获取元素当前的样式
62 这个方法是window的方法,可以直接使用
63 需要两个参数
64 第一个 要获取样式的元素
65 第二个 可以传递一个伪元素,一般都传null
66 该方法会返回一个对象,对象中封装了当前元素对应的样式
67 如果获取的样式没有设置,则会获取到真实的值,而不是默认值
68 比如 没有设置width,它不会获取auto,而是一个长度
69 但是该方法不支持IE8及以下的浏览器
70
71 通过currentStyle和getComputedStyle()读取到的样式都是只读的不能修改
72 如果要修改必须通过style属性
73 */
74 var obj=getComputedStyle(box3,null);
75 alert(obj.width);
76 alert(obj.backgroundColor);
77 /*alert(obj); [object CSS2Properties]
78 alert(getComputedStyle);
79 function getComputedStyle() {
80 [native code]
81 }*/
82 alert(getStyle(box3,"width"));
83
84 };
85
86 };
87 /*
88 3.定义一个函数,用来获取指定元素的当前的样式
89 参数
90 obj 要获取样式的元素
91 name 要获取样式名
92 */
93
94 function getStyle(obj,name)
95 {
96 //正常浏览器的方式
97 return getComputedStyle(obj,null)[name];
98 //IE8及以下的方式
99 //return obj.currentStyle.[name];
100 /*
101 if(window.getComputedStyle)
102 没有加window时,是一个变量,需要去作用域中寻找,
103 加了window变成了window对象的属性,
104 变量与属性的区别:
105 变量没有找到,会报错,属性没有找到返回undefined
106 如果是IE8及以下的浏览器,没有getComputedStyle就会报错
107
108 return getComputedStyle(obj,null)[name];
109 else
110 return obj.currentStyle[name];
111 */
112 /*
113 不推荐使用
114 因为如果是IE9及以上的浏览器既有obj.currentStyle
115 也有getComputedStyle(obj,null)[name],
116 按照下面写法,优先使用obj.currentStyle
117 但是还是希望优先使用getComputedStyle(obj,null)[name];
118 if(obj.currentStyle){
119 return obj.currentStyle[name];
120 }
121 else
122 return getComputedStyle(obj,null)[name];
123 */
124
125 return window.getComputedStyle?getComputedStyle(obj,null)[name]:obj.currentStyle[name];
126 }
127
128 </script>
129 <style type="text/css">
130 #box1{
131 width:200px;
132 height:200px;
133 background-color:red;
134 }
135 #box2{
136 width:100px;
137 height:100px;
138 background-color:green;
139 }
140 #box3{
141 width:100px;
142 height:100px;
143 background-color:yellow;
144 }
145 </style>
146 <body>
147 <button id="button1">点我一下</button>
148 <button id="button2">button2</button>
149 <button id="button3">button3</button>
150 <br/><br/>
151 <div id="box1"></div>
152 <div id="box2"></div>
153 <div id="box3"></div>
154 </body>
155 </html>
![]()