首页 > 其他分享 >CSS样式的高级选择器

CSS样式的高级选择器

时间:2023-11-09 10:12:35浏览次数:42  
标签:样式 标签 元素 nth 123 选中 选择器 CSS

高级选择器

前面也介绍了一些简单的选择器但是这些简单的选择器,无法更加准确选择目标元素,所以需要用到高级选择器。

交集选择器

交集选择器是同时满足多个选择器筛选的条件的才能被选中,即两个集合中相同的元素才能被选中。

语法:是两个选择器之间不能有任何空格

举个例子:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         /*交集选择器*/
10         div.a {
11             color: aqua;
12         }
13     </style>
14 </head>
15 
16 <body>
17     <!-- 交集 两个集合中  相同的那部分 同时满足多个选择器  选择器1 选择器2 二者之间没有任何符号或空格-->
18     <div>123</div>
19     <div class="a">123</div><!--交集集合只有这个能选中-->
20     <p class="a">123</p>
21 </body>
22 
23 </html>

效果展示:

 只有满足是一个div标签且有类名为a的标签才能被选中。

并集选择器

所有的选择器都可以被选中,即选中集合中所有元素。

语法:选择器之间使用(,)隔开

举个例子:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         /* 并集选择器 */
10         div,
11         p {
12             color: aqua;
13         }
14     </style>
15 </head>
16 
17 <body>
18     <!-- 并集 两个集合中所有的部分 标签选择器之间用,隔开 -->
19     <div>123</div>
20     <p>123</p>
21 </body>
22 
23 </html>

效果展示:

 两个标签<p>和<div>标签都能被选中。

子类选择器

选中某元素子类的元素,只能选儿子不能选孙子。

语法:选择器之间使用(>)隔开

举个例子:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         .a>div {
10             color: red;
11         }
12     </style>
13 </head>
14 
15 <body>
16     <!--  子代选择器 只选择儿子不选择孙子  语法:选择器>选择器-->
17 
18     <div>
19         <div class="a">
20             <div>123
21                 <p>234</p>
22             </div>
23         </div>
24     </div>
25 </body>
26 
27 </html>

效果展示:

很奇怪为什么<div>标签中的孙子<p>也会字体变红呢?

因为字体样式是具有继承性的,所以儿子字体变红色,孙子字体也是会变红色。

后代选择器

选中某元素的所有后代元素,无论是儿子还是孙子都选

语法:选择器之间使用(空格)隔开

举个例子:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         /* 后代选择器 无论时孙子 还是儿子 都选*/
10         /* 选中.a  下所有的 div 元素 语法:标签(空格)标签 */
11         .a div {
12             color: bisque;
13         }
14     </style>
15 </head>
16 
17 <body>
18     <div class="a">
19         <div class="b">
20             <div>123<div>123</div>
21                 <!-- 不过问题是 字体样式会继承的 -->
22             </div>
23         </div>
24     </div>
25 </body>
26 
27 </html>

效果展示:

 相邻选择器

相邻选择器,如果下一个元素与指定元素一致时选中,只能选中一个元素或者一个都不选

语法:选择器之间使用(+)隔开

举个例子:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         /* 相邻选择器 */
10         .a+div {
11             color: aqua;
12         }
13 
14         /* 相邻的  下一个元素 相邻选择器只能一个元素或一个不选 */
15     </style>
16 </head>
17 
18 <body>
19     <div>
20         <div>123</div>
21         <div class="a">123</div>
22         <p>123</p>
23         <div>123</div>
24         <div>123</div>
25     </div>
26 </body>
27 
28 </html>

效果展示:

 因为选择器时.a+div相邻选择器,而类名为a的标签下一个元素并不是<div>标签而是<p>标签所以不会选中。

兄弟选择器

兄弟选择器可以选中同级类多个指定相同的选择器

语法:选择器之间使用(~)隔开

举个例子:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         /* 兄弟选择器  可以选中多个(注意只选下面的标签,上面的不选)*/
10         /* 语法:选择器~选择器 */
11         .a~div {
12             color: aqua;
13         }
14     </style>
15 </head>
16 
17 <body>
18     <div>
19         <div>123</div>
20         <div class="a">123</div>
21         <p>123</p>
22         <div>123</div>
23         <div>123</div>
24     </div>
25     <div>123</div><!--这个与里面的div不是兄弟关系-->
26 </body>
27 
28 </html>

效果展示:

 类名a选中的标签与22和23同一级所以选中改变字体颜色,而25不是与它同一级所以无法选中。

子元素选择器

子元素选择器分为两种:

①使用:nth-child(第几个子元素)

②使用:nth-of-type(第几个子元素)

两者之间相同点是可以选择第几个子类元素,而不同点是:nth-child()可能会被其他标签所影响,而:nth-of-type()不会被其他标签所影响。

举个例子:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         /* 子元素选择器 */
10         /* 如果使用:nth-child()的时候上面出现一个其他标签就无法选中正确的标签 */
11         ul>li:nth-child(2) {
12             color: red;
13         }
14 
15         /* nth child 会被其他元素所影响 */
16 
17         /* nth of type 之选中同种元素,不会被其他元素影响*/
18 
19         /* ul>li:nth-of-type(2) {
20             color: red;
21         } */
22     </style>
23 </head>
24 
25 <body>
26     <ul>
27         <p>123</p>
28         <li>123</li>
29         <li>123</li>
30         <li>123</li>
31         <li>123</li>
32     </ul>
33 </body>
34 
35 </html>

效果展示:

 可以看出我明明是想让他选中<li>标签的第二个子类,结果只选中第一个,就是因为上面有<p>标签导致被影响

而:nth-of-type()就不会受影响。因为它只会选中同种元素。

举个例子:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Document</title>
 8     <style>
 9         /* 子元素选择器 */
10         /* 如果使用:nth-child()的时候上面出现一个其他标签就无法选中正确的标签 */
11         /* ul>li:nth-child(2) {
12             color: red;
13         } */
14 
15         /* nth child 会被其他元素所影响 */
16 
17         /* nth of type 之选中同种元素,不会被其他元素影响*/
18 
19         ul>li:nth-of-type(2) {
20             color: red;
21         }
22     </style>
23 </head>
24 
25 <body>
26     <ul>
27         <p>123</p>
28         <li>123</li>
29         <li>123</li>
30         <li>123</li>
31         <li>123</li>
32     </ul>
33 </body>
34 
35 </html>

效果展示:

 

标签:样式,标签,元素,nth,123,选中,选择器,CSS
From: https://www.cnblogs.com/gzyhrc/p/17815918.html

相关文章

  • CSS学习01
    文字大小:font-size;xxpx文字粗细:font-weight;文字倾斜:font-style:normal(默认),italic(倾斜)字体样式:font-family文本样式:1.首行缩进:text_indent:2em; 首行缩进两个字符2.水平对齐方式:text-align:center(水平居中)或left或right;3.文本修饰:text-decora......
  • pandas样式 设置
    pd.set_option('expand_frame_repr',False)#True换行显示,False不允许换行pd.set_option("display.max_columns",None)#dataFrame的列,None显示完整的列,数字表示显示最大列数pd.set_option('display.max_rows',None)#None显示完整的行,数字表示显示最大......
  • 全局样式设置
    初始化项目后,页面样式会有边距,可引入reset-css处理安装npmireset-css最后在入口文件(main.js)中引用(不同项目的入口文件不同可能,只要引入就行了)import'reset-css' ......
  • 记录--一个纯样式花里胡哨的动态渐变背景块
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助代码片段闲来无事写了个有意思的东西,鼠标放在小方块上会放大并挤压周围方块,背景颜色会动态改变。这里没有用一行js代码,纯样式(Sass)实现。<template><divclass="container"><divclass="grid"><d......
  • 11月7日css介绍、基本格式、样式、选择器
    目录1.css介绍2.css基本格式3.css的几种引入方式1.行内样式2.内部样式3.外部样式css选择器基本选择器1.元素(标签)选择器2.id选择器3.类选择器通用选择器组合选择器1.后代选择器2.子元素选择器3.相邻兄弟选择器通用兄弟选择器属性选择器分组选择器伪类选择器第一个实例给未访问的链......
  • 关于后代选择器、分组选择器、多类选择器的区别
    后代选择器(descendantselector)又称为包含选择器在后代选择器中,规则左边的选择器一端包括两个或多个用空格分隔的选择器。选择器之间的空格是一种结合符通常写法为:标签名标签名{样式....}如下   <style>        h1 em{color:red;}        </style......
  • scss 通过@for循环动态创建多个class
    项目中有些全局的.scss文件中一些关于设置width的class,如下:.w50{width:50px;}.w60{width:60px;}.w70{width:70px;}.w80{width:80px;}.w90{width:90px;}.w100{width:100px;}.w110{width:110px;}.w120{width:120px;}.w130......
  • app直播源代码,css给数字或文字在鼠标悬停时添加下划线动画
    app直播源代码,css给数字或文字在鼠标悬停时添加下划线动画html代码: <h1 class="row center " style="font-size: 2em;">css给数字或文字在鼠标悬停时添加下划线动画</h1><div class="row center text"><span>春有百花秋望月</span>,<span>夏有冷风冬听雪</spa......
  • jQuery 筛选器 选择器
    jQuery内部封装了原生的js代码(还额外添加了很多的功能),能够让你通过书写更少的代码完成js操作类似于Python里面的模块,再前端模块不叫模块,叫类库兼容多个浏览器的 你在使用jquery的时候就不需要考虑浏览器兼容问题 jquery的宗旨writelessdomors让你用更少的代码完成更......
  • jquery 样式操作
    操作类:js版本:           jquery版本classList.add()      addClass()classList.remove()   removeClass()classList.contains()   hasClass()classList.toggle()      toggleClass()css操作:<p>111<p><p>222<p>......