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

六十天前端强化训练之第二天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. 属性和值

  • 属性:要修改的样式类型(如 colorwidth

  • :具体的样式设置(如 blue50%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选择器生效)
  • 行内样式背景色被覆盖

五、学习要点总结
  1. 优先级黄金法则

    • !important > 行内样式 > ID > 类 > 元素
    • 权重计算不采用十进制进位制
    • 相同优先级时后定义的生效
  2. 盒模型要点

    • 总宽度 = width + padding + border + margin
    • box-sizing改变计算方式
    • 负margin的特殊应用场景
  3. 开发建议

    • 避免过度使用ID选择器
    • 谨慎使用!important
    • 统一使用border-box模型

    CSS

    * { 
      box-sizing: border-box;
      margin: 0; 
      padding: 0; 
    }
    


六、扩展阅读推荐
  1. 官方文档:

    • MDN CSS选择器
    • W3C盒模型规范
  2. 深度文章:

    • CSS选择器性能优化指南
    • 现代CSS盒模型最佳实践
  3. 可视化工具:

    • CSS选择器测试沙盒
    • 交互式盒模型演示

建议通过Chrome开发者工具的Elements面板实时调试选择器匹配情况和盒模型计算细节,这是掌握这些概念的最佳实践方式。

相关文章:

  • DeepSeek技术提升,Linux本地部署全攻略
  • 【面试手撕】多线程/并发编程
  • 在 compare-form.vue 中添加 compareDate 隐藏字段,并在提交时自动填入当前时间
  • [OS] 基于RR(Round Robin)算法的CPU调度
  • ubuntu20.04 突破文件数限制
  • 前言:什么是大模型微调
  • 企业级大模型应用的Java-Python异构融合架构实践
  • 本地部署大模型: LM Studio、Open WebUI 与 Chatbox 全面对比以及选型指南
  • 在windows下安装windows+Ubuntu16.04双系统(上)
  • 公共数据授权运营模式研究(总体框架、主要模式及发展趋势)
  • linux下软件安装、查找、卸载
  • QT入门--QMainWindow
  • 2025年2月,TVBOX接口最新汇总版
  • C#实现本地AI聊天功能(Deepseek R1及其他模型)。
  • 五、 Spring Framework基础:Spring Data JPA基本用法与 Repository 接口
  • 在 Windows 上配置 Ollama 服务并开放局域网访问
  • Spring MVC框架二:创建第一个MVC程序
  • Redis-列表结构实操
  • labview实现有符号位16进制转二进制补码转真值
  • 数据结构与算法面试专题——桶排序
  • 警方通报男子广州南站持刀伤人:造成1人受伤,嫌疑人被控制
  • 齐白石精品在波士顿展出,“白石画屋”呈现水墨挥洒
  • 中科飞测将投资超10亿元,在上海张江成立第二总部
  • 七旬男子驾“老头乐”酒驾被查,曾有两次酒驾两次肇事记录
  • 中国-拉共体成员国重点领域合作共同行动计划(2025-2027)
  • 西北大学副校长成陕西首富?旗下巨子生物去年净利超20亿,到底持股多少