当前位置: 首页 > news >正文

有哪些 CSS 选择器?请分别介绍

CSS 选择器(CSS Selectors)是用于选择 HTML 元素并应用样式的模式。它们是 CSS 的核心,决定了哪些元素会受到样式规则的影响。

以下是 CSS 选择器的详细分类和介绍:

1. 基础选择器 (Basic Selectors)

这些是最常用、最基础的选择器。

  • 通配符选择器 (Universal Selector)

    • 符号:*
    • 作用: 选择文档中的所有元素。
    • 示例:* { margin: 0; padding: 0; }(常用于重置默认边距)
  • 类型选择器 / 标签选择器 (Type/Tag Selector)

    • 符号: 标签名 (如div,p,h1)
    • 作用: 选择所有指定标签名的元素。
    • 示例:p { color: blue; }(选择所有<p>标签)
  • 类选择器 (Class Selector)

    • 符号:.(点号) + 类名
    • 作用: 选择所有class属性包含指定值的元素。一个元素可以有多个类。
    • 示例:.btn { background: red; }(选择<div class="btn"><button class="btn primary">)
  • ID 选择器 (ID Selector)

    • 符号:#(井号) + ID 名
    • 作用: 选择id属性匹配的元素。ID 在页面中应该是唯一的。
    • 示例:#header { height: 100px; }(选择<div id="header">)
  • 属性选择器 (Attribute Selector)

    • 符号:[attr],[attr=value],[attr~=value],[attr|=value],[attr^=value],[attr$=value],[attr*=value]
    • 作用: 根据元素存在的属性或属性的值进行选择。
    • 示例:
      • [target]: 选择所有带有target属性的元素。
      • [type="text"]: 选择type为 “text” 的输入框。
      • a[href^="https"]: 选择所有href以 “https” 开头的链接。
      • img[src$=".png"]: 选择所有src以 “.png” 结尾的图片。

2. 层次结构选择器 (Combinators)

用于根据元素之间的层级关系进行选择。

  • 后代选择器 (Descendant Combinator)

    • 符号: 空格
    • 作用: 选择指定元素内部的所有后代元素(无论嵌套多深)。
    • 示例:div p { color: red; }(选择所有在<div>内部的<p>标签,包括<div><div><p>)
  • 子选择器 (Child Combinator)

    • 符号:>
    • 作用: 选择指定元素的直接子元素(仅一层)。
    • 示例:div > p { color: red; }(选择所有直接位于<div>下的<p>标签,不包括嵌套更深的<p>)
  • 相邻兄弟选择器 (Adjacent Sibling Combinator)

    • 符号:+
    • 作用: 选择紧接在指定元素之后的第一个同级元素。
    • 示例:h1 + p { margin-top: 0; }(选择紧跟在<h1>后面的第一个<p>)
  • 通用兄弟选择器 (General Sibling Combinator)

    • 符号:~
    • 作用: 选择指定元素之后的所有同级元素。
    • 示例:h1 ~ p { color: gray; }(选择<h1>之后所有的<p>兄弟元素)

3. 伪类选择器 (Pseudo-classes)

用于选择处于特定状态的元素,或者基于文档结构中的位置进行选择。

  • 用户交互伪类:

    • :hover: 鼠标悬停时。
    • :active: 元素被激活(如鼠标点击瞬间)时。
    • :focus: 元素获得焦点(如输入框被选中)时。
    • :visited: 链接已被访问过。
    • :disabled/:enabled: 表单元素被禁用或启用。
  • 结构伪类:

    • :first-child: 选择作为其父元素第一个子元素的元素。
    • :last-child: 选择作为其父元素最后一个子元素的元素。
    • :nth-child(n): 选择父元素的第n个子元素(支持2n,odd,even)。
    • :nth-of-type(n): 选择父元素中指定类型的第n个子元素。
    • :only-child: 选择父元素的唯一子元素。
    • :first-of-type/:last-of-type: 选择指定类型的第一个或最后一个子元素。
  • 其他伪类:

    • :not(selector): 选择不匹配指定选择器的元素(否定选择器)。
    • :empty: 选择没有子元素(包括文本节点)的元素。
    • :target: 选择当前活动的 URL 锚点目标元素。
    • :checked: 选择被选中的单选框或复选框。

4. 伪元素选择器 (Pseudo-elements)

用于选择元素的特定部分,并为其应用样式,而不是整个元素。

  • ::before: 在元素内容之前插入生成的内容。
  • ::after: 在元素内容之后插入生成的内容。
    • 注意:通常配合content属性使用。
  • ::first-line: 选择元素文本的第一行
  • ::first-letter: 选择元素文本的第一个字母
  • ::selection: 选择被用户选中的文本部分(如鼠标拖拽选中)。
  • ::placeholder: 选择输入框的占位符文本。

5. 其他选择器

  • 选择器列表 (Selector List)

    • 符号:,(逗号)
    • 作用: 将多个选择器组合在一起,对它们应用相同的样式。
    • 示例:h1, h2, h3 { font-weight: bold; }
  • 层级选择器 (CSS 4 新增,部分浏览器支持)

    • :has(selector): 父选择器。如果元素包含匹配selector的后代,则选中该元素。
    • 示例:div:has(> p)(选择包含直接子元素<p><div>)

选择器优先级 (Specificity)

当多个选择器匹配同一个元素时,浏览器根据优先级决定应用哪个样式。优先级从高到低大致如下:

  1. !important(强制覆盖,慎用)
  2. 内联样式(style="...")
  3. ID 选择器(#id)
  4. 类选择器、属性选择器、伪类(.class,[attr],:hover)
  5. 标签选择器、伪元素(div,::before)
  6. 通配符、组合符(*,>,+,~)

计算规则:通常用 (ID 数量, 类数量, 标签数量) 来比较。例如,#id .class的优先级高于.class .class .class

http://www.jsqmd.com/news/533281/

相关文章:

  • ai辅助开发:让快马理解需求并生成keil5下c51与stm32的差异化灯光控制代码
  • 魔兽争霸3游戏体验终极优化指南:WarcraftHelper完全使用教程
  • 5步释放10GB磁盘空间:DriverStore Explorer高效清理指南
  • P3DE (Processing 3D Editor) 三维场景编辑器 软件白皮书 基于 v0.4.8 - SHARP
  • LeetCode-146:LRU 缓存,哈希表 + 双向链表,让查找和淘汰都是 O(1)
  • 如何计算 CSS 的优先级?
  • 【杂记-浅谈IPv6过渡技术之6to4网络技术】
  • 火狐+Burp Suite代理配置全攻略:从零搭建Pikachu靶场测试环境
  • Cortex-M3 数据端(大小端)深度剖析:默认配置与修改的设计权衡
  • CSS 中可继承与不可继承属性有哪些?
  • nlp_structbert_sentence-similarity_chinese-large实战案例:政务热线工单语义聚类分析
  • 基于AI多因子定价模型的“乱世买黄金”被打破?黄金1500美元回撤的因子归因分析
  • 手把手教你用BQ34Z100评估板搭建电池管理系统(附接线图与寄存器配置)
  • NES游戏开发实战:从VS Code编写6502汇编到一键生成.nes文件的完整流水线
  • Loop窗口管理工具深度指南:提升Mac多任务效率的完整方案
  • Youtu-Parsing模型单片机项目文档处理:自动化生成数据手册摘要
  • 优麒麟20.04 LTS换源实战:为什么华为云镜像比官方源快这么多?
  • 从‘异或’难题到神经网络革命:感知机模型被‘嫌弃’的那段历史
  • RexUniNLU零样本NLP系统保姆级教程:日志分析与常见错误码解读
  • Dify+ECharts:打造企业级智能报表自动化流水线
  • C语言高级编程技巧:非常规用法解析
  • 基于Qwen3-ASR的语音爬虫:音频内容自动化采集与分析
  • 社区API网关开发:bbs-go统一入口实现指南
  • 【小沐学GIS】基于C++构建三维地球交互应用(QT、OpenGL、glfw、glut)
  • Electron应用打包神器:NSIS从入门到精通(Windows平台保姆级教程)
  • YOLOv7完整指南:如何快速上手最先进的实时目标检测模型
  • 解决PyTorch性能瓶颈:Intel Extension for PyTorch的4个实战技巧
  • nli-distilroberta-base效果展示:模型对否定词、程度副词、隐含前提的鲁棒性案例
  • 算法教学中的交互式可视化实验平台研究的技术6
  • Graphiti:构建时态感知知识图的创新框架