16
2019
11

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/post/7765.html

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

gzh

微信扫码关注

更新实时通知

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。