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:高级选择器
42 1
|
2月前
|
前端开发 JavaScript
CSS:基础选择器
CSS:基础选择器
47 1
|
22天前
|
前端开发 JavaScript UED
深入理解与应用 CSS 伪类选择器
【10月更文挑战第23天】通过以上对 CSS 伪类选择器的深入探讨,我们可以更好地理解和应用它们,为网页设计和开发带来更丰富、更灵活的样式效果。同时,要注意在实际应用中根据具体情况合理选择和使用伪类选择器,以达到最佳的设计效果和用户体验。
31 2
|
2月前
|
前端开发 JavaScript 容器
谁动了我的选择器?深入理解CSS选择器优先级
该文章详细解释了CSS选择器的工作原理,包括不同种类选择器的权重计算规则,并通过实例说明了如何解决样式冲突问题,确保所需的样式能够正确应用到目标元素上。
|
2月前
|
前端开发
前端基础(四)_CSS层叠样式表_什么是css_css样式的引入方式_样式表的优先级_样式选择器
本文详细介绍了CSS(层叠样式表)的基本概念、语法规则、引入方式、样式表的优先级和样式选择器。文章解释了CSS的作用,展示了如何在HTML中通过行内样式、内部样式和外部样式引入CSS,讨论了不同CSS选择器的优先级和如何确定最终的样式应用。此外,还强调了使用`!important`规则时的优先级高于行内样式。
87 1
|
1月前
|
前端开发
CSS常见的选择器
CSS常见的选择器
18 0
|
2月前
|
前端开发 JavaScript
【CSS】选择器
【CSS】选择器
|
3月前
|
前端开发
CSS3选择器
【8月更文挑战第23天】CSS3选择器。
32 1
|
3月前
|
前端开发
CSS中的层级选择器&伪类选择器和伪元素选择器
CSS中的层级选择器&伪类选择器和伪元素选择器
|
3月前
|
前端开发
解锁CSS神秘面纱:深度剖析类选择器,掌握前端设计的绝密武器!
解锁CSS神秘面纱:深度剖析类选择器,掌握前端设计的绝密武器!