CSS之!important属性的用法

关于CSS中的使用技巧有很多, 今天主要探讨CSS中的!important属性用法。在CSS的使用中,遇到最多的问题就是不同浏览器之间的兼容问题。 由于IE并不严格执行W3C标准, 而又几乎垄断了浏览器市场。 所以作为一名合格的网站制作人员, 必须要针对不同的浏览器进行微调。 实现不同浏览器之间兼容的方法有很多, 比如利用JS探测用户的浏览器类型,从而调用不同的样式表。 或者就是利用!important 属性来实现微调的效果。

关于CSS中的使用技巧有很多, 今天主要探讨CSS中的!important属性用法。在CSS的使用中,遇到最多的问题就是不同浏览器之间的兼容问题。 由于IE并不严格执行W3C标准, 而又几乎垄断了浏览器市场。 所以作为一名合格的网站制作人员, 必须要针对不同的浏览器进行微调。 实现不同浏览器之间兼容的方法有很多, 比如利用JS探测用户的浏览器类型,从而调用不同的样式表。 或者就是利用!important 属性来实现微调的效果。

例一

使用!important提升CSS样式的优先级别

CSS代码

#box {
    color:red !important;
    color: blue;
}

HTML代码

<div id="Box"> 在不同的浏览器下,这行字的色应该不同!</div>

这个例子应该是大家经常见到的important的用法了,在IE6环境下,这行字是蓝色,在IE7及firefox下,为红色。这是因为IE6不认important(即不认 !importmant 但是还是认!important前面的color:red),并且color:blue放在color:red的后面(后面的css定义覆盖了前面的color:red),所以在IE6下字为蓝色;而在IE7及firefox下important级别优先,所以color:red !important;和color:blue;的前后顺序没有关系,在IE7及firefox下red跟blue谁先谁后都没有关系。

例二

使用!important改变DIV字体的默认颜色

CSS代码

/* 设置两个DIV中的字体为红色 */
#box div{
    color:red;
}
.important_false{
    color:blue;
}
.important_true{
    color:blue !important;
}

HTML代码

<div id="Box">
    <div class="important_false">这一行末使用important</div>
    <div class="important_true">这一行使用了important</div>
</div>

例二中,CSS代码第一行设定了box里面所有div中字体色为红色,第二行和第三行都用class重新定义了自身div的字体色为蓝色,不同的是,第二行末使用important,而第三行使用了!默认情况下,class的优先级小于id,所以,第二行中即使用class重定义了自身样式,也无法生效,所以继承父级属性,这行字还是红色!但是,第三行中,用了important提升优先级(或看成强制重定义),所以这里的css得以生效,这行字变为了蓝色!

例三

只有当同时出现两个同名的样式时,才可以这样用,就像下面这样的。

.myclass{
 margin-left:20px!important;
 margin-left:40px;
}

因为使用!important属性就是为了提升指定CSS元素的优先级,也就只有相同的属性才需要提升优先级。

后来我看到了!important这个属性,这个属性其实也是css规范中的,结果IE6愣是不支持,也正因为它不支持,才让很多的CSSer们找到了解决的方法。一般来讲,在css中,如果在同一个css块中写下两个同样的属性,那么其实是按照最下面的来执行的,比如说: 

.home{ 
    margin-left:20px; 
    margin-left:40px; 
}

那么在执行的时候其实是按照40px来执行的,!important的出现就是为了让用户自己设置被执行语句的优先级。如果把上面的语句改为: 

.home{ 
    margin-left:20px!important; 
    margin-left:40px; 
}

那么在火狐、google浏览器以及IE7以上版本下将会按照20px来执行,而在IE6下却仍然按照40px来执行,因为IE6并不支持!important规范,我们就可以按照这个规则来满足IE6的设计需要,什么时候发现IE6和其他浏览器显示效果不同,那么就设置两个,在上面的一个加入!important标记,而下面的一句则不需要添加,这样IE6就按照下面的来执行了。资深的CSSer说:如今的CSS处处!important。这可都是天杀的IE6惹的祸,大家说IE6就是一坨代谢产物一点也不为过。

说明!important对火狐和IE7,8的作用是相同的,而IE6而显出了特殊的结果

#test{
    background:("a.png") no-repeat!important;
    background:url(ie6.gif) no-repeat
}

参考资料:

https://www.cnblogs.com/lykbk/archive/2012/08/09/huhu345545.html

https://www.chinaz.com/design/2008/1219/55237.shtml

学习,学习,再学习!学,然后知不足。 —— 列宁
1 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号