CSS3选择器知识整理

本文详细介绍了CSS3的各种选择器,包括基本选择器(标签、类、ID、通配符)、组合选择器(包含、子、相邻、兄弟、分组)、伪类选择器(动态、结构、否定、状态)以及属性选择器。还讨论了CSS选择器的权重规则和优先级排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CSS3在CSS2.1的基础上新增了属性选择器伪类选择器过滤选择器,减少了对HTML类名或ID名的依赖。

CSS3选择器的分类

根据所获取的页面元素不同,可以把CSS3选择器分为五大类:基本选择器组合选择器伪类选择器伪元素选择器属性选择器。

基本选择器

基本选择器可以分为标签选择器类选择器ID选择器通配符选择器

标签选择器

标签选择器是直接引用标签的名称,也称为类型选择器。
示例:

<style>
    p{
        font-size: 12px;
        color: red;
    }
</style

<p>这是文本</p>

界面显示:
image.png

类选择器

类选择器以一个(.)前缀开头,后跟随一个自定义的类名。
示例:

<style>
    p{
        font-size: 12px;
        color: red;
    }
    .fontStyle{
              font-size: 18px;
          }
</style

<p>这是文本</p>
<p class="fontStyle">这是文本</p>

界面显示:
image.png

ID选择器

ID选择器以#作为前缀,然后是一个自定义的ID名。
示例:

<style>     
  #box{
      font-size: 18px;
      color: green;
  }
</style>
<div id="box">这是box文本</div>

界面显示:
image.png

通配符选择器

如果HTML元素中都需要定义相同的样式,这是可以使用通配符选择器,用(*)来表示。
示例:

 <style>
    *{
        font-size: 18px;
        color: #1c65dd;
    }
</style>
<div>这是box文本</div>

界面展示
image.png

组合选择器

当把两个或多个基本选择器组合在一起,就形成了一个复杂的选择器,一般叫做组合选择器。CSS提供了多种组合多个基本选择器的方式。

包含选择器

包含选择器通过空格标识符来表示。用于选择指定标签的后辈元素,并不局限于第一代后辈
示例:

<style>
    *{
            font-size: 10px;
        }
    #header p{
        font-size: 14px;
    }
    #main p{
        font-size: 12px;
    }
</style>

<div id="header">
    <p>头部区域第一段文本</p>
    <p>头部区域第二段文本</p>
    <p>头部区域第三段文本</p>
    <div>
        <p>头部区域第四段文本</p>
    </div>
</div>
<div id="main">
    <p>主体区域第一段文本</p>
    <p>主体区域第二段文本</p>
    <p>主体区域第三段文本</p>
</div>

界面结果:
image.png

子选择器

子选择器是指定父元素包含的第一代子元素。子选择器使用(>)表示。

<style>
    *{
        font-size: 10px;
    }
    #header>p{
        font-size: 14px;
    }
    #main>p{
        font-size: 12px;
    }
</style>

<div id="header">
    <p>头部区域第一段文本</p>
    <p>头部区域第二段文本</p>
    <p>头部区域第三段文本</p>
    <div>
        <p>头部区域第四段文本</p>
    </div>
</div>
<div id="main">
    <p>主体区域第一段文本</p>
    <p>主体区域第二段文本</p>
    <p>主体区域第三段文本</p>
</div>

界面结果:
image.png

相邻选择器

相邻选择器,通过(+)号分隔符定义。其基本结构是:第一个选择器指定前面相邻的元素,样式效果在第二个选择器中生效。
示例:

<style>
    *{
        font-size: 10px;
    }
    p+h3{
        color: red;
    }
    h3+p{
        color: blue;
    }
</style>

<div id="header">
    <p>p区域第一段文本</p>
    <h3>h区域文本</h3>
    <p>p区域第二段文本</p>
</div>

界面效果
image.png

兄弟选择器

兄弟选择器是CSS3新增的一种选择器组合方式,它通过波浪符号(~)分隔符进行定义。其基本结构是第一个选择器指定同级前置元素,后一个选择器指定其同级所有后置元素。
示例:

<style>
    *{
        font-size: 10px;
    }
    p+h3{
        color: red;
    }
    h3~p{
        color: blue;
    }
</style>

 <div id="header">
    <p>p区域第一段文本</p>
    <h3>h区域文本</h3>
    <h3>h区域文本</h3>
    <h3>h区域文本</h3>
    <p>p区域第二段文本</p>
    <p>p区域第三段文本</p>
    <p>p区域第四段文本</p>
    <h4>h区域文本</h4>
    <p>p区域第五段文本</p>
</div>

界面效果:
image.png

分组选择器

分组选择器通过逗号(,)分隔符进行定义。其基本结构是第一个选择器匹配指定元素,另外一个选择器指定其他的匹配元素,把所有的匹配元素都取出来。
通过分组选择器可以实现集体声明,将样式表中一致的CSS样式放到一起,然后通过逗号链接这些选择器,减少代码的书写量。
示例:

<style>
    *{
        font-size: 10px;
    }
    h3,h4,h5{
        color: blue;
    }
</style>

<div id="header">
    <p>p区域第一段文本</p>
    <h4>h区域文本</h4>
    <h3>h区域文本</h3>
    <h3>h区域文本</h3>
    <p>p区域第二段文本</p>
    <h5>h区域文本</h5>
    <p>p区域第四段文本</p>
    <h4>h区域文本</h4>
    <p>p区域第五段文本</p>
</div>

界面显示:
image.png

属性选择器

属性选择器匹配那些具有特定属性或属性值的元素。
属性选择器列表如下,其中E表示匹配元素的选择符,可以省略;中括号为属性选择标识,不可或缺;attr表示HTML属性名,value表示HTML属性值,或者HTML属性值包含的子字符串。

属性选择器含义
E[attr]指定了属性名,没有确定任何属性值
E[attr=“value”]指定了属性名,并且指定了改属性的属性值
E[attr~=“value”]指定了属性名,并且有属性值,此时的属性值是一个词列表,以空格隔开,包含了属性值value。
E[attr^=“value”]指定了属性名,并且有属性值,属性值以value开头
E[attr$=“value”]指定了属性名,并且有属性值,属性值以value结尾
E[attr*=“value”]指定了属性名,并且有属性值,属性值中包含了value
E[attr|=“value”]指定了属性名,并且有属性值,属性值是value或以value-开头

示例:

 <style>
    *{
        font-size: 12px;
    }
    p[id]{
        color:red;
    }

    p[class="p"]{
        color:blue;
    }

    p[class~="p1"]{
        color: green;
    }

    p[class$="p2"]{
        color: rgb(128, 128, 128);
    }
</style>

<div id="header">
    <p id="p">p区域第一段文本</p>
    <h4>h区域文本</h4>
    <p class="p p1">p区域第二段文本</p>
    <h5>h区域文本</h5>
    <p class="p p2">p区域第四段文本</p>
    <h4>h区域文本</h4>
    <p class="p">p区域第五段文本</p>
</div>

界面显示:
image.png

伪类选择器

伪类选择器以(:)作为前缀标识符。冒号前可以添加选择符,限定伪类应用的范围,冒号后为伪类和伪对象名称。
伪类选择器主要包括四种:动态伪类结构伪类否定伪类状态伪类

动态伪类

动态伪类是一类行为类样式,这些伪类不存在于HTML中,只有当用户与页面进行交互时才能体现出来。动态伪类选择器包括两种形式。

  • 描点伪类:这是在链接中常见到的样式,如:link:visited
  • 行为伪类:也称为用户操作的伪类,如:hover:active:focus
    | 伪类名称 | 说明 |
    | — | — |
    | :link | 链接没有被访问时设置的样式 |
    | :visited | 链接被访问过后的样式 |
    | :hover | 鼠标移动到元素上的样式 |
    | :active | 鼠标单击元素时的样式 |
    | :focus | 元素成为焦点是的样式,常用在表单上 |

示例:

<style>
    *{
        font-size: 12px;
    }
    a:link{
        color: rgb(128, 128, 128);
    }
    a:visited{
        color: yellow;
    }
    a:hover{
        color:green;
    }
    a:active{
        color:blue;
    }
</style>
<div id="header">
    <a href="https://www.baidu.com/">百度一下</a>
</div>
结构伪类

结构伪类是CSS3新设计的选择器,它利用文档结构树实现元素过度,通过文档结构的相互关系来匹配特定的元素,从而减少元素内class属性和ID属性的定义,使文档更加简洁。
结构伪类的形式如下:

结构伪类形式说明
:first-child选择某个元素的第一个子元素
:last-child选择某个元素的最后一个子元素
:nth-child()选择某个元素的一个或多个特定的子元素
:nth-last-child()选择某个元素的一个或多个特定的子元素,从这个元素的最后一个子元素开始计算
:nth-of-type()选择指定的元素
:nth-first-of-type()选择指定元素,从元素的最后一个开始计算
:first-of-type选择一个上级元素下的第一个同类子元素
:last-of-type选择一个上级元素下的最后一个同类子元素
:only-child选择的元素是它父元素的唯一一个子元素
:only-of-type选择一个元素是它上级元素唯一一个相同类型的子元素
:empty选择的元素里面没有任何内容

示例:

<style>
        *{
            font-size: 12px;
        }
        li:first-child{
            background-position: 2px 10px;
            font-weight: bold;
        }
        li:last-child{
            color: red;
        }
        li:nth-child(2){
            background-color: green;
        }
        li:nth-child(3n){
            background-color: rgb(128, 128, 128);
        }
    </style>
    <div id="header">
        <ul>
            <li><a>链接1</a></li>
            <li><a>链接2</a></li>
            <li><a>链接3</a></li>
            <li><a>链接4</a></li>
            <li><a>链接5</a></li>
            <li><a>链接6</a></li>
        </ul>
    </div>

界面:
image.png

否定伪类

:not()表示否定选择器,及排除或者过滤掉特定的元素。

<style>

        input:not([type="submit"]){
            border: 1px solid red;
        }
    </style>

    <div id="header">
        <label>
            邮箱:
            <input type="email"/> <br>
            用户:
            <input type="text"/> <br>
            密码:
            <input type="password"/> <br>
            <input type="submit"/>
        </label>
    </div>

除了提交类型的输入框,其他类型的输入框边框设置为特定的样式。
界面:
image.png

状态伪类

状态伪类主要是针对表单设计的,这里只做简单介绍。CSS3定义了常用的三种状态伪类选择器。

名称说明
:enable匹配指定范围内所有可用UI元素
:disable匹配指定范围内所有不可用元素
:checked匹配指定范围内所有可用UI元素

CSS3选择器的权重

浏览器通过优先级来判断哪些属性值与一个元素最为相关,从而在该元素上应用这些属性值。优先级是基于不同种类选择器组成的匹配规则。

优先级就是分配给指定的 CSS 声明的一个权重,它由 匹配的选择器中的 每一种选择器类型的 数值 决定。
而当优先级与多个 CSS 声明中任意一个声明的优先级相等的时候,CSS 中最后的那个声明将会被应用到元素上。
各选择器优先级权重如下:

选择器格式优先级权重
ID选择器#id100
类选择器/伪类选择器#classname10
属性选择器E[attr=“value”]10
标签选择器div1
通配符选择器*0

注意:

  • 当在一个样式声明中使用一个 !important 规则时,此声明将覆盖任何其他声明,这和权重无关。
  • 样式表的来源不同时,优先级顺序为:内联样式 > 内部样式 > 外部样式 > 浏览器用户自定义样式 > 浏览器默认样式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值