id选择器html
<div id="wrap"></div> #wrap{ background: black; }
类选择器算法
<div class="wrap"></div> .wrap{ background: black; }
标签选择器spa
div{ margin:0; }
属性选择器code
<input type="text"> [type=text] { background: black; }
伪类选择器orm
<ul> <li></li> <li></li> <li><a href=""></a></li> </ul> li:first-child { border:1px solid black; } li:last-child { border:1px solid red; } li:nth-child(2){ border:1px solid yellow; }
伪元素选择器htm
p::first-line { color: blue; text-transform: uppercase; }
群选择器
以,分隔(逗号分隔开须要修饰的模块名)blog
<div class="qun"> <p><span></span></p> <p></p> </div> .qun,span { margin:0; }
全局选择器
以*开头(星号标在大括号前,修饰了包含body全部的标签)get
* { margin:0; }
紧邻兄弟选择器(相邻选择器)
以+隔开相邻关系的元素,即第二个节点紧邻着第一个节点,而且拥有共同的父节点。input
<div class="qun"> <p class="first"> <span>第一</span> </p> <p>第二</p> /*修饰*/ <p>第三</p> </div> .first+p{ margin:0; }
通常兄弟选择器
以~隔开兄弟关系的元素,第二个节点在第一个节点后面的任意位置,而且这俩节点的父节点相同。it
<div class="qun"> <p class="first"> <span>第一</span> </p> <p>第二</p> /*修饰*/ <p>第三</p> /*修饰*/ </div> .first~p{ margin:0; }
子元素选择器
以>隔开父子级元素,子选择器只是选择元素的直接后代,即仅仅做用于第一个后代。
<div class="qun"> <p class="first"> <span>第一</span> </p> <p>第二</p> <p>第三</p> <span>第四</span> /*修饰*/ </div> .qun > span { color:black; }
后代选择器
以空格隔开包含关系的元素,选择元素的全部后代
<div class="qun"> <p class="first"> <span>第一</span> /*修饰*/ </p> <p>第二</p> <p>第三</p> <span>第四</span> /*修饰*/ </div> .qun span { color:black; }
!important > 内联 > ID选择器 > 类选择器 > 标签选择器。
优先级是由A
、B
、C
、D
的值来决定的,其中它们的值计算规则以下:
A = 1
, 不然A = 0
;B
的值等于ID选择器
出现的次数;C
的值等于类选择器
和属性选择器
和伪类
出现的总次数;D
的值等于标签选择器
和伪元素
出现的总次数 。例子:
#nav-global > ul > li > a.nav-link
套用上面的算法,依次求出A
B
C
D
的值:
A = 0
;B = 1
;C = (1 + 0 + 0) = 1
;D = (3 + 0) = 3
;上面算出的A
、B
、C
、D
能够简记做:(0, 1, 1, 3)
。
比较规则是: 从左往右依次进行比较 ,较大者胜出,若是相等,则继续往右移动一位进行比较 。若是4位所有相等,则后面的会覆盖前面的