CSS 选择器

CSS 选择器

id 和 class 的使用场景

id 具有唯一性,class 具有普遍性,可以多次使用。

id 是唯一的,最好不要用。除非确保网页中某个元素只有一个。

id 权重是100,class 权重是10。

id 是一个标签,用于区分不同的结构和内容。

class 是可重复的,尽量在结构内部使用,通常用于样式定义。

特定一组元素应用样式就用 class。

id 用 #id,class 用 .class 。

CSS 选择器

基本选择器

通配符选择器 *
id 选择器 #id
类选择器 .classname
元素选择器 element
后代选择器 .classname .classname,#id .classname,.classname element
子元素选择器 element>element
相邻兄弟元素选择器 element + element 
群组选择器 (.classname,.classname,.classname)

伪类选择器

a:visted,a:link,a:hover,a:focus,a:active,a:checked,
:after,:before

属性选择器

a[property]{}

选择器的优先级

MDN 优先级

优先级就是分配给指定的CSS声明的一个权重,它由 匹配的选择器中的 每一种选择器类型的 数值 决定。

而当优先级与多个CSS声明中任意一个声明的优先级相等的时候,CSS中最后的那个声明将会被应用到元素上。

当同一个元素有多个声明的时候,优先级才会有意义。因为每一个直接作用于元素的CSS规则总是会接管/覆盖(take over)该元素从祖先元素继承而来的规则。

优先级,指CSS样式在浏览器中被解析的先后顺序。

id选择器优先级很高,权值为100
class、属性和伪类选择器的权值为10
标签选择器权值为1
在比较样式的优先级时,只需统计选择符中的id、class和标签名的个数,然后把相应的权值相加即可,最后根据结果排出优先级
权值较大的优先级越高
权值相同的,后定义的优先级较高
样式值含有!important,优先级最高

浏览器CSS匹配不是从左到右进行查找,而是从右到左进行查找。
比如DIV#divBox p span.red{color:red;},浏览器的查找顺序如下:先查找html中所有class='red'的span元素,找到后,再查找其父辈元素中是否有p元素,再判断p的父元素中是否有id为divBox的div元素,如果都存在则匹配上。
浏览器从右到左进行查找的好处是为了尽早过滤掉一些无关的样式规则和元素。

a:link, a:hover, a:active, a:visited 的顺序

link和visited必须在最前面,且没有先后顺序,否则link或visited的效果将被覆盖。

a:hover 必须被置于 a:link 和 a:visited 之后,才是有效的。

link和visited称为静态伪类,只能应用于超链接。

focus、hover、active 这三个伪类必须是focus、hover、active的顺序,因为在focus状态下,也需要触发hover和active,而要触发active一定要先触发hover,所以active要放在hover后面。

hover、active、focus称为动态伪类,可应用于任何元素,但IE7-浏览器不支持:focus,:hover和:active在IE6-浏览器下只支持给a标签设置。

所以最终的顺序只有两种:link、visited、focus、hover、active或visited、link、focus、hover、active。

选择器举例

#header{
    // id 选择器 header
}
.header{
    //class 选择器 header
}
.header .logo{
    //.header 类的子元素里所有 .logo 的类
}
.header.mobile{
    // 包含 header 和 mobile 的元素,同时包含
}
.header p, .header h3{
    //header 类下的所有 p 元素以及 h3 元素
}
#header .nav>li{
    //id 为 header 的元素下的类名为 nav 元素的子元素 li,只到子代。
}
#header a:hover{
    //id 为 header 的元素下的所有 a 链接 鼠标划过时的样式。
}
#header .logo~p{
    //id 为 header 的元素下类名为 logo 的元素下,子代元素里所有的 p 元素。
}
#header input[type="text"]{
    //id 为 header 的元素下所有带有 type="text" 的 input 元素。
}

伪类选择器

a:visted,a:link,a:hover,a:focus,a:active,a:checked,
:after,:before

div :first-child 和 div:first-of-type 的作用和区别

div :first-child //div 的第一个子元素。
div :first-of-type //匹配所有子元素中某个类型的第一个。

如果所有的子元素都是不一样的,那么所有的子元素都将匹配到。

分析原因

渲染后如下所示:


first-child
first-child

1.父元素下的第一个子元素就是 p ,故渲染正确。
2.一共有两种类型的元素,一个是 p ,一个是 h3。p只有一个,它起效果。
h3 有两个,但只对第一个起作用(bb)。

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

推荐阅读更多精彩内容

  • 1. class 和 id 的使用场景: id:id选择器,使用#name定义(name为id名,可任意取名),使...
    石林涛阅读 365评论 0 1
  • 其实平时用得多的选择器无非也就是那么几个,时间久了,许多不常用的选择器就慢慢忘记了。为了不让自己忘记这些选择器,今...
    盛夏晚清风阅读 1,814评论 0 5
  • class 和 id 的使用场景? class 重在样式的复用,重普遍性。id重在划分样式区域,可以作为样式表中的...
    南山码农阅读 369评论 0 0
  • 1 .class 和 id 的使用场景? .class,类选择器。类选择器可以定义多个元素。当你想定义一组元素以相...
    饥人谷_邵征鹏阅读 363评论 0 0
  • 序 在日常开发中,app难免会发生崩溃。简单的崩溃还好说,复杂的崩溃就需要我们通过解析Crash文件来分析了,解析...
    Mr_Baymax阅读 2,467评论 0 2