1-2-9【CSS3】CSS3新增选择器

题外话:时间不多了。


文章内容输出来源:拉勾教育大前端就业集训营

1.新增选择器

  • 概述:在之前的文章1-1-10中,为大家介绍了7种选择器,我们来回顾一下:

    • 4个基础选择器:标签选择器、id选择器、类选择器、通配符选择器。
    • 3个高级选择器:后代选择器、交集选择器、并集选择器。
  • 说明:CSS3中,相对于CSS2.1版本的7个选择器,增加了更多其他的选择器,实现了更多的选择方式。

    • 子级选择器
    • 兄弟选择器
    • 结构伪类选择器
    • 伪元素选择器
    • 属性选择器

2.子级选择器

  • 概述:子级选择器用于选取带有特定父元素的元素
  • 书写方式:element1>element2,其中element1是父元素,element2是子元素。
  • 注意事项必须满足父子关系才可以,仅满足祖先关系是不行的!

说明:第一个p元素与box1类的div元素是父子关系,所以被选择器选中了。第二个p元素,虽然是祖先关系,但不是父子关系,所以没有被选中。

回顾:子级选择器和后代选择器有些相似,不同点在于,子级选择器必须是父子关系,而后代选择器,是祖先关系即可。

3.兄弟选择器

  • 概述:兄弟选择器有两种,“相邻兄弟选择器”和“其他兄弟选择器”。
选择器 简介
element1+element2 匹配同一个父元素中,紧跟在element1后面的一个element2元素
element1~element2 匹配同一个父元素中,在element1后面所有的element2元素

相邻兄弟选择器

  • 概述:相邻兄弟选择器可以用于选择紧接在另一个元素后的兄弟元素,而且二者有相同的父元素。
  • 书写方式:E1+E2。
  • 注意
    • 选中的是紧跟在E1元素后的同级E2元素。
    • 只能选中E1元素后面的1个E2元素。
    • “+ ”符号前后可添加空格书写。

说明:只有第一个p元素满足“紧跟在h2元素后”,所以只有第一个p元素被选中了。

说明:第一个p元素不满足“紧跟在h2元素后”,因为紧跟在h2元素后的是div元素,所以没有任何一个p被选中。

说明:该案例比较特殊,因为从第二个p标签开始,都满足选择器的条件,所以都被选中了。

其他兄弟选择器

  • 概述:其他兄弟选择器匹配同一个父元素中在element1后面的所有element2元素
  • 书写方式:E1~E2。
  • 注意
    • 选择element1之后出现的所有element2。
    • 两种元素必须拥有相同的父元素,但是element2 不必直接紧随element1。
    • ~ 符号前后可以添加空格书写。

说明:第一个p元素并没有满足在h2的后面,所以没有被选中。从第二个p元素开始,都满足条件,所以都被选中了。

说明:第三个p标签由于和h2标签不是同一个父元素,所以没有被选中。

4.结构伪类选择器

  • 概述:结构伪类选择器,可以根据元素在文档中所处的位置,来动态选择元素,从而减少HTML文档对ID或类的依赖,有助于保持代码干净整洁。
选择器 简介
E:first-child 匹配父元素中的第一个子元素E
E:last-child 匹配父元素中的最后一个子元素E
E:nth-child(n) 匹配父元素中的第n个子元素E
E:first-of-type 指定类型E中的第一个
E:last-of-type 指定类型E中的最后一个
E:nth-of-type(n) 指定类型E的第n个

E:first-child和E:last-child

  • 概述:匹配父元素中的第一个or最后一个子元素E。
  • 书写方式
    • 完整写法:父元素 子元素:first-child
    • 省略子元素:父元素 :first-child

注意! 省略子元素写法,在冒号前面,必须有一个空格!完整写法,在冒号前面,不能有空格!

说明:第一个选择器的意思是,类名为box的父元素中的第一个子元素p,满足条件。第二个选择器的意思是,类名box的父元素中的第一个子元素h2,但是!h2在其子元素中排行第2,所以并不符合条件

说明:该写法为“省略子元素写法”,仅指定了一个类名为box的父元素,没有指定子元素,所以只要是父元素的第一个子元素就满足条件。

拓展:一般来说使用“省略子元素写法”即可,因为一旦子元素写错了,是不会有任何元素被选中的。

E:nth-child(n)

  • 概述:匹配父元素中的第n个子元素E。
  • 书写方式
    • 完整写法:父元素 子元素:nth-child(n)
    • 省略子元素:父元素 :nth-child(n)

说明:与first-child选择器类似,一旦指定了子元素,要满足两个条件才能被选中,所以一般使用省略子元素写法。

说明:选择器中没有指定子元素,所以子元素中的第三个元素满足条件,被选中了。

  • n的几种写法
<style>
    .box :nth-child(3){
        color: pink;
    }
</style>

n可以是数字,数字是几,就选中第几个子元素。

<style>
    .box :nth-child(even){
        color: pink;
    }
</style>

n可以是关键字,even是指顺序为偶数的子元素,odd是指顺序为奇数的子元素。

<style>
    .box :nth-child(2n+5){
        color: pink;
    }
</style>

n可以是公式,其中n是从0开始计算的整数。在本案例中,2n+5的意思是从5开始的奇数。

E:first-of-type和E:last-of-type

  • 概述:指定父元素中所有类型为E的子元素,并选中他们的第一个or最后一个。
  • 书写方式
    • 完整写法:父元素 子元素:first-of-type
    • 省略子元素:父元素 :first-of-type

说明:完整写法指定了子元素,所以会从类名为box的父元素中,筛选所有h2子元素,选中他们中的第一个。

说明:没有指定子元素,就会将父元素中所有种类的元素的第一个选中。

E:nth-of-type(n)

  • 概述:选择父元素中的所有类型为E的子元素中的第n个。
  • 书写方式
    • 完整写法:父元素 子元素:nth-of-type(n)
    • 省略子元素:父元素 :nth-of-type(n)

说明:这里只举省略子元素写法的例子。由于没有指定子元素,所以选中了所有类型子元素中的第二个。

  • E:nth-of-type(n)中的n与E:nth-child(n)中的n类似,直接套用即可,不过多介绍了。

5.伪元素选择器

  • 概述:在DOM里新生成了一个元素,选中的是这个新元素,类似于标签选择器的效果,在DOM中无法选中这个新元素,所以叫做伪元素。

  • 新增选择器

选择器 介绍
E::before 在E元素内部的前面插入一个元素
E::after 在E元素内部的后面插入一个元素
E::first-letter 选择到了E容器的第一个字母
E::first-line 选择到了E容器内的第一行文本

拓展:H5新规范,伪元素选择器采用双冒号写法。当然,目前浏览器对于单冒号和双冒号都是兼容的。

说明:before会在其子元素中的,最前面插入一个元素;而after会在其子元素中的,最后面插入一个元素。

结构伪类选择器8.jpg

说明:first-letter会在选中E容器中文本内容的第一个字母;first-line会选中在E容器中文本内容的第一行内容,“第一行”的范围由实际显示效果决定。
你会发现缩小or放大浏览器窗口大小,选中的文字范围也不同。

  • 注意事项
    • 伪元素只能给双标签添加,不能给单标签添加;
    • 伪元素冒号前不能有空格;
    • 伪元素必须写上属性content;
    • 在DOM中是看不到新建的元素的,所以称为伪元素。

6.属性选择器

  • 概述:属性选择器用来选择包含指定属性的标签。
  • 选择器介绍
选择器 简介
E[att] 选择具有att属性的E元素
E[att="val"] 选择具有att属性且属性值等于val的E元素
E[att^="val"] 匹配具有att属性,且值以val开头的E元素
E[att$="val"] 匹配具有att属性,且值以val结尾的E元素
E[att*="val"] 匹配具有att属性,且值中含有val的E元素
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        p[class]{
            color: pink;
        }
    </style>
</head>
<body>
    <p class="p1">我是一句带class属性的话</p>
    <p>我是一句普通的话</p>
</body>
</html>

说明:属性选择器选择了“带有class属性的p元素”,所以第一句话被选中了,而第二句话没有被选中。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        p[class$="ownP"]{
            color: pink;
        }
    </style>
</head>
<body>
    <p class="myPFlag">我是一句带class属性的话</p>
    <p class="unkownP">我是一句普通的话</p>
</body>
</html>

说明:属性选择器选择了“带有class属性,且以ownP结尾的p元素”,所以第二句话被选中了。

7.选择器权重

  • 基础选择器:id选择器 > 类选择器 > 标签选择器 > *
  • 伪类选择器属性选择器的权重等于类选择器
  • 伪元素选择器的权重等于标签选择器

前端文章汇总目录

https://www.jianshu.com/p/6d80dd616ff4


结束语:一花一世界,一木一浮生,愿与诸君共勉

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