CSS3选择器

首先介绍一下选择器的优先级:
1. 基本选择器
选择器类型功能描述
*t通配选择器选择文档中所有的HTML元素
E元素选择器选择指定的类型的HTML元素
#idID选择器选择指定ID属性值为“id”的任意类型元素
.class类选择器选择指定class属性值为“class”的任意类型的任意多个元素
.selector1,selectorN群组选择器将每一个选择器匹配的元素集合并

基本选择器是比较常用的,这里就不再做其他介绍。

2. 层次选择器
选择器类型功能描述
E F后代选择器(包含选择器)选择匹配的F元素,且F被包含在E内
E>F子选择器选择匹配的F元素,且F元素是E元素的子元素
E+F相邻兄弟选择器选择匹配的F元素,且F元素紧位于E元素后面
E~F通用选择器选择匹配的F元素,且位于E后所有的F元素

新建一个HTML文件,在具体使用层选择器之前,先来看看页面的初步效果

2.1 后代选择器
  后代选择器(E F)作用就是选择某元素的后代元素。这里的F元素不管是E元素的子元素、孙辈元素或者更深层次的关系,都将被选中。

2.2 子选择器

  子选择器(E>F)只能选择某元素的子元素。这与后代选择器(E F)不一样,在后代选择器中F是E的后代元素,而在子选择器中F仅仅是E的子元素而已。
  body的子元素包含div1、div2、div3、div4和div7;而div5、div6、div8、div9和div10并不是其子元素,所以只有前者的背景色变为绿色。       

2.3 相邻兄弟选择器

  相邻兄弟选择器(E+F)可以选择紧接在另一个元素后的元素,它们具有一个相同的父元素。即E和F是同辈元素并且相邻,F元素在E元素后面。
  此时第二个div的背景色将变成“lime”色。                 

2.4 通用兄弟选择器

  通用兄弟选择器(E ~ F)是**CSS3新增的**,用于选择某元素后面的所有兄弟元素,即E和F是同辈元素,且F在E之后,E~F将选中E元素后面的的所有元素。
  只要是div.active的兄弟元素div,并且在div.active之后,其背景色将变成红色。
3. 动态伪类选择器
选择器类型功能描述
E:link链接伪类选择器匹配元素被定义了超链接并未被访问过
E:visited链接伪类选择器匹配元素被定义了超链接并已被访问过
E:acitved用户行为伪类选择器匹配元素被激活
E:hover用户行为伪类选择器用户鼠标停留在元素E上
E:focus用户行为伪类选择器匹配的元素获得焦点

  锚点伪类的设置必须遵守一个“爱恨原则”LoVe/HAte,也就是“link-visited-hover-active”。

4. 目标伪类选择器
选择器功能描述
E:target选择匹配E的所有元素,且匹配元素被相关URL指向

  目标伪类选择器“:target”用来匹配文档(页面)的URI中某个标志符的目标元素。具体来说,URI中的标志符通常会包含一个#,后面带有一个标志符名称,例如“#contact”,“:target”就是用来匹配ID为“contact”的元素,然后供定义样式。

5. 语言伪类选择器

  语言伪类选择器是根据元素的语言编码匹配元素。这种语言信息必须包含在文档中,有两种方法表示:
1)使用HTML5,直接可以设置文档的语言:

<!DOCTYPE HTML>
<html lang="en-US">

另一种方法就是手工在文档中指定lang属性,并设置对应的语言:

<body lang="fr>

E:lang(language)表示选择匹配E的所有元素,且匹配元素指定了lang属性,而且其值为language。

6. UI元素状态伪类选择器

  UI元素的状态一般包括:启用、禁用、选中、未选中、获得焦点、失去焦点、锁定和待机等。在HTML元素中有可用和不可用状态,例如表单中的文本输入框、HTML元素中有选中和未选中状态,例如表单中的复选按钮和单选按钮。

选择器类型功能描述
E:checked选中状态伪类选择器匹配选中的复选按钮或单选按钮表单元素
E:enabled启用状态伪类选择器匹配所有启用的表单元素
E:disabled不可用状态伪类选择器匹配所有禁用的表单元素
7. 结构伪类选择器
选择器功能描述
E:first-child作为父元素的第一个子元素的元素E。与E:nth-child(1)等同
E:last-child作为父元素的最后一个子元素的元素E。与E:nth-last-child(1)等同
E:root选择匹配元素E所在文档的根元素。在HTML文档中,根元素始终是html,此时该选择器与html类型选择器匹配的内容相同
E F:nth-child(n)选择父元素E的第n个子元素F。其中n可以是整数(1、2、3)、关键字(even、odd)、可以是公司(2n+1、-n+5),而且n的起始值是1,而不是0
E>F:nth-last-child(n)选择元素E的倒数第n个子元素F。
E:nth-of-type(n)选择父元素内具有指定类型的第n个E元素
E:nth-last-of-type(n)选择父元素内具有指定类型的倒数第n个E元素
E:first-of-type选择父元素内具有指定类型的第一个E元素,与E:nth-of-type(1)等同
E:last-of-type选择父元素内具有指定类型的最后一个E元素,与E:nth-last-of-type(1)等同
E:only-child选择父元素只包含一个子元素,且该子元素匹配E元素
E:only-of-type选择父元素只包含一个同类型的子元素,且该子元素匹配E元素
E:empty选择没有子元素的元素,且该元素也不包含任何文本节点

:nth-child和:nth-of-type的区别

<div class="post">
    <h1>我是标题一</h1>
    <p>我是文章中的第一个段落</p>
    <p>我是文章中的第二个段落</p>
</div>
.post>p:nth-child(2){color: red;}  //第一个段落变红,但我们是想让第二个段落变红
.post>p:nth-of-type(2){color: red;}  //第二个段落变红,是我们想要的

  “:nth-child”选择的是某父元素的子元素,这个子元素并没有确切的类型,同时满足两个条件时方能有效果,其一是子元素,其二此子元素刚好处在那个位置;“:nth-of-type”选择的是某父元素的子元素,而且这个子元素是指定类型。

8. 否定伪类选择器
选择器功能描述
E:not(F)匹配所有除元素F外的E元素

因此,否定伪类选择器可以起到过滤内容的作用

9. 伪元素
伪元素功能描述
::first-letter匹配元素的第一个字母
::first-line匹配元素的第一行文本
::before在匹配元素前插入内容
::afer在匹配元素后插入内容
::selection匹配突出显示的文本(仅接受两个属性:background、color)

  为什么伪元素要使用两个冒号?双冒号和单冒号在CSS3中主要用来区分伪类和伪元素。

10. 属性选择器
选择器功能描述
E[attr]选择匹配具有属性attr的E元素。其中E是可以省略的,表示选择定义了attr属性的任意类型元素。
E[attr=val]选择匹配具有属性attr的E元素,并且attr的属性值为val(其中val区分大小写),同时E元素省略时表示选择定义了attr属性值为val的任意类型元素。
E[attr=val]
E[attr~=val]选择匹配E元素,且E元素定义了属性attr,attr属性值具有多个空格分隔的值,其中一个值等于val。
E[attr*=val]选择匹配元素E,且E元素定义了属性attr,其属性值任意位置包含了“val”。即字符串val与属性值中的任意位置相匹配。
E[attr^=val]选择匹配元素E,且E元素定义了属性attr,其属性值以val开头的任何字符串。
E[attr$=val]选择匹配元素E,且E元素定义了属性attr,其属性值以val结尾的任何字符串。

CSS3中常见的通配符如下表所示:

通配符功能描述示例
^匹配起始符span[class^=span] 表示选择类名以“span”开头的所有span元素
$匹配终止符a[href$=pdf] 表示选择以“pdf”结尾的href属性的所有a元素
*匹配任意字符a[title*=site] 匹配a元素,而且a元素的title属性值中任意位置有“site”字符的任何字符串

参考
CSS - 选择器优先级介绍

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值