css有哪些选择器,优先级如何计算?

一、背景介绍

什么是CSS选择器?

要使用css对HTML页面中的元素实现一对一,一对多或者多对一的控制,这就需要用到CSS选择器。HTML页面中的元素就是通过CSS选择器进行控制的。

二、知识剖析

CSS选择器可分为以下几种。

1、类别选择器

类别选择器根据类名来选择,前面以“.”来标志。

在HTML中,元素可以定义一个class的属性,并且多个元素都可以重复应用这个属性。

2、标签选择器

一个完整的HTML页面是有很多不同的标签组成,如:body,div,p,ul,li,而标签选择器,则是 决定哪些标签采用相应的css样式。

3、ID选择器

ID选择器可以为标有特定ID的HTML元素制定特定的样式。根据元素ID来选择元素,具有唯一性,这意味着同一ID在同一文档页面中只能出现一次。例如,你将一个元素的id取值为“name”,那么在同一页面你就不能再将其他元素id取名为“name”了。

前面以“#”号来标志,在样式里面可以这样定义:

4、通用选择器

用过“*”号来表示。如下代码表示所有元素的内外边距都为0,所有的字体都为微软雅黑。他可以清除不同浏览器的默认样式。

同时通用选择器还可以和后代选择器组合。如下表示所有p元素后代的所有元素都应用这个样式。

注意:但是如果你在p标签里嵌套了一个p标签,就会出现浏览器不能解析的情况,因此要避免这种情况发生。

5、后代选择器

后代选择器也称为包含选择汽车,用来选择特定元素或元素组的后代,将对父元素的选择放在前面,对子元素的选择放在后面,中间加一个空格分开。后代选择器中的元素不仅仅只能有两个,对于多层子线后代关系,可以有多个空格加以分开。

如下例子定义了所有class属性为father的元素下面的class属性为child的颜色为红色。


6、子选择器

请注意这个选择器与后代选择器的区别,子选择器只是选择元素的直接后代,即仅仅作用于第一个后代。后代选择器通过空格来进行选择,而子选择器是通过“>”进行选择。

7、伪类选择器

即链接样式。a元素的伪类,存在4中不同的状态:link、visited、active、hover。如

8、群组选择器

具有相同样式的标签分组显示,将具有多个相同属性的元素,合并群组进行选择,定义同样的css属性,这大大的提高了编码效率,同时也减少了css文件的体积。

9、相邻同胞选择器

如一个标题h1元素后面紧跟了两个段落p元素,我们想定位第一个段落p元素,对它应用样式,就可以使用相邻同胞选择器。两个元素之间用“+”进行连接。如

三、常见问题

问题一:对多个选择器使用的优先级是怎么进行计算的?

问题二:当不同类别的多个选择器混合使用个怎么计算优先级?

四、解决方案

问题一:对多个选择器使用的优先级是怎么进行计算的?

对于不同类别的选择器,以以下原则进行排序:

1、在属性后面使用!important会覆盖页面内任何位置定义的元素样式。

2、作为style属性写在元素内的样式

3、id选择器

4、类选择器

5、标签选择器

6、通配符选择器

7、浏览器自定义或子元素集成父类的样式

将上面的稍微总结一下就是:

!important>行内样式>ID选择器>类选择器>标签>通配符>继承>浏览器默认属性

同一级别中后写的会覆盖先写的样式。

问题二:当不同类别的多个选择器混合使用个怎么计算优先级?

有一个简单的算法,设

a.内联样式表的权值为1000

b.ID选择器的权值为100

c.class类选择器的权值为10

d.HTML标签选择器的权值为1

我们可以把选择器中规则对应多加法,比较权值,如果权值相同那就后面的覆盖前面的。如图,div.test1.test3的权值是1+10+10=21,而.test1.test2.test3的权值是10+10+10=30,所以div会应用.test1.test2.test3变成绿色。

五、编码实战

六、扩展思考

问题一:如果是十一个class选择器和一个ID选择器,系统会以哪个优先?

由于视频中的例子不是特别好,所以我换了一个例子。如图

代码显示的结果是黄色正方形。实际上权值不是按上述数字表示的,数字只是为了简便地表达不同选择器之间的先后关系,再多的class也比不过一个id。

问题二:子选择器和后代选择器的区别?

这个在前面有讲到,子选择器只是选择元素的直接后代,即仅仅作用于第一个后代,后代选择器则可作用于孙子代、曾孙子代。后代选择器通过空格来进行选择,而子选择器是通过“>”进行选择。

七、参考文献

参考一:百度百科

参考二:博客园

八、更多讨论

讨论点一:我们经常会遇到写了一个样式后没显示的情况,如何判断是否是优先级的问题?

讨论点二:在用css选择器的时候我们还会遇到什么问题?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容