CSS 选择器介绍

CSS 选择器介绍

1. 基本概念

CSS(层叠样式表)是一种用于描述 HTML 或 XML 文档外观的语言。通过 CSS,可以控制网页中元素的布局、颜色、字体等视觉效果。而 CSS 选择器则是用来指定哪些 HTML 元素应该应用这些样式的工具。

2. 基本选择器

  • 元素选择器(Element Selector)
    根据 HTML 元素名称来选择元素。

    p { color: blue; } /* 所有段落文字颜色为蓝色 */
    
  • 类选择器(Class Selector)
    通过 class 属性值来选择元素。以点 . 开头。

    .highlight { background-color: yellow; } /* 具有 highlight 类的元素背景色为黄色 */
    
  • ID 选择器(ID Selector)
    通过 id 属性值来选择唯一的一个元素。以井号 # 开头。

    #header { font-size: 24px; } /* ID 为 header 的元素字体大小为24像素 */
    
  • 通用选择器(Universal Selector)
    匹配所有 HTML 元素,使用星号 * 表示。

    * { margin: 0; padding: 0; } /* 所有元素的外边距和内边距均为0 */
    

3. 组合选择器

  • 后代选择器(Descendant Combinator)
    匹配某个元素的所有后代元素,使用空格分隔。

    div p { color: red; } /* 所有在 div 内部的 p 元素文字颜色为红色 */
    
  • 子代选择器(Child Combinator)
    匹配某个元素的直接子元素,使用 > 符号。

    ul > li { list-style-type: none; } /* 无序列表的直接子项 li 元素取消列表符号 */
    
  • 相邻兄弟选择器(Adjacent Sibling Combinator)
    匹配紧接在另一个元素后的元素,使用 + 符号。

    h2 + p { font-weight: bold; } /* 跟在 h2 后的下一个 p 元素字体加粗 */
    
  • 一般兄弟选择器(General Sibling Combinator)
    匹配同一个父元素下的所有同类型兄弟元素,使用 ~ 符号。

    li ~ li { color: green; } /* 所有 li 元素中第二个及以后的字体颜色为绿色 */
    

4. 伪类选择器

  • :link:visited
    用于链接的状态,分别表示未访问和已访问。

    a:link { color: blue; } /* 链接初始状态颜色为蓝色 */
    a:visited { color: purple; } /* 访问过的链接颜色为紫色 */
    
  • :hover
    当鼠标悬停在元素上时触发。

    button:hover { background-color: orange; } /* 悬停时按钮背景色变为橙色 */
    
  • :active
    表示被激活的元素,通常用于点击状态。

    a:active { color: red; } /* 点击链接时颜色为红色 */
    
  • :focus
    用于表单元素获得焦点时的状态。

    input:focus { border: 2px solid blue; } /* 输入框获得焦点时边框变为蓝色 */
    
  • :nth-child(n):nth-of-type(n)
    分别匹配第 n 个子元素和第 n 个同类型子元素。

    ul li:nth-child(2) { color: red; } /* 列表中第二个元素文字颜色为红色 */
    
  • :empty
    匹配没有内容的元素(不含文本节点)。

    div:empty { display: none; } /* 没有内容的 div 元素隐藏 */
    

5. 属性选择器

  • [attribute]
    匹配具有指定属性的元素。

    a[href] { color: blue; } /* 所有带有 href 属性的链接颜色为蓝色 */
    
  • [attribute=value]
    匹配属性值完全匹配的元素。

    img[src="logo.png"] { width: 200px; } /* src 为 logo.png 的图片宽度设为200像素 */
    
  • [attribute^=value]、[attribute$=value]、[attribute=value]*
    分别匹配属性值以 value 开头、结尾和包含 value。

    a[href^="https"] { color: green; } /* href 以 https 开头的链接颜色为绿色 */
    

6. 伪元素选择器

  • ::before::after
    在元素内容前或后插入内容,常用于添加图标、引号等。

    blockquote::before { content: "❝"; } /* 引用块前插入引号 */
    
  • ::first-line::first-letter
    分别匹配段落的第一行和第一个字母。

    p::first-line { font-weight: bold; } /* 段落第一行字体加粗 */
    
  • ::selection
    匹配用户选中的内容。

    ::selection { background-color: lightblue; } /* 选中文本背景色为浅蓝色 */
    

7. 高级选择器

  • :not(selector)
    匹配不满足指定条件的元素。

    :not(.highlight) { color: gray; } /* 不具有 highlight 类的元素颜色为灰色 */
    
  • :enabled:disabled
    用于表单元素,分别表示启用和禁用状态。

    input:disabled { opacity: 0.5; } /* 禁用的输入框透明度设为0.5 */
    

8. 组合选择器

  • 组合多个选择器
    可以通过逗号分隔多个选择器,同时应用样式。
    h1, h2, h3 { color: red; } /* 所有 h1、h2、h3 元素颜色为红色 */
    

9. 优先级与覆盖

  • 特定选择符
    使用 !important 提高样式的优先级。

    .error { color: red !important; } /* 强制应用红色 */
    
  • 内联样式
    直接在 HTML 元素中定义的样式具有最高优先级。

10. 响应式设计

  • 媒体查询
    根据设备特性应用不同的样式。
    @media screen and (max-width: 600px) {nav { display: none; }
    } /* 屏幕宽度小于等于600像素时隐藏导航 */
    

11. CSS 模块化

  • 导入规则
    使用 @import 导入其他样式表,但需注意顺序和性能。
    @import url('normalize.css'); /* 导入 normalize.css 文件 */
    

12. 常用技巧

  • 重置默认样式
    通过引入 reset.css 或自定义规则清除浏览器默认样式。

    * { margin: 0; padding: 0; box-sizing: border-box; } /* 设置所有元素的边距和盒子模型 */
    
  • 使用变量
    CSS 变量(Custom Properties)提高代码复用性。

    :root {--primary-color: #3498db;
    }
    body { color: var(--primary-color); } /* 使用变量定义主色调 */
    

13. 性能优化

  • 减少计算
    避免复杂的计算,尽可能使用预设值或固定单位。

    width: 50%; /* 避免写成 calc(100% / 2) */
    
  • 避免过度布局
    确保 CSS 布局结构合理,减少重排和重绘。

14. 兼容性

  • 使用前缀
    为确保旧浏览器支持新特性,添加相应的厂商前缀。

    .box {display: flex;display: -webkit-flex; /* Chrome 早期版本 */
    }
    
  • 测试与调试
    使用浏览器的开发者工具检查样式应用情况,并进行必要的调整。

15. 工具与资源

  • 预处理器
    如 Sass、Less 等,提供变量、嵌套等高级功能。

    $primary-color: #3498db;
    .header { color: $primary-color; }
    
  • 构建工具
    使用Webpack、Gulp等自动化处理 CSS 文件。

  • UI 框架
    Bootstrap、Foundation 等提供现成的组件和布局,加速开发进程。

16. 最佳实践

  • 代码规范
    保持代码整洁,适当分隔功能模块,添加注释方便维护。

  • 版本控制
    使用 Git 等工具管理 CSS 文件变更,便于协作与回溯。

通过以上内容的学习和实践,可以系统地掌握 CSS 的核心概念、高级技巧以及最佳实践,从而在实际项目中开发出高效、优雅且兼容性良好的网页样式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/902612.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3父子组件数据同步方法

在 Vue 3 中&#xff0c;当子组件需要修改父组件传递的数据副本并同步更新时&#xff0c;可以通过以下步骤实现&#xff1a; 方法 1&#xff1a;使用 v-model 和计算属性&#xff08;实时同步&#xff09; 父组件&#xff1a; vue <template><ChildComponent v-mo…

el-table中el-input的autofocus无法自动聚焦的解决方案

需求 有一个表格展示了一些进度信息&#xff0c;进度信息可以修改&#xff0c;需要点击进度信息旁边的编辑按钮时&#xff0c;把进度变为输入框且自动聚焦&#xff0c;当鼠标失去焦点时自动请求更新接口。 注&#xff1a;本例以vue2 element UI为例 分析 这个需求看着挺简单…

用高斯溅射技术跨越机器人模拟与现实的鸿沟:SplatSim 框架解析

在机器人领域&#xff0c;让机器人在现实世界中精准执行任务是大家一直追求的目标。可模拟环境和现实世界之间存在着不小的差距&#xff0c;特别是基于 RGB 图像的操作策略&#xff0c;从模拟转移到现实时总是状况百出。 今天咱们就来聊聊 SplatSim 框架&#xff0c;看看它是怎…

【自然语言处理与大模型】如何知道自己部署的模型的最大并行访问数呢?

当你自己在服务器上部署好一个模型后&#xff0c;使用场景会有两种。第一种就是你自己去玩&#xff0c;结合自有的数据做RAG等等&#xff0c;这种情况下一般是不会考虑并发的问题。第二种是将部署好的服务给到别人来使用&#xff0c;这时候就必须知道我的服务到底支持多大的访问…

[FPGA基础] UART篇

Xilinx FPGA UART 硬件接口使用指南 1. 引言 UART (通用异步收发器) 是一种广泛使用的串行通信接口&#xff0c;因其简单、可靠和易于实现而成为 Xilinx FPGA 设计中的常见硬件接口。UART 用于在 FPGA 与外部设备&#xff08;如 PC、微控制器、传感器等&#xff09;之间进行数…

【Netty4核心原理】【全系列文章目录】

文章目录 一、前言二、目录 一、前言 本系列虽说本意是作为 《Netty4 核心原理》一书的读书笔记&#xff0c;但在实际阅读记录过程中加入了大量个人阅读的理解和内容&#xff0c;因此对书中内容存在大量删改。 本系列内容基于 Netty 4.1.73.Final 版本&#xff0c;如下&#xf…

用 PyTorch 和numpy分别实现简单的 CNN 二分类器

作业用到的知识&#xff1a; 1.Pytorch: 1. nn.Conv2d&#xff08;二维卷积层&#xff09; 作用&#xff1a; 对输入的多通道二位数据&#xff08;如图像&#xff09;进行特征提取&#xff0c;通过滑动卷积核计算局部区域的加权和&#xff0c;生成新的特征图。 关键参数&a…

使用n8n构建自动化工作流:从数据库查询到邮件通知的使用指南

n8n是一款强大的开源工作流自动化工具&#xff0c;可以帮助你将各种服务和应用程序连接起来&#xff0c;创建复杂的自动化流程。下面我将详细介绍一个实用的n8n用例&#xff1a;从MySQL数据库查询数据并发送邮件通知&#xff0c;包括使用场景、搭建步骤和节点部署方法。 使用场…

Vscode已经打开的python项目,如何使用已经建立的虚拟环境

在 VS Code 中使用已创建的 Conda/Mamba 虚拟环境 pe100&#xff0c;只需以下几步&#xff1a; 步骤 1&#xff1a;确保虚拟环境已存在 在终端运行以下命令&#xff0c;检查 pe100 环境是否已正确创建&#xff1a; conda activate pe100 python --version # 应显示 Python 3…

Volatility工具学习

背景 VMware虚拟机系统hang死&#xff0c;手动重启无法触发系统panic&#xff0c;从而不能触发kdump产生vmcore文件进行原因分析&#xff1b;此种情况下需要手动生成虚拟机内存快照&#xff0c;进而利用Volatility工具分析系统hang死的具体原因。 配置 使用VMware创建虚拟机…

学习笔记(C++篇)--- Day 4

目录 1.赋值运算符重载 1.1 运算符重载 1.2 赋值运算符重载 1.3 日期类实现 1.赋值运算符重载 1.1 运算符重载 ①当运算符被用于类类型的对象时&#xff0c;C语言允许我们通过通过运算符重载的形式指定新的含义。C规定类类型对象使用运算符时&#xff0c;必须转换成调用对…

Docker 快速入门教程

1. Docker 基本概念 镜像(Image): 只读模板&#xff0c;包含创建容器的指令 容器(Container): 镜像的运行实例 Dockerfile: 用于构建镜像的文本文件 仓库(Repository): 存放镜像的地方&#xff08;如Docker Hub&#xff09; 2. 安装Docker 根据你的操作系统选择安装方式:…

vue项目中使用tinymce富文本编辑器

vue使用tinymce 文章目录 vue使用tinymcetinymce富文本编辑器在这里插入图片描述 一、本文要实现二、使用步骤1.安装tinymce2.tinymce组件新建3. 在store添加商品详情的状态管理4. tinymce组件的引入 tinymce富文本编辑器 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下…

简单适配torch_npu不支持的ATen算子

简单适配torch_npu不支持的ATen算子 一、背景说明1.1 PyTorch扩展机制1.2 核心概念二、实现步骤详解2.1 实现前向、反向传播算子2.2 编译生成动态库2.3 测试验证程序三、关键点解析3.1 设计注意事项3.2 性能优化方向四、验证结果一、背景说明 1.1 PyTorch扩展机制 PrivateUse1…

同样的html标记,不同语言的文本,显示的字体和粗细会不一样吗

同样的 HTML 标记&#xff0c;在不同语言的文本下&#xff0c;显示出来的字体和粗细确实可能会不一样&#xff0c;原因如下&#xff1a; &#x1f30d; 不同语言默认字体不同 浏览器字体回退机制 CSS 里写的字体如果当前系统不支持&#xff0c;就会回退到下一个&#xff0c;比如…

基于 Spring Boot 瑞吉外卖系统开发(六)

基于 Spring Boot 瑞吉外卖系统开发&#xff08;六&#xff09; 菜品列表 在系统管理端首页&#xff0c;单击左侧菜单栏中的“菜品管理”&#xff0c;会在右侧打开菜品管理页面。 请求URL/dish/page&#xff0c;请求方法GET,请求参数page&#xff0c;pageSize。 该菜品列表…

计算机视觉与深度学习 | TensorFlow基本概念与应用场景:MNIST 手写数字识别(附代码)

TensorFlow 基本概念 TensorFlow 是一个开源的机器学习框架,由 Google 开发,核心概念包括: 张量(Tensor):多维数组,是数据的基本单位。计算图(Graph):早期版本中用于描述数据流和计算过程,2.x 默认启用即时执行(Eager Execution),兼顾灵活性和性能。层(Layers)…

vue+django+LSTM微博舆情分析系统 | 深度学习 | 食品安全分析

文章结尾部分有CSDN官方提供的学长 联系方式名片 文章结尾部分有CSDN官方提供的学长 联系方式名片 关注B站&#xff0c;有好处&#xff01; 编号&#xff1a; D031 LSTM 架构&#xff1a;vuedjangoLSTMMySQL 功能&#xff1a; 微博信息爬取、情感分析、基于负面消极内容舆情分析…

RHCE第三次作业 搭建dns的正向解析服务器

server为服务器 client为客户端 设置主配置文件 在server下&#xff1a; [rootServer ~]#vim /etc/named.conf #进入到配置页面&#xff0c;并修改 设置区域文件 [rootServer ~]# vim /etc/named.rfc1912.zones 设置域名解析文件 [rootServer named]# cd /var/named…

Windows 同步技术-一次性初始化

组件通常设计为在首次调用时执行初始化任务&#xff0c;而不是加载它们时。 一次性初始化函数可确保此初始化仅发生一次&#xff0c;即使多个线程可能尝试初始化也是如此。 Windows Server 2003 和 Windows XP&#xff1a; 应用程序必须使用 互锁函数 或其他同步机制提供自己的…