在我们为元素添加样式的时候,或多或少会出现一个元素会有几个不同规则的样式。有#id的,有.class,直接标签元素的,还有各种组合起来的选择器。那CSS到底如何解决这些冲突呢,我们这次专门来探讨一下。

  CSS也称层叠样式,层叠(cascade)也就是说,将重复定义的样式,先通过重要度的筛选,再通过一定的规则,重新排列覆盖。而这个规则就是,选择器的特殊性。(重要度就不详细说明了,一般认为!important>行内样式>内联样式表>外联样式表>浏览器默认样式)

  特殊性

每种选择器都会默认分配一个数值,然后将一个规则的选择器数值相加,计算出其特殊性。

  选择器的特殊性有4个等级,a,b,c,d(正常来说,一个规则的选择器应该不会超过10个,这样我们可以转化成以10为基数计算特殊性)

  • a:行内样式,那么a = 1 。
  • b:ID选择器的总数 。
  • c:类、伪类和属性选择器的总数。
  • d:类型选择器和伪元素选择器总数。

或许这样说,有点难以理解,我们可以举栗子。

style = ""             ------------ 特殊性:1000

#warp #content{}       ------------ 特殊性:200

#content .smClass{}    ------------ 特殊性:110

div.#content{}         ------------ 特殊性:101

#content{}             ------------ 特殊性:100

p.class1.class2        ------------ 特殊性:21

p.class1               ------------ 特殊性:11

.class                 ------------ 特殊性:10

div p{}                ------------ 特殊性:2

p{}                     ------------ 特殊性:1

当然,若一个元素的两套规则特殊性相等,则后定义的规则优先。

通过这样一番描述,相信大家对选择器的特殊性有了一定的了解。所以当出现了一些样式定义却未显示的情况时,要看一下是否有样式覆盖的情况,合理使用样式表选择器的优先级。

大家赶紧动手去试试吧!

(若有不准确或错误的地方,希望大家指出,我会赶紧修改)

CSS选择器的特殊性的更多相关文章

  1. css选择器的特殊性值

    今天从前端那拿来写好的页面,就开始动工,首先,照旧处理导航栏高亮的问题, 说到处理高亮的问题,不同的人会有不同的方法,比如: //类名为nav的元素下的第n个a元素 .nav a:nth-of-typ ...

  2. CSS选择器的特殊性和LOVE HA

    在CSS中当几个相同的选择器对同一个元素有不同的规则时,该怎么应用这些规则呢? 答案就是:CSS特殊性(CSS specificity) 选择器特殊性有选择器本身组成,特殊性由4个数值表述:0, 0, ...

  3. 深入理解CSS选择器优先级的计算

    选择器的优先级关系到元素应用哪个样式.在CSS2.1的规范(http://www.w3.org/TR/2009/CR-CSS2-20090908/cascade.html#specificity)中是 ...

  4. css优先级之特殊性

    在前端开发的时候,css构建样式规则,这个时候我们会遇到一个问题:当我们对同一个元素做多个样式规则,其中发生了冲突的时候,css是如何选择最终呈现的样式 如下: div{ color:red; } d ...

  5. CSS选择器特殊性与重要性

    特殊性 在编写CSS代码的时候,我们会出现多个样式规则作用于同一个元素的情况,例如 <!-- HTML --> <header> <nav class="nav ...

  6. CSS选择器与CSS的继承,层叠和特殊性

    什么是选择器?选择器{样式;},在{}之前的部分就是"选择器","选择器"指明了{}中的"样式"的作用对象,也就是"样式" ...

  7. CSS选择器中的特殊性

    我们来看一下一个简单的例子: <!DOCTYPE html><html lang="en"><head> <meta charset=&q ...

  8. CSS选择器的权重与优先规则?

    我们做项目的时候,经常遇到样式层叠问题,被其他的样式覆盖,或者写的权重不高没效果,对权重没有具体的分析,做了一个总结. css继承是从一个元素向其后代元素传递属性值所采用的机制.确定应当向一个元素应用 ...

  9. css选择器万年不变的优先级和权重

    我们在使用CSS对网页元素定义样式时经常会遇到这种情况:要对一般元素应用一般样式,然后在更特殊的元素上覆盖它们.那么我们怎么样来保证我们所新定义的元素样式能覆盖目标元素上原有的样式呢? 在CSS中,会 ...

随机推荐

  1. WIN32编程杂记(一)

    1.UNREFERENCED_PARAMETER的用处 作用:告诉编译器,已经使用了该变量,不必检测警告! 在VC编译器下,如果您用最高级别进行编译,编译器就会很苛刻地指出您的非常细小的警告.当你生命 ...

  2. Entity Framework学习 - 1.连接数据库

    1.添加项,选择ADO.NET实体数据模型 2.选择从数据库生成 3.建立数据库连接 4.选择要关联的表 点击完成,数据库已连接完毕,并生成了对应的Model

  3. JVM 问题排查常用工具

    一. jmap // 打印jvm的堆状况,主要是年轻代和老年代信息 jmap -heap <pid> 如: Heap Configuration: MinHeapFreeRatio = M ...

  4. POJ1037A decorative fence(好dp)

    1037 带点组合的东西吧 黑书P257 其实我没看懂它写的嘛玩意儿 这题还是挺不错的 一个模糊的思路可能会好想一些 就是大体的递推方程 dp1[][]表示降序 dp2[][]表示升序 数组的含义为长 ...

  5. bzoj2436

    不难发现两边的活动是交替进行的,我们可以dp 先对时间离散化,设f[i,j]到时间i一个会场选j个活动,另一个会场最多有多少活动,那么f[i,j]=max(f[k,j]+s[k,i],f[k,j-s[ ...

  6. 手动配置gradle

    最近从github倒入项目,运行的特别慢gradle配置有问题,解决方法: 1.C:\android\demo\hellocharts-android-master\gradle\wrapper 目录 ...

  7. RecyclerView 结合 CardView 使用(二)

    上一篇的基础上,修改了,CardView的布局和点击效果 总结: CardView的奇葩属性 :app:cardPreventCornerOverlap="false" 和园角边框 ...

  8. bq24075 锂电池 充电电路分析

     bq24075 锂电池 充电电路分析 本文主要是分析bq24075锂电池充电芯片电路,知道其大致是怎么工作的,其中的一些电阻该如何配置. -- 深圳 南山平山村 曾剑锋 一.参考文章: . NTC热 ...

  9. HDU 1213 How Many Tables (并查集,常规)

    并查集基本知识看:http://blog.csdn.net/dellaserss/article/details/7724401 题意:假设一张桌子可坐无限多人,小明准备邀请一些朋友来,所有有关系的朋 ...

  10. AngularJS:实现动态添加输入控件功能(转)

    http://www.cnblogs.com/ilovewindy/p/3849428.html <!DOCTYPE html> <html> <head> < ...