最后写下关于JS控制内联样式 带!important的现象:
看下正常的Demo1:
1 <style type="text/css">
2 div{background: red !important; height:20px;}
3 #demo1{ background: green;}
4 .demo1{ background:blue;}
5 </style> -
1 <div class="demo1" id="demo1" style="background: yellow"></div>
1<script type="text/javascript">
2document.getElementById("demo1").style.background="black";
3</script>
-最终显示背景为红色,这应该不会有什么问题, !important 放到哪都会改变优先级的,而后面的JS代码也不会改变优先级。
-
另外一个Demo2:
1 <style type="text/css">
2 div{background: red !important; height:200px;}
3 #demo2{ background: green;}
4 .demo2{ background: blue;}
5 </style>
6
1 <div class="demo2" id="demo2" style="background: yellow !important"></div>
-
1 <script type="text/javascript">
2 document.getElementById("demo2").style.background="black";
3 </script>
-
IE6,7 显示 红色
FF2+ 显示 黄色
Opera9+ 显示 红色
Safari 显示 黄色
-Demo3:
1 -<style type="text/css">
2 div{background: red !important; height:200px;}
3 #demo3{ background: green;}
4 .demo3{ background: blue;}
5 </style>
1 <div class="demo3" id="demo3" style="background: yellow !important"> </div>
-
1 -<script type="text/javascript">
2 document.getElementById("demo3").style.background="black !important";
3 </script>
-
IE6,7 显示红色
FF2+ 显示黄色
Opera9+ 显示黑色
Safari 显示黑色
-
-解释下上面两个例子:
-JS控制的style对象 实际就是内联样式style,这个没错
-
但是对于 JS控制style对象属性值里增加的!important 三个浏览器却给出了不同的结果:
-IE:JS控制style对象属性值完全覆盖内联style属性值,不支持Element.style.property="value !important",将报错:参数无效。
FF2+:不完全支持
Element.style.property="value !important" : !important无效,不会报错,
如果内联style属性值无!important,则完全覆盖,有!important
则内联style属性优先级最高,不会受JS控制style的任何影响。
Opera9+ :JS控制style对象属性值完全覆盖内联style属性值,支持Element.style.property="value !important"。
Safari:支持Element.style.property="value !important" ,如果内联style属性值无!important,则完全覆盖,有!important 则内联style属性优先级最高,不会受JS控制style的任何影响。