CSS选择器——层次选择器,结构伪类选择器,属性选择器

Our greatest enemies are within.
我们最大的敌人就是我们的内心。

        在之前的文章里已经介绍过基本选择器,高级选择器一般上包括层次选择器,结构伪类选择器,属性选择器,接下来为大家11介绍。

一、层次选择器

  • 1.后代选择器
    后代选择器可以选择作为某元素后代的元素。
    格式:A B
div span { 
background-color: red;
}
<!-- 选择属于div后代的span元素都会被加上红色背景 -->
<div>
<p>
<span>我是div的后代元素1</span>
<span>我是div的后代元素2</span>
</p>
</div>
  • 子选择器
    与后代选择器相比,子元素选择器只能选择作为某元素子元素的元素。
    格式:A>B
div>span {
background-color: red;
}
<!--选择只有div的孩子元素才会被加上红色背景 -->
<div>
<span>我是div的子元素1</span>
<span>我是div的子元素2</span>
<p>
<span>我是div的后代元素</span>
</p>
</div>
  • 相邻兄弟选择器
    相邻兄弟选择器可选择紧接在另一元素后的元素,且二者有相同父元素。
    格式:A+B
span+p {
background-color: red;
}
<!--选择与span标签之后紧邻且同时拥有同一个父元素的元素才会被加上红色背景 -->
<div>
<span>我是div的子元素</span>
<p>
我是span的兄弟元素
</p>
</div>
  • 通用兄弟选择器
    兄弟选择符,位置无须紧邻,只须同层级,A~B 选择A元素之后所有同层级B元素。
    格式:A~B
span~p {
background-color: red;
}
<!--选择span标签之后与span拥有同一父级的元素才会被加上红色背景 -->
<div>
<p>我是span的兄弟元素p1</p>
<span>我是div的子元素</span>
<p>我是span的兄弟元素p2</p>
<p>我是span的兄弟元素p3</p>
</div>

二、结构伪类选择器

  • A:first-child 作为父元素的第一个子元素的元素A
  • A:last-child 作为父元素的最后 一个子元素的元素A
p:first-child {
background-color: red;
}
p:last-child {
background-color: green;
}
<div>
<p>我是第一个p元素背景色为红色</p>
<p>我是第二个p元素</p>
<p>我是最后一个p元素背景色为绿色</p>
</div>
  • A B:nth-child(n) 选择父级元素A的第n个子元素B,(n可以是1、2、3),关键字为even(偶数)、odd(奇数)
 div p:nth-child(odd) {
 background-color: red;
 }
<!-- 选择父级元素div的第n(n为奇数)个子元素p -->
<div>
<p>我是第一个p元素</p>
<p>我是第二个p元素</p>
<p>我是第三个p元素</p>
<p>我是第四个p元素</p>
</div>
  • A:first-of-type 选择父元素内具有指定类型的第一个A元素
  • A:last-of-type 选择父元素内具有指定类型的最后一个A元素
  • A:B:nth-of-type(n) 选择父元素内具有指定类型的第n个B元素
 /* 第一个 */
 p:first-of-type{
 background-color: greenyellow;
 }
 /* 最后一个 */
 p:last-of-type{
 background-color: yellow;
 }
 /* 第二个 */
 div p:nth-of-type(2) {
 background-color: red;
 }
<div>
<p>我是第一个p元素</p>
<p>我是第二个p元素</p>
<p>我是第三个p元素</p>
<p>我是第四个p元素</p>
</div>

三、属性选择器

属性选择器可以根据元素的属性及属性值来选择元素

  • 选择匹配具有属性attr的E元素
    格式:E[attr]
    例如:当图片无法显示时的替代文字变为红色
img[alt] {
color: red;
}
<img src="../timg.png" alt="我是图片">
  • 选择匹配具有属性attr的E元素,并且属性值为val
    格式:E[attr=val]
    例如:当图片无法显示时的替代文字“我是图片2”变为红色
 img[alt=我是图片2] {
 color: red;
 }
<img src="../timg1.png" alt="我是图片1">
<img src="../timg2.png" alt="我是图片2">
  • 选择匹配元素E,且E元素定义了属性attr,其属性值是以val开头的任意字符串
    格式:E[attr^=val]
    例如:这里匹配到了元素img的属性alt且属性值以“我是图片”开头的字体设置为红色
img[alt^=我是图片] {
color: red;
}
<img src="../timg1.png" alt="我是图片1">
<img src="../timg2.png" alt="我是图片2">
<img src="../timg3.png" alt="图片3">
  • 选择匹配元素E,且E元素定义了属性attr,其属性值是以val结尾的任意字符串
    格式:E[attr$=val]
    例如:这里匹配到了元素img的属性alt且属性值以“图片”结尾的字体设置为红色
img[alt$=图片] {
color: red;
}
<img src="../timg1.png" alt="我是图片1">
<img src="../timg2.png" alt="我是图片2">
<img src="../timg3.png" alt="我是图片">
  • 选择匹配元素E,且E元素定义了属性attr,其属性值包含了“val”,换句话说,字符串val与属性值中的任意位置相匹配
    格式:E[attr*=val]
    例如:这里匹配到了元素img的属性alt且属性值里有“图片”的字体设置为红色
img[alt*=图片] {
color: red;
}
 <img src="../timg1.png" alt="我是图片1">
 <img src="../timg2.png" alt="我是图片2">
 <img src="../timg3.png" alt="我是图片">

ENDING…
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值