CSS3选择器——属性选择器、关系选择器、结构化伪类选择器、伪元素选择器、伪链接

属性选择器

  属性选择器可以根据元素的属性及属性值来选择元素。CSS3中新增了 3 种属性选择器:E[att^=value]、E[att$=value] 和 E[att*=value]

1.E[att^=value] 属性选择器

  E[att^=value] 属性选择器是指选择名称为 E 的标记,且该标记定义了 att 属性,att 属性值包含前缀为 value 的子字符串。其中 E 是可以省略的,如果省略则表示可以匹配满足条件的任意元素。如:div[id^=section] 表示匹配包含 id 属性,且 id 属性值是以 “section” 字符串开头的 div 元素。

 

 

 

 

2.E[att$=value] 属性选择器

  E[att$=value] 属性选择器是指选择器名称为 E 的标记,且该选择器定义了 att 属性,att 属性值包含后缀为 value 的子字符串。与E[att$=value]选择器一样,E元素可以省略,如果省略则表示可以匹配满足条件的任意元素。如:div[id$=section]表示匹配包含 id 属性,且 id 属性值是以 “section” 结尾的 div 元素。

 

 

 

 

 

3.E[att*=value] 属性选择器

  E[att*=value] 选择器用于选择名为 E 的标记,且该标记定义了 att 属性,att 属性值包含 value 子字符串,该选择器与前两个选择器一样,E 元素也可以省略,如果省略则表示可以匹配满足条件的任意元素。如:div[id*=section] 表示匹配包含 id 属性,且 id 属性包含 “section” 字符串的 div 元素。

 

 

 

 

 

关系选择器

  CSS3中的关系选择器主要包括子代选择器和兄弟选择器,其中子代选择器由符号 “>” 连接,兄弟选择器由符号 “+” 和 “~” 连接。

1.子代选择器(>)

  子代选择器主要用来选择某个元素的第一级子元素,如希望选择只作为 h1 元素子元素的 strong 元素,可以写为:h1 > strong。

 

 

2.兄弟选择器(+、~)

  兄弟选择器用来选择与某元素位于同一个父元素之中,且位于该元素之后(不会往前选,只会往后选)的兄弟元素。兄弟选择器分为临近兄弟选择器和普通兄弟选择器两种。

  (1)临近兄弟选择器

    该选择器使用加号 “+” 来链接前后两个选择器,选择器中的两个元素有同一个父亲,而且第二个元素必须紧跟第一个元素。

 

 

 

 

 

  (2)普通兄弟选择器

    普通兄弟选择器使用 “~” 来链接前后两个选择器。选择器中的两个元素有同一个父亲,但第二个元素不必紧跟第一个元素(往后选所有的兄弟)。

 

 

 

 

 

 

 

结构化伪类选择器

  结构化伪类选择器是 CSS3 中新增加的选择器,常用的结构化选择器有 :root 选择器、:only-child 选择器、:first-child 选择器、:last-child 选择器、:nth-child(n) 选择器、:nth-last-child(n) 选择器、:nth-of-type(n) 选择器、:nth-last-of-type(n) 选择器、:empty 选择器、:target 选择器。

1.:root 选择器

  :root 选择器用于匹配文档根元素,在 HTML 中,根元素始终是 html 元素,也就是说使用 “:root 选择器” 定义样式,对所有页面元素都生效。对于不需要该样式的元素,可以单独设置样式进行覆盖。

 

 

 

 

  给 h2 进行单独设置:

 

 

 

 

 

 

2.:not 选择器

  如果对某个结构使用样式,但是想排除这个结构元素下面的子结构元素,让它不使用这个样式,可以使用 :not 选择器。

 

 

 

 

 

 

3.:only-child 选择器

  :only-child 选择器用于匹配属于父元素的唯一子元素的元素,也就是说,如果父元素仅有一个子元素,则使用 “:only-child 选择器” 可以选择这个子元素。

 

 

 

 

 

 

4.:first-child 和 :last-child 选择器

  :first-child 选择器和:last-child 选择器分别用于为父元素中的第一个或者最后一个子元素设置样式。

 

 

 

 

 

 

5.:nth-child(n) 和 :nth-last-child(n) 选择器

  使用 :nth-child(n) 选择器和 :nth-last-child(n) 选择器可以选择某个父元素中第 n 个或倒数第 n 个子元素。

  选择第 2 个和倒数第 2 个子元素:

 

 

 

 

  选择第 3 个和倒数第 2 个子元素:

 

 

 

 

 

 

6.:nth-of-type(n) 和 :nth-last-of-type(n) 选择器

  :nth-of-type(n) 选择器和 :nth-last-of-type(n) 选择器用于匹配属于父元素的特定类型的第 n 个子元素和倒数第 n 个子元素。如第2个<p>标签或倒数第二个<p>标签。

  选择偶数行的 <h2> 标签设置为红色和奇数行的 <p> 标签设置为绿色:

 

 

 

 

  在前一个基础上再选择倒数第 2 个子元素:

 

 

 

   选择偶数行还可用此方法:

 

 

 

 

 

7.:empty 选择器

  :empty 选择器用来选择没有子元素或文本内容为空的所有元素。

 

 

 

 

 

 

8.:target 选择器

  :target 选择器用于为页面中的某个 target 元素(该元素的 id 被当做页面中的超链接来使用)指定样式。只有用户单击了页面中的超链接,并跳转到 target 元素后,:target 选择器所设置的样式才会起作用。

 

 

 

 

 

 

 

 

伪元素选择

  所谓伪元素,是针对CSS中已经定义好的伪元素使用的选择器。CSS中常用的伪元素选择器有 before 伪元素选择器和 :after 伪元素选择器。

1.:before 选择器

  :before 伪元素选择器用于在被选元素的内容前面插入内容,必须配合 content 属性来指定要插入的具体内容(当前内部前)。基本语法格式如下:

  <元素>:before

  {

    content:文字/url();

  }

 

 

 

   在前面加上三个哈字:

 

 

 

 

 

2.:after 选择器

  :after 伪元素选择器用于在某个元素后边插入一些内容(当前内部后),使用方法与 :before 选择器相同。

 

 

 

 

 

 

伪类链接

  定义超链接时为超链接指定不同的状态,使得超链接在点击前、点击后和鼠标悬停时的样式不同。在CSS中,通过链接伪类可以实现不同的链接状态。

  所谓伪类并不是真正的类,它的名称是由系统定义的,通常由标记名、类名或 id 名加 ":" 构成。

超链接标记<a>的伪类

超链接标记<a>的伪类 含义
a:link{CSS样式规则;} 未访问时超链接的状态
a:visited{CSS样式规则} 访问后超链接的状态
a:hover{CSS样式规则} 鼠标经过、悬停时超链接的状态
a:active{CSS样式规则} 鼠标点击不动时超链接的状态

 

posted @ 2020-03-26 19:32  XANN  阅读(3668)  评论(0编辑  收藏  举报