CSS选择器

141 阅读4分钟

1.传统CSS2.1选择器

(1)标签选择器

标签选择器称为元素选择器、类型选择器,它直接使用元素的标签名当作选择器,将选择页面上所有该种标签。

例如:span{
color: red;
  }
b{
   color:  green;
}

选择所有的span标签,b标签

标签选择器将选择页面上所有的该种标签,无论这个标签所处的位置深浅,“覆盖面非常大”,所以通常用于标签的初始化。

例如:ul{
  /*去掉无序列表的小圆点*/
   list-style:none;
}
a{
     /*去掉超级链接的下划线*/
text-decoration: none;
}

(2)id选择器

标签可以有id属性,是这个标签的唯一标识,id的名称只能由字母、数字、下划线、短横构成,且不能以数字开头,字母区分大小写,但习惯上一般为小写字母,同一个页面上不能有相同id的标签。

例如: < p id="para1">段落< /p>

CSS选择器可以使用井号#前缀,选择指定id的标签

(3)复合选择器

选择器名称       示例 示例的意义

后代选择器 .box  .spec 选择类名为box的标签内部的类名为spec的标签

交集选择器 li.spec 选择既是li标签,也属于spec类的标签

并集选择器 ul, ol  选择所有ul和ol标签

CSS选择器中,使用空格表示“后代”,后代并不一定是子标签,后代选择器可以有很多空格,隔开好几代。

并集选择器中的逗号表示”,“分组。

选择器可以任何搭配、组合,从而形成复合选择器,必须要能一目了然的看出选择器代表的含义。

2.  CSS3新增选择器

(1)元素关系选择器

        名称          举例            意义

子选择器              div>p           div的子标签p

相邻兄弟选择器        img+p           图片后面紧跟着的段落将被选中

通用兄弟选择器        p~span         p元素之后的所有同层级span元素

子选择器,当使用>符号分隔两个元素时,它只会匹配那些作为第一个元素的直接后代元素,即两个标签为父子关系。

相邻兄弟选择器(+)介于两个选择器之间,当第二个元素紧跟在第一个元素之后,并且两个元素都是属于同一个父元素的子元素,则第二个元素将被选中。

通用兄弟选择器(),ab选择a元素之后所有同层级 b元素,通用兄弟选择器从IE7开始兼容。

(2)序号选择器

举例 意义

:first-child 第一个子元素

:last-child 最后一个子元素

:nth-child(3) 第3个子元素

:nth-of-type(3) 第3个某种类型子元素

:nth-last-child(3) 倒数第3个子元素 

:nth-last-of-type(3) 倒数第3个某类型子元素

:nth-child()可以选择任意序号的子元素,还可以写成an+b的形式,表示从b开始每a个选一个。

2n+1等价于odd,表示奇数。

2n等价于even,表示偶数。

:nth-of-type()将选择同种标签指定序号的子元素。

(3)属性选择器

img[ alt] 选择有alt属性的img标签

(4)CSS3伪类

伪类是添加到选择器的描述性词语,指定要选择的元素的特殊状态,超级链接拥有4个特殊状态。

伪类                    意义

:empty                  选择空标签

:focus                  选择当前获得焦点的表单元素

:enabled                选择当前有效的表单元素

:disabled               选择当前无效的表单元素

:checked                选择当前已经勾选的单选按钮或者复选框

:root                   选择根元素,即<html>标签

a:link                   没有被访问的超级链接

a:visited                已经被访问过的超级链接

a:hover                  正被鼠标悬停的超级链接

a.active                 正被激活的超级链接(按下按键但是还没有松开按键)

      a标签的伪类书写,要按照“爱恨准则”的顺序,否则会有伪类不生效。

LOVE HATE

(5)伪元素

  伪元素表示虚拟动态创建的元素,伪元素用双冒号表示。

::before创建一个伪元素,其将成为匹配选中的元素的第一个子元素,必须设置content表示其中的内容。

::after创建一个伪元素,其将成为匹配选中的元素的最后一个子元素,必须设置content表示其中的内容。

::selection CSS伪元素应用于文档中被用户高亮的部分(使用鼠标圈选的部分)。

::first-letter会选中块级元素中第一行的第一个字母。

::first-line会选中块级元素第一行全部文字。

3.层叠性和选择器权重计算

层叠性指的是多个选择器可以同时作用于同一个标签,效果叠加。

CSS有严密的处理冲突的规则

id权重>class权重>标签权重

复杂选择器可以通过(id的个数,class的个数,标签的个数)的形式,计算权重。

!important将某个选择器的某条属性提升权重。