css的选择器

CSS(层叠样式表)选择器用于选择 HTML 元素并应用样式。以下是一些基本的 CSS 选择器及其执行优先级(即选择器的特异性和层叠顺序)。

基本选择器

  1. 通用选择器(Universal Selector):

    • 选择所有元素。
    • 语法:*
    css 复制代码
    * {
        margin: 0;
        padding: 0;
    }
  2. 类型选择器(Type Selector):

    • 选择特定类型的元素。
    • 语法:element
    css 复制代码
    p {
        color: blue;
    }
  3. 类选择器(Class Selector):

    • 选择具有特定类的元素,类名以 . 开头。
    • 语法:.classname
    css 复制代码
    .highlight {
        background-color: yellow;
    }
  4. ID 选择器(ID Selector):

    • 选择具有特定 ID 的元素,ID 以 # 开头。
    • 语法:#idname
    css 复制代码
    #header {
        font-size: 24px;
    }
  5. 属性选择器(Attribute Selector):

    • 选择具有特定属性的元素。
    • 语法:[attribute] 或 [attribute="value"]
    css 复制代码
    input[type="text"] {
        border: 1px solid #ccc;
    }
  6. 伪类选择器(Pseudo-class Selector):

    • 选择处于特定状态的元素。
    • 语法:element:pseudo-class
    • :hover:当鼠标悬停在元素上时应用样式。
      :focus:当元素获得焦点时应用样式。
      :active:当元素被激活(如被点击)时应用样式。
      :nth-child(n):选择父元素的第 n 个子元素。
      :first-child:选择父元素的第一个子元素。
      :last-child:选择父元素的最后一个子元素。
    css 复制代码
    a:hover {
        color: red;
    }
  7. 伪元素选择器(Pseudo-element Selector):

    • 选择元素的特定部分。
    • 语法:element::pseudo-element
    • ::before:在元素内容之前插入内容。
      ::after:在元素内容之后插入内容。
      ::first-line:选择元素的第一行文本。
      ::first-letter:选择元素的第一个字母。
    css 复制代码
    p::first-line {
        font-weight: bold;
    }
  8. 组合选择器(Combinator Selector):

    • 选择与其他元素关系的元素。
    • 语法:
      • 后代选择器 :ancestor descendant
      • 子选择器 :parent > child
      • 相邻兄弟选择器 :prev + next
      • 一般兄弟选择器 :prev ~ siblings
    css 复制代码
    div p {
        color: green; /* 后代选择器 */
    }

执行先后顺序(特异性和层叠)

CSS 的选择器执行顺序由特异性(Specificity)和层叠(Cascade)规则决定。以下是特异性的计算规则:

  1. 内联样式(Inline styles):

    • 直接在元素的 style 属性中定义的样式,特异性最高。
    • 特异性:1000
  2. ID 选择器:

    • 每个 ID 选择器的特异性为 100。
    • 特异性:100
  3. 类、伪类和属性选择器:

    • 每个类、伪类或属性选择器的特异性为 10。
    • 特异性:10
  4. 类型选择器和伪元素选择器:

    • 每个类型选择器或伪元素选择器的特异性为 1。
    • 特异性:1
  5. 通用选择器:

    • 通用选择器的特异性为 0。
    • 特异性:0

层叠规则

当多个选择器匹配同一元素时,CSS 将根据以下规则决定应用哪个样式:

  1. 特异性:特异性高的选择器优先级更高。
  2. 来源顺序:如果特异性相同,后定义的样式将覆盖先前定义的样式。
  3. 重要性 :使用 !important 声明的样式将覆盖其他样式(即使它们的特异性更高)。

示例

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS Selectors</title>
    <style>
        /* 通用选择器 */
        * {
            margin: 0;
            padding: 0;
        }

        /* 类型选择器 */
        p {
            color: blue;
        }

        /* 类选择器 */
        .highlight {
            color: yellow;
        }

        /* ID 选择器 */
        #main {
            color: red;
        }

        /* 内联样式 */
        <p style="color: green;">This is a paragraph.</p>
    </style>
</head>
<body>
    <div id="main">
        <p class="highlight">This is a highlighted paragraph.</p>
        <p>This is a normal paragraph.</p>
    </div>
</body>
</html>

在这个示例中,特异性和层叠规则将决定每个段落的颜色。内联样式的段落将显示为绿色,因为它具有最高的特异性。

相关推荐
Dovis(誓平步青云)9 分钟前
常用命令藏得太深?怎么做一个快捷命令坞
运维·前端·自动化·音视频·prometheus
IT_陈寒1 小时前
Vite的这个问题坑了我三天,原来如此解决!
前端·人工智能·后端
网易云信1 小时前
大模型能上岗做销售吗?我们让 12 款国产模型交了 420 份作业
前端·后端
蜗牛互联网1 小时前
Python Agent工具调用的白名单、参数校验与审批门禁
java·服务器·前端·人工智能·后端·python
计算机魔术师1 小时前
Perplexity:每个 Project 都是一个 Git 仓库
前端
Andrew5512 小时前
让 AI 写页面不再“一眼假”:我把设计品味做成了一个 Claude Code Skill 流水线
前端
乐享qicheng2 小时前
14-AI智能管家JSBridge深度问答
前端
10年前端老司机2 小时前
我用 Vue3 + LangGraph 做了个心理咨询 AI,踩了 9 个坑后总结出来的实战经验
前端·langchain·agent
数据掘金2 小时前
A/B 实验分组参数回滚后还在生效?一次参数校验体系的重构复盘
前端
bmxy小明同学3 小时前
2026-10-09-token与成本
java·前端·数据库