六十天前端强化训练之第二天CSS选择器与盒模型深度解析
=====欢迎来到编程星辰海的博客讲解======
目录
一、CSS 核心概念
1. 三种引入方式
2. CSS 注释
3. 常见单位系统
二、CSS选择器核心知识
1. 基础选择器类型
2. 组合选择器
3. 伪类选择器(部分示例)
4. 优先级计算规则
三、盒模型深度解析
1. 标准盒模型图示
2. box-sizing详解
四、优先级覆盖实战案例
完整可运行代码
效果说明
五、学习要点总结
六、扩展阅读推荐
🚀 CodePen完全指南:从零开始玩转在线代码沙盒
—— 用浏览器就能写代码的神器,前端开发者的创意游乐场!
一、CSS 核心概念
1. 三种引入方式
HTML
<!-- 行内样式 --> <div style="color: red;">示例文字</div><!-- 内嵌样式 --> <head><style>.box { padding: 20px; }</style> </head><!-- 外部样式表 --> <link rel="stylesheet" href="styles.css">
2. CSS 注释
CSS
/* 单行注释 */ /*多行注释可跨多行 */
3. 常见单位系统
| 单位类型 | 示例 | 适用场景 |
|---|---|---|
| 绝对单位 | px, pt | 固定尺寸元素 |
| 相对单位 | em, rem, % | 响应式布局 |
| 视窗单位 | vw, vh | 全屏布局 |
| 颜色单位 | #fff, rgb() | 颜色定义 |
CSS(层叠样式表)的基本语法由选择器和声明块组成:
1. 选择器
指定要样式化的HTML元素。常见类型:
-
元素选择器:
p { ... }(选中所有<p>标签) -
类选择器:
.class { ... }(选中class="class"的元素) -
ID选择器:
#id { ... }(选中id="id"的元素)
2. 声明块
用大括号 {} 包裹,内部是属性-值对:
CSS
选择器 {属性1: 值;属性2: 值; }
示例:
CSS
p {color: red; /* 文字颜色 */font-size: 16px; /* 字号 */margin: 10px; /* 外边距 */ }
3. 属性和值
-
属性:要修改的样式类型(如
color,width) -
值:具体的样式设置(如
blue,50%,20px) -
每对属性值用
:连接,结尾用;分隔。
4. 注释
用 /* 注释内容 */ 添加说明。
5. 常见注意点
-
区分大小写(建议全小写)
-
分号不可省略(最后一个声明可省,但建议保留)
-
属性值可用空格、百分比、颜色名称等多种形式。
一句话总结:
通过 选择器 { 属性: 值; } 的格式,精准控制网页元素的样式表现。
二、CSS选择器核心知识
1. 基础选择器类型
CSS
/* 元素选择器 */ div { color: red; }/* 类选择器 */ .container { width: 1200px; }/* ID选择器 */ #main-nav { background: #333; }/* 属性选择器 */ input[type="text"] { border: 1px solid #ccc; }/* 通配符选择器 */ * { margin: 0; padding: 0; }
2. 组合选择器
CSS
/* 后代选择器 */ article p { line-height: 1.6; }/* 子选择器 */ ul > li { list-style: none; }/* 相邻兄弟选择器 */ h2 + p { margin-top: 0; }/* 通用兄弟选择器 */ h2 ~ p { color: #666; }
3. 伪类选择器(部分示例)
CSS
/* 动态伪类 */ a:hover { color: #f00; } input:focus { outline: 2px solid blue; }/* 结构伪类 */ li:nth-child(2n) { background: #f5f5f5; } tr:first-child { font-weight: bold; }
4. 优先级计算规则
权重等级表:
TEXT
!important > 行内样式(1000) > ID(100) > 类/属性/伪类(10) > 元素/伪元素(1)
计算示例:
CSS
#nav .item:hover // 100 + 10 + 10 = 120 div#header a.btn // 1 + 100 + 10 = 111
三、盒模型深度解析
1. 标准盒模型图示
TEXT
+-----------------------------------+ | margin(40) | | +-----------------------------+ | | | border(2) | | | | +-----------------------+ | | | | | padding(20) | | | | | | +-----------------+ | | | | | | | content(200) | | | | | | | +-----------------+ | | | | | +-----------------------+ | | | +-----------------------------+ | +-----------------------------------+
2. box-sizing详解
CSS
.box {box-sizing: content-box; /* 默认值 */box-sizing: border-box; /* 现代开发推荐值 */ }
尺寸计算对比:
TEXT
content-box: width = content宽度 border-box: width = content + padding + border
四、优先级覆盖实战案例
完整可运行代码
HTML
<!DOCTYPE html> <html> <head> <style>/* 元素选择器(权重:0,0,1) */div { width: 200px;padding: 20px;background: lightblue !important; /* 强制最高优先级 */}/* 类选择器(权重:0,1,0) */.priority-box {background: lightgreen;border: 2px solid darkgreen;}/* ID选择器(权重:1,0,0) */#specialBox {background: salmon;margin: 10px;}/* 行内样式(权重:1,0,0,0) */ </style> </head> <body><div class="priority-box" id="specialBox" style="background: goldenrod">优先级实践盒子</div> </body> </html>
效果说明

最终显示效果:
- 背景色:lightblue(!important强制覆盖)
- 边框:darkgreen(类选择器生效)
- 外边距:10px(ID选择器生效)
- 行内样式背景色被覆盖
五、学习要点总结
-
优先级黄金法则:
- !important > 行内样式 > ID > 类 > 元素
- 权重计算不采用十进制进位制
- 相同优先级时后定义的生效
-
盒模型要点:
- 总宽度 = width + padding + border + margin
- box-sizing改变计算方式
- 负margin的特殊应用场景
-
开发建议:
- 避免过度使用ID选择器
- 谨慎使用!important
- 统一使用border-box模型
CSS
* { box-sizing: border-box;margin: 0; padding: 0; }
六、扩展阅读推荐
-
官方文档:
- MDN CSS选择器
- W3C盒模型规范
-
深度文章:
- CSS选择器性能优化指南
- 现代CSS盒模型最佳实践
-
可视化工具:
- CSS选择器测试沙盒
- 交互式盒模型演示
建议通过Chrome开发者工具的Elements面板实时调试选择器匹配情况和盒模型计算细节,这是掌握这些概念的最佳实践方式。
相关文章:
六十天前端强化训练之第二天CSS选择器与盒模型深度解析
欢迎来到编程星辰海的博客讲解 目录 一、CSS 核心概念 1. 三种引入方式 2. CSS 注释 3. 常见单位系统 二、CSS选择器核心知识 1. 基础选择器类型 2. 组合选择器 3. 伪类选择器(部分示例) 4. 优先级计算规则 三、盒模型深度解析 1. 标准盒模型图…...
分享httprunner 结合django实现平台接口自动化方案
说明,可以直接在某个视图集定义自定义接口来验证。 调试1:前端界面直接编写yaml文件. 新增要实现存数据到mysql,同时存文件到testcase下, 如test.yaml 更新yaml数据,同时做到更新 testcase下的文件,如test.yaml acti…...
本地大模型编程实战(22)用langchain实现基于SQL数据构建问答系统(1)
使 LLM(大语言模型) 系统能够查询结构化数据与非结构化文本数据在性质上可能不同。后者通常生成可在向量数据库中搜索的文本,而结构化数据的方法通常是让 LLM 编写和执行 DSL(例如 SQL)中的查询。 我们将演练在使用基于 langchain 链 &#x…...
速通HTML
目录 HTML基础 1.快捷键 2.标签 HTML进阶 1.列表 a.无序列表 b.有序列表 c.定义列表 2.表格 a.内容 b.合并单元格 3.表单 a.input标签 b.单选框 c.上传文件 4.下拉菜单 5.文本域标签 6.label标签 7.按钮标签 8.无语义的布局标签div与span 9.字符实体 HTML…...
算法(四)——动态规划
文章目录 基本思想适用条件最优子结构子问题重叠状态转移方程 解题步骤应用斐波那契数列背包问题最大子数组和 基本思想 动态规划的核心思想在于将一个复杂的问题分解为一系列相互关联的子问题,通过求解子问题并保存其解,避免对相同子问题的重复计算&am…...
博客系统完整开发流程
前言 通过前⾯课程的学习, 我们掌握了Spring框架和MyBatis的基本使用, 并完成了图书管理系统的常规功能开发, 接下来我们系统的从0到1完成⼀个项⽬的开发. 企业开发的流程 1. 需求评审(产品经理(PM)会和运营(想口号),UI,测试,开发等沟通) ,会涉及到背景/目标/怎么做,可能会有多…...
【C语言】指针笔试题
前言:上期我们介绍了sizeof与strlen的辨析以及sizeof,strlen相关的一些笔试题,这期我们主要来讲指针运算相关的一些笔试题,以此来巩固我们之前所学的指针运算! 文章目录 一,指针笔试题1,题目一…...
大数据开发平台的框架
根据你的需求,以下是从 GitHub 推荐的 10 个可以实现大数据开发平台的项目: 1. Apache Spark Apache Spark 是一个开源的分布式计算框架,适用于大规模数据处理和分析。它提供了强大的数据处理能力,支持实时数据处理、机器学习和…...
【Python爬虫(53)】从入门到精通:Scrapy Spider开发全攻略
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
《Keras 3 : 使用迁移学习进行关键点检测》:此文为AI自动翻译
《Keras 3 :使用迁移学习进行关键点检测》 作者:Sayak Paul,由 Muhammad Anas Raza 转换为 Keras 3 创建日期:2021/05/02 最后修改时间:2023/07/19 描述:使用数据增强和迁移学习训练关键点检测器。 (i) 此示例使用 Keras 3 在 Colab 中查看 GitHub 源 关键点检测包…...
CentOS停服后的替代选择:openEuler、Rocky Linux及其他系统的未来展望
CentOS停服后的替代选择:openEuler、Rocky Linux及其他系统的未来展望 引言CentOS停服的背景华为openEuler:面向未来的开源操作系统1. 简介2. 特点3. 发展趋势 Rocky Linux:CentOS的精神继承者1. 简介2. 特点3. 发展趋势 其他可选的替代系统1…...
【Qt】桌面应用开发 ------ 绘图事件和绘图设备 文件操作
文章目录 9、绘图事件和绘图设备9.1 QPainter9.2 手动触发绘图事件9.3 绘图设备9.3.1 QPixmap9.3.2 QImage9.3.3 QImage与QPixmap的区别9.3.4 QPicture 10、文件操作10.1 文件读写10.2 二进制文件读写10.3 文本文件读写10.4 综合案例 9、绘图事件和绘图设备 什么时候画&#x…...
python与C系列语言的差异总结(3)
与其他大部分编程语言不一样,Python使用空白符(whitespace)和缩进来标识代码块。也就是说,循环体、else条件从句之类的构成,都是由空白符加上冒号(:)来确定的。大部分编程语言都是使用某种大括号来标识代码块的。下面的…...
OpenCV(9):视频处理
1 介绍 视频是由一系列连续的图像帧组成的,每一帧都是一幅静态图像。视频处理的核心就是对这些图像帧进行处理。常见的视频处理任务包括视频读取、视频播放、视频保存、视频帧处理等。 视频分析: 通过视频处理技术,可以分析视频中的运动、目标、事件等。…...
【C++设计模式】观察者模式(1/2):从基础到优化实现
1. 引言 在 C++ 软件与设计系列课程中,观察者模式是一个重要的设计模式。本系列课程旨在深入探讨该模式的实现与优化。在之前的课程里,我们已对观察者模式有了初步认识,本次将在前两次课程的基础上,进一步深入研究,着重解决观察者生命周期问题,提升代码的安全性、灵活性…...
2025年华为手机解锁BL的方法
注:本文是我用老机型测试的,新机型可能不适用 背景 华为官方已经在2018年关闭了申请BL解锁码的通道,所以华为手机已经无法通过官方获取解锁码。最近翻出了一部家里的老手机华为畅玩5X,想着能不能刷个系统玩玩,但是卡…...
在 CentOS 7.9上部署 Oracle 11.2.0.4.0 数据库
目录 在 CentOS 7.9上部署 Oracle 11.2.0.4.0 数据库引言安装常见问题vim粘贴问题 环境情况环境信息安装包下载 初始环境准备关闭 SELinux关闭 firewalld 安装前初始化工作配置主机名安装依赖优化内核参数限制 Oracle 用户的 Shell 权限配置 PAM 模块配置swap创建用户组与用户,…...
idea里的插件spring boot helper 如何使用,有哪些强大的功能,该如何去习惯性的运用这些功能
文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…...
Docker 搭建 Redis 数据库
Docker 搭建 Redis 数据库 前言一、准备工作二、创建 Redis 容器的目录结构三、启动 Redis 容器1. 通过 redis.conf 配置文件设置密码2. 通过 Docker 命令中的 requirepass 参数设置密码 四、Host 网络模式与 Port 映射模式五、检查 Redis 容器状态六、访问 Redis 服务总结 前言…...
JAVAweb之过滤器,监听器
文章目录 过滤器认识生命周期FilterConfigFilterChain过滤器执行顺序应用场景代码 监听器认识ServletContextListenerHttpSessionListenerServletRequestListener代码 过滤器 认识 Java web三大组件之一,与Servlet相似。过滤器是用来拦截请求的,而非处…...
计算机毕业设计SpringBoot+Vue.js足球青训俱乐部管理系统(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
基于 DeepSeek LLM 本地知识库搭建开源方案(AnythingLLM、Cherry、Ragflow、Dify)认知
写在前面 博文内容涉及 基于 Deepseek LLM 的本地知识库搭建使用 ollama 部署 Deepseek-R1 LLM知识库能力通过 Ragflow、Dify 、AnythingLLM、Cherry 提供理解不足小伙伴帮忙指正 😃,生活加油 我站在人潮中央,思考这日日重复的生活。我突然想,…...
QSplashScreen --软件启动前的交互
目录 QSplashScreen 类介绍 使用方式 项目中使用 THPrinterSplashScreen头文件 THPrinterSplashScreen实现代码 使用代码 使用效果 QSplashScreen 类介绍 QSplashScreen 是 Qt 中的一个类,用于显示启动画面。它通常在应用程序启动时显示,以向用户显…...
「软件设计模式」责任链模式(Chain of Responsibility)
深入解析责任链模式:用C打造灵活的请求处理链 引言:当审批流程遇上设计模式 在软件系统中,我们经常会遇到这样的场景:一个请求需要经过多个处理节点的判断,每个节点都有权决定是否处理或传递请求。就像企业的请假审批…...
蓝桥杯嵌入式客观题以及解释
第十一届省赛(大学组) 1.稳压二极管时利用PN节的反向击穿特性制作而成 2.STM32嵌套向量终端控制器NVIC具有可编程的优先等级 16 个 3.一个功能简单但是需要频繁调用的函数,比较适用内联函数 4.模拟/数字转换器的分辨率可以通过输出二进制…...
你对WebAssembly的看法是什么?
WebAssembly(Wasm)是一种新兴的技术,旨在通过提供一种新的低级字节码格式来提高 Web 应用程序的性能和效率。它与 JavaScript 互补,使得开发者可以将其他编程语言(如 C、C、Rust 等)编译为高效的字节码&…...
Qt在Linux嵌入式开发过程中复杂界面滑动时卡顿掉帧问题分析及解决方案
Qt在Linux嵌入式设备开发过程中,由于配置较低,加上没有GPU,我们有时候会遇到有些组件比较多的复杂界面,在滑动时会出现掉帧或卡顿的问题。要讲明白这个问题还得从CPU和GPU的分工说起。 一、硬件层面核心问题根源剖析 CPU&#x…...
vscode 版本
vscode官网 Visual Studio Code - Code Editing. Redefined 但是官网只提供最新 在之前的版本就要去github找了 https://github.com/microsoft/vscode/releases 获取旧版本vscode安装包的方法_vscode 老版本-CSDN博客...
low rank decomposition如何用于矩阵的分解
1. 什么是矩阵分解和低秩分解 矩阵分解是将一个矩阵表示为若干结构更简单或具有特定性质的矩阵的组合或乘积的过程。低秩分解(Low Rank Decomposition)是其中一种方法,旨在将原矩阵近似为两个或多个秩较低的矩阵的乘积,从而降低复…...
C# string转unicode字符
在 C# 中,将字符串转换为 Unicode 字符(即每个字符的 Unicode 码点)可以通过遍历字符串中的每个字符并获取其 Unicode 值来实现。Unicode 值是一个整数,表示字符在 Unicode 标准中的唯一编号。 以下是实现方法: 1. 获…...

