`
魏祖清
  • 浏览: 180263 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

!important认识

    博客分类:
  • css
阅读更多
在设计《网页设计师》页面的时候,有一个问题一直困扰着我,主菜单在IE和其他(Mozilla、Opera等)浏览器里显示的效果偏差2px。

[转]web标准设计-!important的使用方法 - lovelydinasour@126 - 网易技术检验博客
这是因为IE对盒之间距离的解释的bug造成的(参考onestab的" 浮动模型的问题 ")。我一直没有解决这个问题,直到我翻译 " 表格对决CSS--一场生死之战 "时,作者的一个技巧提示帮我找到了解决的方法:用!important。
!important是CSS1就定义的语法,作用是提高指定样式规则的应用优先权(参见:W3.org的解释)。语法格式{ sRule!important },即写在定义的最后面,例如:
box{color:red !important;}
最重要的一点是:IE一直都不支持这个语法,而其他的浏览器都支持。因此我们就可以利用这一点来分别给IE和其他浏览器不同的样式定义,例如,我们定义这样一个样式:
.colortest {  border:20px  solid #60A179 !important; border:20px  solid #00F; padding: 30px; width : 300px; }
在Mozilla中浏览时候,能够理解!important的优先级,因此显示#60A179的颜色:
[转]web标准设计-!imp<wbr>ortant的使用方法 - lovelydinasour@126 - 网易技术检验博客
在IE中浏览时候,不能够理解!important的优先级,因此显示#00F的颜色:
[转]web标准设计-!imp<wbr>ortant的使用方法 - lovelydinasour@126 - 网易技术检验博客
可以看到,利用!important,我们可以针对IE和非IE浏览器设置不同的样式,只要在非IE浏览器样式的后面加上!important。因此,上面提到的我的主页2px的显示差别也轻松解决:
PADDING-TOP: 11px !important;
PADDING-TOP: 9px;
!important必定成为CSS布局的利器,请记住和掌握它吧:)

!important并不是不被IE识别:
很多人,包括很多网站(我所见过的所有网站,包括国内著名的‘网页设计师’网站),都说important是不被IE所支持和认识的,可是真的是这样吗?看了下边的两个例子,也许你会改变一些看法!
例一:
CSS
程序代码
#box {
color:red !important;
color:blue;
}
HTML
程序代码
<div id="Box"> 在不同的浏览器下,这行字的色应该不同!</div>
这个例子应该是大家经常见到的important的用法了,在IE环境下,这行字是蓝色,在firefox下,为红色,其用法不再多说了,看下一个例子。
例二:
CSS
程序代码
#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得以生效,这行字变为了蓝色!
从这个例子,得以证明,ie对important的并不是不支持!
那么为什么很多人都说ie不认识它呢?我想应该是大家实战中可能都没有遇到例子中的情况: 当你想提升class的优先级时怎么办?
也就是说大家可能都忽略了它的这一作用,只了解在命名为同一个元素的CSS代码块中,用它来提升排列顺序相对靠前的代码的优先级(例一)!
通过上边两个例子,得以总结:
important对 一个良好(或者是标准)的浏览器来说,不仅仅是从顺序上提升代码的优先级,还可以用来提升class的优先级(比如firefox),但是从IE对前者的不支持可以看出,这只是IE的一大BUG,而不能说它“不认识、不支持”!

下面是另一位网友对!important的解释:(我也认可,很经典)
1、css在同一个大括号内是让firefox优先认领,也就是说只有在同一括号内对同一样式作两个不同定义的时候ie不得不忽略掉它(!important,即IE在此情况下遵循的是CSS默认的后定义样式覆盖先定义的样式的原则),而不是像网上大多介绍的那样IE是不认识或不支持!improtant。

2、另外,其实!important还有保护的作用,在任何需要保护的样式定义后面插入它可以避免被基于CSS特性的属性覆盖。例如:#nav a{color:red;} a{color:teal !important}
通常,一个带有id名#nav的元素里的一个链接会变设设位红色,因为这个#nav a比标签样式具体的多,但因为包含了!important,所以#nav a中定义的color样式将永远胜出。这样一来,对!important的理解也就更深入了。
嗯,这样才叫!important嘛。

3、最后再补充下css的优先级:
一个标签选择器1分(例如:div{font-size:12px})
一个类选择器10分(例如:.fl{float: left})
一个id选择器100(例如:#nav{padding: 4px})
一个行内样式1000(例如:<div style="color:#fedded"></div>)
!important就当无限分吧,呵呵。分值相同时按后出现优先的原则算(即后定义的样式将会覆盖先前定义的样式)
分享到:
评论

相关推荐

    对CSS选择器权重的认识(亲测)

    important有时会出现一些怪异的表现,如后面的同名样式属性可能会覆盖前面的!important声明,但总体上IE-6是支持!important的。 例如,p{font-size:18px!important;font-size:12px;}在IE-6中表现为例,font-size:12...

    CSS Hack 经验分享

    然而,IE6 并不认识 `!important` 和 `*+html` 语法,因此它只会应用 `background: blue` 这一行。而在 IE7 中,`*+html` 和 `!important` 都被识别,且 `*+html` 的优先级高于 `!important`,所以最终 IE7 中的背景...

    区别各种IE浏览器的css写法

    由于IE6不认识“!important”,通过“*”设置的样式会覆盖“!important”。 ```css #tip { *background: black; /* IE7背景变黑色 */ background: orange !important; /* IE6背景变橘色 */ } ``` 最后,区分IE6...

    让IE6支持important的注意事项

    IE6真的不认识不支持!important吗?答案是:No! 现在举几个例子说明这个问题,以下面的 XHTML 代码为例: 复制代码代码如下: ”list”&gt; ”first”&gt;这里是第一行文字&lt;/li&gt; 那这里就是第二行文字咯&lt;/li&gt; 这里应该是第...

    CSS兼容大全IE5,IE5.5,IE6,IE7,Firefox,Opera,Safari等浏览器

    解释一下:上面的 CSS 在 Firefox 中,它是认识不了后面的那个带星号*的东西的,于是将它过滤掉,不予理睬,解析得到的结果是:div{background:green},于是理所当然这个 div 的背景是绿色的。在 IE6 中呢,它两个 ...

    What-Knowledge-Is-Important-to-A-Software-Professional

    调查结果强调了一些当前观念中已经认识到的主题重要性,同时也揭示了某些有时被强调不足或过度的主题。例如,调查显示教育计划过于强调数学、化学和物理,而这些科目对实践者的重要性似乎并不如教育计划所强调的那样...

    cssHack样式解析

    由于不同的浏览器对 CSS 的解析认识不同,会导致生成的页面效果不同。因此,我们需要针对不同的浏览器写不同的 CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。 CSS Hack 的...

    78 Important Questions Every Leader Should Ask and Answer

    ### 《78 Important Questions Every Leader Should Ask and Answer》关键知识点解析 ...通过系统地思考和解答书中提出的每一个问题,领导者能够更加全面地认识自己在组织中的作用与责任,最终实现个人及团队的成功。

    CSS教程:认识层叠规则互相作用

    important`声明的优先级高于正常规则,不受此规则影响。 举例来说,如果你有以下CSS: ```css .warning { color: red; } p { color: green; } ``` 然后在HTML中有这样一个段落: ```html 层叠和继承的规则如何实现...

    what knowledge is important to a software professional-may2000

    本文将深入探讨《对软件专业人员重要的知识》("What Knowledge Is Important to a Software Professional—May 2000")一文中提到的关键知识点,并结合当前软件行业的实践进行分析。 #### 调查背景与目的 该研究...

    认识css样式

    【标题】:“认识CSS样式” CSS(Cascading Style Sheets)是层叠样式表的缩写,它是网页设计中用于控制网页布局和外观的关键技术。CSS允许我们将样式信息与HTML或XML文档内容分离,使页面设计更加灵活和可维护。...

    div+css布局时的浏览器兼容问题

    这段描述提示读者将要了解的内容将会帮助他们纠正一些常见的错误认识,并且能够深入了解div+css布局时可能遇到的一些兼容性问题。 #### 知识点详解 1. **DOCTYPE的影响**: - DOCTYPE是文档类型声明,不同的...

    2015年春八年级英语下册 Unit 2 Lesson 8 Why Are Plants Important学案(无答案)(新版

    标题和描述中提到的是中学英语课程的一个学习方案,聚焦于"2015年春八年级英语下册 Unit 2 Lesson 8 Why Are Plants Important"的内容。这是一篇关于植物重要性的讨论,属于冀教版教材的一部分。标签“课件”表明这...

    Why SMEs in emerging economy are reluctant to provide employee training even though they know it is important:Evidence from China

    本文探讨了中国中小企业(SMEs)不愿意为员工提供培训的原因,尽管它们认识到培训的重要性。文章中提到的研究主要基于计划行为理论(Theory of Planned Behavior),以533家中小企业为样本,研究了企业CEO提供员工...

    运动会英文口号精选.doc

    2. "It's nice to be important, but it's more important to be nice." 这句话强调在比赛中友善和尊重的重要性,胜过单纯的竞争。 3. "Join it and enjoy it!" 强调参与的乐趣,鼓励人们积极参与运动。 4. "Start ...

    web前端面试题.pdf

    alt属性是图片属性,让搜索引擎认识你的图片。当图片不显示的时候显示。title属性是网站标题,是SEO中最重要的属性。 14. 使用CSS精灵 CSS精灵可以把一堆小的图片整合到一张大的图片上,减轻HTTP的请求数量,能够...

    DIV-CSS-必考题.docx

    这里为了照顾不认识 min-height 的 IE6 可以这样定义:div { height:auto!important; height:200px; min-height:200px; }。 知识点解析:在 Web 标准中,固定高度值的容器是不会被撑开的,但是 IE6 里可以被撑开。...

    21河海大学复试【万能模板】自我介绍、专业认识、学业规划.docx

    It is an extremely important subject for studying the natural phenomena, properties, and changing laws of the ocean, as well as the knowledge system related to the development and utilization of the ...

    web前端面试题及答案【前端开发面试题及答案整理】.docx

    1. **对Web标准及W3C的理解与认识** Web标准主要包括HTML、CSS和JavaScript,旨在使网页更具可访问性、可维护性和跨平台兼容性。W3C(万维网联盟)是制定这些标准的组织。遵循Web标准意味着确保标签正确闭合,使用...

    前端面试题

    #### 一、WEB标准及W3C的理解与认识 - **WEB标准**:指的是一系列标准的集合,它包括了HTML、CSS、JavaScript等技术规范,由W3C组织制定。这些标准旨在使Web更加标准化、易于访问和维护。 - **W3C**:World Wide ...

Global site tag (gtag.js) - Google Analytics