CSS复合选择器

简介: CSS复合选择器

复合选择器是什么?

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

复合选择器可以更准确,更高效地选择目标元素(标签)
复合选择器是由两个或者多个基础选择器,通过不同的方式组合而成的。
常用的复合器包括:后代选择器,子选择器,并集选择器,伪类选择器等等。

为什么要引入复合选择器?

举例:

要求将ul中的li标签中的元素修改

<head>
    <style>
        li{
                font-size: 20px;
                font-family: "仿宋";
            }
    </style>
</head>
<body>
    <ul>
        <li>早上好</li>
        <li>中午好</li>
        <li>下午好</li>
    </ul>
    <ol>
        <li>你好</li>
        <li>我好</li>
        <li>大家好</li>
    </ol>
</body>

类似于上面的这种情况是很常见的,如果我们使用基础选择器,直接使用li标签对齐进行筛选,结果就是如下图所示,无论是ol中的li标签还是ul中的li标签元素都被修改了。

显示:


那么有的人会说,可以使用如下所示这种方式通过类选择器进行,这种方法

虽然没错,但是非常麻烦,十几行代码看不出,但是几十行甚至几百行呢?如果还去手动的添加,效率就非常低。

<head>
    <style>
        .t{
                font-size: 20px;
                font-family: "仿宋";
            }
    </style>
</head>
<body>
    <ul>
        <li class="t">早上好</li>
        <li class="t">中午好</li>
        <li class="t">下午好</li>
    </ul>
    <ol>
        <li>你好</li>
        <li>我好</li>
        <li>大家好</li>
    </ol>
</body>


显示:

此时,复合选择器的好处就体现的淋漓尽致了,下面我们来感受一下它的魅力!

后代选择器

后代选择器又称为包含选择器,可以选择父元素中的子元素,其写法为:把外层标签写在前面,内层标签写在后面,中间用空格分隔,当标签发生嵌套时,内层标签就成为外层标签的后代。

语法格式:

元素1 元素2{样式声明}//表示选择元素1[称为父元素]中的所有元素2[称为子元素]

例如:

ul li{样式声明} //选择ul中所有的li标签元素

注意:

元素1和元素2中间用空格隔开

元素2可以是儿子,也可以是孙子等,只要是元素1的后代即可

元素1和元素2可以是任意基础选择器


举例:

<head>
    <style>
        body .t {//选择body标签中,类选择器为t的元素
            font-family: "仿宋";
        }
    </style>
</head>
<body>
    <ul>
        <li>我是ul的儿子</li>
        <li><a href="http:\\xysfxy.com" />我是ul的孙子</a></li>
    </ul>
    <p class="t">你好web</p>
</body >

显示如下:

选择直接后代元素:

上述实例进行修改:

  <style>
       ul li{
                font-size: 20px;
                font-family: "仿宋";
            }
    </style>

对上述实例选用后代选择器,只需要更改几个简单的字母即可,与上述方法中的类选择器相比两者都可正确显示效果,但这种方式方便了许多。

选择非直接后代元素:

举例:

<head>
    <style>
       ul li a{//将ul中的li中的a标签该为红色
                color:aquamarine;
            }
    </style>
</head>
<body>
    <ul>
        <li >我是ul的儿子</li>
        <li><a href="http:\\xysfxy.com"/>我是ul的孙子</a></li>
    </ul>
</body>

显示:

子选择器:

子元素选择器(子选择器)只能选择作为某元素的最近一级子元素,它不像后代选择器一样可以选择“儿子”/"孙子”等,他只能选择“儿子”。

语法格式:

元素1>元素2{样式声明}//选择元素1 里面的所有直接后代元素(子元素)元素2

例如:

div>p{样式说明}//选择div里面所有最近一级p标签元素

元素1和元素2中间用">"隔开

元素1是父级,元素2是子级,最终选择的是元素2

元素2必须是亲儿子,其余的后代均不可以

举例:

要求:将li中的a标签进行修改:

方法1:

<head>
    <style>
        ul>a{
            font-family: "微软雅黑";
            font-size: 30px;
        }
    </style>
</head>
<body>
    <ul>
        <li>我是ul的儿子</li>
        <li><a href="http:\\xysfxy.com" />我是ul的孙子</a></li>
    </ul>
</body >

方法1:是错误的,它并不能实现对应的功能,因为 ul>a:a并不是ul的直接后代,所以不能使用子选择器进行选择。

方法2:

<head>
    <style>
        ul>li>a{
            font-family: "微软雅黑";
            font-size: 30px;
        }
    </style>
</head>
<body>
    <ul>
        <li>我是ul的儿子</li>
        <li><a href="http:\\xysfxy.com" />我是ul的孙子</a></li>
    </ul>
</body >

方法二是对的,ul>li>a:li是ul的后代,而a又是li的后代,因此可以通过子选择器进行修改。


并集选择器:

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


并集选择器是各选择器通过英文逗号(,)连接而成,任何形式的选择器都可以作为并集选择器的一部分。


语法格式:

元素1,
元素2{样式声明}//选择元素1和元素2

在并集选择器中,多个被选择的元素,我们一般都习惯将它们竖着表示,最后一个被选择的元素后面不需要加逗号

例如:

ul,div{样式声明}//选择ul和div标签元素

元素1和元素2中间用逗号隔开

举例:

<head>
    <style>
        li,
        p,
        a{//将li和p以及a标签中元素都进行修改
            font-family: "微软雅黑";
            font-size: 10px;
            color:blueviolet
        }
    </style>
</head>
<body>
    <ul>
        <li>我是ul的儿子</li>
    </ul>
    <p>我是p标签</p>
    <a href="http://us.com">我是超链接</a>
</body >

显示如下:

伪选择器:

伪类选择器用于向某些选择器添加特殊的效果,比如给链接添加特殊的效果,或选择第n个元素。

伪类选择器书写最大的特点是用冒号(:)表示,比如:hover,first-child

常见的伪类选择器有:链接伪类,结构伪类。


链接伪类选择器:

a:link    //选择所有未被访问的链接
a:visited   //选择所有已被访问的链接
a:hover    //选择鼠标指针位于其上的链接
a:active   //选择活动链接(鼠标按下未弹起的链接)

举例:

<style>
a:link{color:black;text-decoration: none;}//未访问过的链接
a:visited{color:aquamarine;}//访问过的链接
a:hover{color:blueviolet;} //鼠标时经过的链接
a:active{color:green;}//鼠标正在按下还为弹起的那个链接
</style>

选择链接伪类选择器的注意事项:

1:为了确保生效,必须遵守:link--->visted--->hover--->active的顺序进行定义和声明
2:由于a链接在浏览器中有默认的样式,所以一般情况下都需要我们给a标签指定单独的样式。

链接伪类选择器在实际开发中的写法:

a{
color:gray;
}
a:hover{
color:red;//鼠标经过时,由最初的灰色变为了红色
}

.focus选择器:

将获得光标的input表单元素选取出来

举例:

<head>
    <style>
   input:focus{
    background-color: aquamarine;
   }
    </style>
</head>
<body>
   <input type="text">
   <input type="text">
</body >

显示效果:

复合选择器总结:

相关文章
|
2天前
|
前端开发
前端 css 经典:选择器速记
前端 css 经典:选择器速记
8 0
|
5天前
|
前端开发
【Web前端】CSS基本语法规范和引入方式&&常见选择器用法&&常见元素属性
【Web前端】CSS基本语法规范和引入方式&&常见选择器用法&&常见元素属性
|
5天前
|
前端开发
CSS选择器
CSS选择器
14 1
|
5天前
|
前端开发 开发者
【专栏:CSS基础篇】CSS选择器详解:精准定位网页元素
【4月更文挑战第30天】本文介绍了CSS选择器在Web开发中的重要性,详细阐述了基础选择器(元素、类、ID、属性和伪类/伪元素)及复杂选择器(后代、子元素、相邻兄弟和一般兄弟)的用法。通过理解并巧妙运用这些选择器,开发者能更高效地控制页面样式,提高代码的可维护性。CSS预处理器如Sass、LESS进一步增强了选择器的功能,助力创建优雅且强大的样式表,实现精准的网页设计。
|
5天前
|
前端开发 容器
【Web 前端】css选择器有哪些?
【4月更文挑战第22天】【Web 前端】css选择器有哪些?
|
5天前
|
前端开发
css的选择器,优先级和示例
css的选择器,优先级和示例
9 1
|
5天前
|
移动开发 前端开发 JavaScript
CSS选择器 前端开发入门笔记(十)
CSS选择器 前端开发入门笔记(十)
22 1
|
5天前
|
前端开发 JavaScript UED
CSS3选择器详解 前端开发入门笔记(六)
CSS3选择器详解 前端开发入门笔记(六)
37 1
|
5天前
|
前端开发 UED
css选择器有哪些
【4月更文挑战第15天】css选择器有哪些
19 3
|
5天前
|
前端开发 UED
css选择器是什么
【4月更文挑战第15天】css选择器是什么
19 6