CSS 教程(长文解析)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观

前言

欢迎来到 CSS 教程!作为网页开发的核心技术之一,CSS(层叠样式表)负责控制网页的视觉呈现和布局结构。无论是初学者想要快速入门,还是中级开发者希望系统化提升技能,本篇教程都将通过清晰的逻辑、生动的比喻和实用的案例,帮助你掌握 CSS 的核心概念与高级技巧。


一、CSS 基础语法与选择器

1.1 基本语法结构

CSS 的基本语法由 选择器声明块 组成。选择器用于定位 HTML 元素,声明块则定义这些元素的样式属性。例如:

/* 选择所有 <h1> 元素,设置字体颜色和背景色 */  
h1 {  
  color: #333;  
  background-color: #f0f0f0;  
}  

这里的 h1 是选择器,colorbackground-color 是属性,而 #333#f0f0f0 是对应的值。

1.2 常用选择器类型

选择器是 CSS 的核心工具,通过不同语法可以精准定位元素。以下是几种常见类型:

  • 元素选择器:直接匹配 HTML 标签名,如 p(匹配所有段落)。
  • 类选择器:通过 .class 选择具有相同类名的元素,例如:
    .highlight {  
      border: 2px solid blue;  
    }  
    
  • ID 选择器:通过 #id 匹配唯一元素,例如:
    #header {  
      height: 60px;  
    }  
    
  • 后代选择器:通过空格连接选择器,例如 div .container 匹配所有位于 <div> 内的 .container 元素。

比喻:选择器就像快递员的地址单,越精确的地址(如 ID)越能直达目标,而通用地址(如元素选择器)则覆盖范围更广。


二、CSS 盒模型与布局基础

2.1 盒模型的结构

所有 HTML 元素在 CSS 中都被视为矩形盒子,包含以下四个部分:

  1. 内容(Content):元素实际展示的内容区域。
  2. 内边距(Padding):内容与边框之间的空白。
  3. 边框(Border):围绕内容的线条。
  4. 外边距(Margin):元素与其他元素之间的空白。

形象比喻:盒模型就像一个相框,内容是相片本身,padding 是相框内侧的留白,border 是相框边缘的线条,而 margin 则是相框外的悬挂距离。

2.2 盒模型的尺寸计算

元素的总宽度和高度计算公式如下:

总宽度 = 左边距(margin-left) + 左边框(border-left-width) + 左内边距(padding-left) + 内容宽度(width) + 右内边距(padding-right) + 右边框(border-right-width) + 右边距(margin-right)  

同理,高度计算方式相同。

常见问题:当设置 width: 100% 后,元素却超出容器边界?

  • 这是因为默认的盒模型包含 padding 和 border 在内。可通过 box-sizing: border-box; 让 width 仅包含内容区域,避免意外溢出。

三、布局技术:从 Flexbox 到 Grid

3.1 Flexbox 弹性布局

Flexbox 是解决一维布局(如水平或垂直排列)的利器。通过 display: flex; 将容器设为弹性容器,再通过以下属性控制子元素:

  • justify-content:控制主轴(水平)对齐方式。
  • align-items:控制交叉轴(垂直)对齐方式。

案例:实现水平居中的导航栏:

.nav-container {  
  display: flex;  
  justify-content: center; /* 水平居中 */  
  padding: 1rem;  
}  

3.2 CSS Grid 网格布局

Grid 用于二维布局(行和列),适合复杂页面结构。通过 display: grid; 定义网格容器,并定义列和行的轨道:

.grid-container {  
  display: grid;  
  grid-template-columns: repeat(3, 1fr); /* 三等分列 */  
  gap: 20px; /* 网格间距 */  
}  

比喻:Flexbox 像一条传送带,负责单向排列;Grid 则像棋盘,能精准控制行与列的交叉点。


四、响应式设计与媒体查询

4.1 媒体查询(Media Queries)

通过 @media 规则,可以根据屏幕尺寸动态调整样式,例如:

/* 当屏幕宽度小于 768px 时生效 */  
@media (max-width: 768px) {  
  .sidebar {  
    display: none; /* 隐藏侧边栏 */  
  }  
  .main-content {  
    width: 100%; /* 主内容占满屏幕 */  
  }  
}  

4.2 单位选择策略

  • 相对单位%(基于父元素)、vw/vh(视口宽度/高度)、rem/em(基于字体大小)适合响应式设计。
  • 绝对单位px 在需要精确控制时使用,但需结合其他单位适配不同设备。

案例:使用 max-widthmargin 实现居中自适应容器:

.container {  
  max-width: 1200px;  
  margin: 0 auto; /* 水平居中 */  
  padding: 20px;  
}  

五、进阶技巧与常见问题

5.1 伪元素与伪类

伪元素(如 ::before::after)和伪类(如 :hover:focus)可扩展元素的功能:

/* 为链接添加悬停效果 */  
a:hover {  
  text-decoration: underline;  
  color: #ff6b6b;  
}  

/* 使用伪元素创建箭头 */  
.arrow::before {  
  content: "";  
  border-style: solid;  
  border-width: 8px 8px 0 8px;  
  border-color: #333 transparent transparent transparent;  
  position: absolute;  
  bottom: -16px;  
  left: 50%;  
  transform: translateX(-50%);  
}  

5.2 CSS 优先级与继承规则

  • 优先级计算!important > 内联样式 > ID 选择器 > 类/属性选择器 > 元素选择器。
  • 继承:某些属性(如 color)会自动继承父元素的值,而 padding 等属性不会。

调试技巧:使用浏览器开发者工具(如 Chrome DevTools)检查元素的最终样式来源。


六、CSS 预处理器与框架

6.1 预处理器(如 Sass/LESS)

预处理器通过变量、嵌套、混合等特性提升代码效率。例如 Sass 中的变量用法:

$primary-color: #2962ff;  

.button {  
  background-color: $primary-color;  
  &:hover {  
    background-color: lighten($primary-color, 10%);  
  }  
}  

6.2 常用 CSS 框架

  • Bootstrap:提供栅格系统和组件库,适合快速搭建响应式页面。
  • Tailwind CSS:原子化类名,适合追求灵活性和定制化的项目。

结论

通过本文,我们系统地梳理了从 CSS 基础到进阶的多个核心知识点,并通过代码示例和实际案例加深理解。掌握 CSS 不仅需要记忆语法,更要理解其设计哲学——层叠性优先级。建议读者通过以下步骤巩固知识:

  1. 动手实践:尝试用 Flexbox 和 Grid 实现一个电商商品列表。
  2. 阅读文档:熟悉 MDN Web Docs 的 CSS 部分。
  3. 项目驱动学习:通过重构现有网页或开发小型项目,将理论转化为实战能力。

CSS 教程的学习是一个循序渐进的过程,保持耐心与好奇心,你将逐步解锁网页设计的无限可能!

最新发布