CSS的高级选择器

1.什么是高级选择器

在 CSS 中,可以根据选择器的类型,把选择器分为基础选择器和高级选择器(又称为复合选择器),高级选择器是建立在基础选择器之上,对基本选择器进行组合形成的。

①高级选择器可以更准确、更高效的选择目标元素(标签)

②高级选择器是由两个或多个基础选择器,通过不同的方式组合而成的

③常用的高级选择器包括:层次选择器、属性选择器、伪类选择器等等,本文主要介绍层次选择器和属性选择器。

2.层次选择器

层次选择器里包含:后代选择器、子选择器 、相邻兄弟选择器 、通用兄弟选择器和并集选择器。

2.1后代选择器

当标签发生嵌套时,内层标签就成为外层标签的后代。

所谓后代选择器,通俗的讲就是选择父元素里面包含的子元素,其写法就是把外层标签写在前面内层标签写在后面中间用空格分隔

2.1.1 语法

元素1  元素2 { 样式声明 }

比如:

ul li { color="red"; }     /* 表示“选择 ul 里面所有的 li标签 将其字体变成红色” */

2.1.2 注意事项

①元素1 和 元素2 中间用空格隔开 
②元素1 是父级,元素2 是子级,最终选择的是元素2 
元素2 可以是儿子,也可以是孙子等,只要是元素1 的后代即可 
④元素1 和 元素2 可以是任意基础选择器 ,也就是说可以是标签选择器,也可以是类选择器、id选择器。

2.2 子选择器

子选择器只能选择作为某元素的最近一级子元素。通俗的讲就是把亲儿子元素选择出来,其他的孙子辈不要。

2.2.1 语法

 元素1 > 元素2 { 样式声明 }

比如:

div > p { color:"red"; }    /* 选择 div 里面所有最近一级 p 标签元素,将其字体颜色显示红色 */ 

 2.2.2 注意事项

①元素1 和 元素2 中间用 大于号 隔开 
②元素1 是父级,元素2 是子级,最终选择的是元素2 
③元素2 必须是亲儿子,其孙子、重孙之类都不归他管. 你也可以叫他 亲儿子选择器

2.3 相邻兄弟选择器

所谓相邻兄弟选择器,就是把当前元素的下一个元素找出来。

2.3.1 语法:

元素1 + 元素2 { 样式声明 } 

例如 

.active + li { background: red; }  /* 表示类为active的元素的相邻下一个li元素,将其背景色变红 */

2.3.2 注意事项

①元素1 和 元素2 中间用 + 隔开 
②元素1 是和元素2 是相邻的兄弟关系,最终选择的是元素2 
③元素2 必须是相邻的下一个兄弟,其上或者不相邻兄弟都不归他管.

2.4 通用兄弟选择器

所谓通用兄弟选择器,就是把当前元素的后面所有兄弟元素都找出来。

2.4.1 语法

元素1 ~ 元素2 { 样式声明 } 

例如:

.active~li { background-color: pink; }  /* 表示选择出类为active元素后面所有兄弟li,将其背景色变粉红 */

2.4.2 注意事项

①元素1 和 元素2 中间用 ~ 隔开 
②元素1 是和元素2 是相邻的兄弟关系,最终选择的是元素1后面所有兄弟元素2
③只会对元素1下面的兄弟元素2(所谓兄弟就是处于并列状态,之间不存在包含关系)进行添加样式。 

例如,以下代码只能将“我是飞行员的3,4,5”选择出来,并不能选择出“我不是飞行员”,原因就是因为这个li不是.active的兄弟。

<style>
    .active~li {
         background-color: pink;
        }
</style>
<body>
    <ul>
        <li>我是飞行员1</li>
        <li class="active">我是飞行员2</li>
        <li>我是飞行员3</li>
        <li>我是飞行员4</li>
        <li>我是飞行员5</li>
        <div>
            <ul>
                <li>我不是飞行员</li>
            </ul>
    </ul>
</body>

2.5 并集选择器 

所谓并集选择器就是可以选择多组标签, 同时为他们定义相同的样式。通常用于集体声明. 

2.5.1 语法

元素1,元素2 { 样式声明 } 

例如:

div,p { color:green; }  /* 表示把div和p标签都找出来,字体显示绿色 */

2.5.2 注意事项

①元素1 和 元素2 中间用逗号隔开 ,逗号可以理解为和的意思
②任何形式的选择器都可以作为并集选择器的一部分;
③并集选择器通常用于集体声明 

3.属性选择器 

属性选择器可以根据元素特定属性的来选择元素。 这样就可以不用借助于类或者id选择器。

[ ]表示属性的意思  里面写具体属性的名称 比如[li].

3.1 E[attr]属性选择器

E[attr]属性选择器,选择匹配具有属性attr的E元素

元素[属性] { 样式声明 }

例如:
 
li[id] { background-color: red; }   /* 表示把具有id属性的li找出来,添加对应样式 */

3.2  E[attr=val]属性选择器

E[attr=val]属性选择器,选择匹配具有属性attr,且值为val的E元素,属性和属性值必须是完全匹配

元素[属性=值] { 样式声明 }

例如:
 
li[class=two] { background-color: red; }   /* 表示把具有class属性,且属性值为two的li找出来,添

加对应样式 */

3.3  E[attr*=val]属性选择器

E[attr*=val]属性选择器  选择匹配具有属性attr,且该属性值里面只要包含有val的E元素,表示一种模糊匹配

元素[属性*=值] { 样式声明 }

例如:
 
p[class*=b] { background-color: red; }   /* 表示把具有class属性,且只要属性值中含有字符b的所有p

元素都找出来,添加对应样式 */

3.4 E[attr^=val]属性选择器 

E[attr^=val]属性选择器  选择匹配具有属性attr,且属性值为以val开头的E元素。

元素[属性^=值] { 样式声明 }

例如:
 
a[href^=http] { background-color: red; }   /* 表示把具有href属性,且属性值以http开头的所有a

元素都找出来,添加对应样式 */

3.5  E[attr$=val]属性选择器

E[attr$=val]属性选择器  选择匹配具有属性attr,且属性值以val结尾的E元素。

元素[属性$=值] { 样式声明 }

例如:
 
a[href$=cn] { background-color: red; }   /* 表示把具有href属性,且属性值以cn结尾的所有a

元素都找出来,添加对应样式 */

3.6 注意事项 

在使用属性选择器时,如果遇到匹配的字符中有特殊符号时,比如下面例子里的:或//,这时必须给属性值加上引号才可,平时添加与否都可以。

 a[href^="http://"]  { background-color: red; }

总之,CSS这些高级选择器,可以方便我们更加便捷,更加自由的选择目标元素。 

但是这些选择器比较相似,很容易混淆,因此需要在理解的基础上加强记忆,然后在平时练习时不要单一选择一种选择器,可以多尝试使用下各种选择器,从而达到灵活使用。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值