css中!important有什么用 的作用是什么
提升指定样式规则的应用优先权。
IE6及以下浏览器有个比较显式的支持问题存在,!important在同一条规则集里不生效。请看下述代码:
示例代码:
div { color: #f00 !important; color: #000; }
在上述代码中,IE6及以下浏览器div的文本颜色为#000,!important并没有覆盖后面的规则;其它浏览器下div的文本颜色为#f00
IE6及以下浏览器要使!important生效,可用以下代码:
示例代码:
div { color: #f00 !important; } div { color: #000; }
在上述代码中,IE6及以下浏览器中div的文本颜色表现与其它浏览器一致,都为#f00
IE6及更早浏览器下,!important在同一条规则集内不生效。
示例:
<!DOCTYPE html> <html> <head> <title>important的使用</title> <meta name="content-type" content="text/html; charset=UTF-8"> <style> .button { position: relative; background-color: #4CAF50; border-radius:8px; font-size: 28px; color: #FFFFFF; padding: 20px; width: 200px; text-align: center; transition-duration: 1.5s; overflow: hidden; cursor: pointer; } .button:hover{ box-shadow:0 4px 8px 0 rgba(0,0,0,0.1),0 6px 20px 0 rgba(0,0,0,0.299); } .button:after { content: ""; background: #90EE90; display: block; position: absolute; padding-top: 300%; padding-left: 350%; margin-left: -20px!important; margin-top: -120%; opacity: 0; transition:1s; } .button:active:after { padding: 0; margin: 0; opacity: 1; transition:0s; } </style> </head> <body> <button class="button">Click Me</button> <p>第31行的margin-left设置了!important,因此后面的第39行是不能更改margin-left的值。 </body> </html>
默认情况下,class的优先级小于id,所以,第二行中即使用class重定义了自身样式,也无法生效,所以继承父级属性,这行字还是红色!
但是,第三行中,用了important提升优先级(或看成强制重定义),所以这里的css得以生效,这行字变为了蓝色!从这个例子,得以证明,ie对important的并不是不支持!
那么为什么很多人都说ie不认识它呢?我想应该是大家实战中可能都没有遇到例子中的情况: 当你想提升class的优先级时怎么办?
也就是说大家可能都忽略了它的这一作用,只了解在命名为同一个元素的CSS代码块中,用它来提升排列顺序相对靠前的代码的优先级(例一)!
通过上边两个例子,得以总结:
important对 一个良好(或者是标准)的浏览器来说,不仅仅是从顺序上提升代码的优先级,还可以用来提升class的优先级(比如firefox),但是从IE对前者的不支持可以看出,这只是IE的一大BUG,而不能说它“不认识、不支持”!
然而,不管怎么样,IE的这一大BUG帮助我们解决了很多兼容性问题,这显然不是件坏事!
本站声明:网站内容来源于网络,如有侵权,请联系我们https://www.qiquanji.com,我们将及时处理。
微信扫码关注
更新实时通知