跳到主要内容CSS 样式基础与界面布局实战指南 | 极客日志HTML / CSS大前端
CSS 样式基础与界面布局实战指南
!请添加图片描述 前言 在网页开发领域,**CSS(层叠样式表,Cascading Style Sheets)** 是让网页从'单调结构'走向'美观交互'的关键技术:如果把 HTML 比作搭建网页骨架的'砖瓦',CSS 就是定义'外观风格'与'空间布局'的'设计师'——它能为网页赋予色彩、字体、间距、动画等视觉表现,让页面从'能用'真正升级为'好看且易用'。 对于想要入门前端开发,或是希望系统提升…
草莓泡芙80K 浏览 
前言
在网页开发领域,CSS(层叠样式表,Cascading Style Sheets) 是让网页从'单调结构'走向'美观交互'的关键技术:如果把 HTML 比作搭建网页骨架的'砖瓦',CSS 就是定义'外观风格'与'空间布局'的'设计师'——它能为网页赋予色彩、字体、间距、动画等视觉表现,让页面从'能用'真正升级为'好看且易用'。
对于想要入门前端开发,或是希望系统提升网页样式能力的学习者而言,CSS 是必须深入掌握的核心内容。从理解 CSS 的基本概念与语法逻辑,到学习如何将 CSS 与 HTML 进行结合;从灵活运用各类'选择器'精准控制页面元素,到熟练操作文本、背景、边框等基础样式属性,再到借助'盒模型''布局定位'(包括弹性布局等现代方案)打造符合需求的页面结构……每一个环节,都直接影响着最终网页的呈现效果。
本文将围绕 CSS 的核心知识体系逐步展开:从 CSS 的基础概念、引入方式讲起,深入解析'基础选择器''复合选择器'等样式控制逻辑,再系统讲解文本、背景、边框、盒模型,以及布局与定位(如元素显示模式、弹性布局)等常用属性。无论你是刚接触前端的新手,还是需要梳理 CSS 知识的开发者,都能通过本文建立清晰的 CSS 知识框架,为后续打造精美、专业的网页奠定基础。
现在,就让我们一同走进 CSS 的世界,探索网页样式与布局的无限可能。
一、CSS 是什么
1.1 概念
CSS 是层叠样式表(Cascading Style Sheets) 的缩写,核心作用是定义和控制网页的外观与布局,让 HTML 构建的网页结构更美观。
简单来说就是让原本朴素的网页,变得更加丰富、好看。相当于给网页进行'化妆'。
HTML 与 CSS 之间的关系就是:HTML 负责搭建网页的'骨架',比如创建标题、段落、图片等基础结构;CSS 则负责给这个'骨架'穿上'衣服',决定结构的视觉呈现效果。两者分工明确,共同构成了可视化的网页。
1.2 基本语法
<style>
选择器 {
一条 / N 条声明
}
</style>
- 选择器可以绝对要对那些板块进行修改、丰富;
- 后面大括号中的声明,则绝对能对该板块中的那些元素进行修饰;
- 声明的属性是键值对,后续会进行详细介绍。
二、CSS 如何引入 HTML
在 HTML 中使用 CSS 的方法大体上可以分为 3 种:
- 内部样式表;
- 行内样式表;
- 外部引入。
2.1 内部样式表
直接将 CSS 镶嵌到 HTML 页面中,通过<style>标签来进行嵌套。
- 直接将 CSS 放在,
head中,对标签进行修饰。
比如像百度网页中就有这种内部样式表的 CSS:

- 理论上
<style>放在 html 的任何位置都是可以的,一般都会放在head标签中。
此处我们也可以写一个简单的内部样式表的 CSS:
比如一下,我们对<p>标签的颜色进行修饰:
Document
这是第一段的内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
</title>
<style>
p {
color: red;
}
</style>
</head>
<body>
<p>
</p>
</body>
</html>
2.2 行内选择器
我们除了可以在<style>中对颜色进行设置,我们也是允许在一个具体标签中进行设置,比如:
<body>
<p style="color: red">这是第一段内容</p>
</body>
- 注意:如果行内样式表和内部样式表同时存在,行内样式表中的设置优先级更高。
2.3 外部引入
对于行内选择器来说,如果一个 html 文件很大的时候,如果我们想要对一个类别的标签进行修改,就需要将所有相同标签进行重复设置,耗时耗力,不便该方便。
对于内部样式表来说,将 CSS 嵌套到 HTML 中,并没有将 CSS 放在每一个具体标签中,确实将样式与页面结构进行了很好的分离,但是分离的还是不够彻底,当 CSS 内容很多的时候,尤其明显。
- 因此就出现了外部引入式:将 CSS 内容,全部都放到一个单独的 CSS 文件中,该文件以
.css后缀进行命名。
此时在进行编写 HTML 的时候,如果我们希望使用这种 CSS 样式,就需要进行链接。
<link rel="stylesheet" href="对应的 CSS 文件地址">
三、CSS 选择器
- CSS 中的选择器大体上分为两种:(1)基础选择器;(2)复合选择器。
3.1 基础选择器
基础选择器:由单个选择器构成,其中主要包含 4 种:
- 标签选择器;
- 类选择器;
- id 选择器;
- 通配符选择器。
3.1.1 标签选择器
<style>
h1 {
color: antiquewhite;
}
</style>
直接对标签进行选择,HTML 中所有该类型的标签都会被进行设置。一般这种标签使用较少。
3.1.2 类选择器
<style>
.name {
color: antiquewhite;
}
</style>
其中类名指的是,HTML 中我们对一些特定标签设置的类名称:
<body>
<p class="name">张三</p>
<p>12 岁</p>
</body>
一个标签可以设置多个类,中间用空格进行分割,比如:
3.1.3 id 选择器
- 通过 ID 来进行选择,与类不一样的是,每个标签只有一个 ID,并且每个标签的 ID 要求是唯一的。
<style>
#张三 {
color: red;
}
</style>
<body>
<p id="张三">张三</p>
<p>12 岁</p>
</body>
3.1.4 通配符选择器
- 在 CSS 中,通配符选择器用
* 表示,它的作用是匹配页面中所有 HTML 元素(包括 <html>、<body>、<p>、<div> 等所有标签)。它是一种范围最广的选择器,常用于全局样式初始化或批量设置基础样式。
* {
margin: 0;
padding: 0;
}
使用起来简单,在实际开发中,主要是用来针对页面中所有元素默认样式进行消除的,主要被用来消除边距。
3.2 复合选择器
复合选择器,顾名思义就是由多个基础选择器构成的,主要也是 4 种:
- 子选择器;
- 后代选择器;
- 并集选择器;
- 伪类选择器。
3.2.1 子选择器
<body>
<ul>
<li>内容 1</li>
<li>内容 2</li>
<li>内容 3</li>
</ul>
<ol>
<li>内容 1</li>
<li>内容 2</li>
<li>内容 3</li>
</ol>
</body>
此时我们想对<ul>中的<li>的输出样式进行设置,但是不想改变<ol>中的<li>就可以采用子选择器来实现:
<style>
ul > li {
color: red;
}
</style>
其中不仅仅可以是标签的父子关系,也可以是类名的父子关系。
3.2.2 后代选择器
后代选择器与上面的子选择器使用起来类似,只不过后代选择器不再仅仅现在在父子之间了,也可以爷孙等后代关系。
<style>
ul li {
color: red;
}
</style>
3.2.3 并集选择器
- 并集选择器,顾名思义就是对多个标签,类,id 同时进行设置,其中有逗号隔开。
<style>
ul, li {
color: red;
}
</style>
3.2.4 伪类选择器
伪类选择器是 CSS 中一类特殊的选择器,用于选择元素的特定状态、位置或关系,而不是基于元素的标签名、类名或 ID。它们以冒号 : 开头,语法为 选择器:伪类 { 样式 }。
- 伪类不直接匹配元素本身,而是根据元素的动态状态(如鼠标悬停)、文档结构位置(如第一个子元素)或特殊关系(如被点击的链接)来筛选元素,让样式控制更灵活。
比如百度页面中,对于被选中的标签设置为蓝色,没有被选中的标签设置为黑色。
:link:选择未被访问的;
:visited:选择已被访问的;
:hover:鼠标悬停的;
:active:活动的,鼠标按下但是还没有弹起的。
a:link {
color: #333;
}
a:visited {
color: #999;
}
四、CSS 常用属性
可以设置的属性有很多,此处就选择一些最为常见的进行介绍。
4.1 文本属性
| 名称 | 说明 |
|---|
| font-family | 字体类型 |
| font-size | 字体大小 |
| color | 字体颜色 |
| font-weight | 字体粗细程度 |
| font-style | 字体样式 |
| text-align | 文本对其方式 |
| text-indent | 文本缩进 |
| text-decoration | 字体装饰 |
| line-height | 行高 |
- 直接使用颜色对应的英文;
- 使用三原色进行表示:
#ff0000其中每两个十六进制表示一个颜色,从前往后:红绿蓝;
- 依旧是使用三原色进行表示:
rgb(255, 0, 0)从前往后还是:红绿蓝。
- 可以使用数字
100~900数字也大越粗;
- 也可以使用
bold/normal/light来进行表示。
字体类型font-style有三种形式:normal/italic/oblique分别表示正常,斜体和倾斜。
italic(斜体):使用字体本身自带的'斜体版本'。这种字体是由设计师专门设计的,倾斜角度、笔画粗细等细节会根据字体特性进行优化,整体风格更自然协调(例如衬线字体的斜体可能会有更明显的笔画变化)。
oblique(倾斜):不使用字体的斜体版本,而是将正常字体(正体,normal)通过算法强制倾斜一定角度得到的效果。它本质上是对正体文字的'变形处理',而非字体原生设计的斜体。
文本对齐方式text-align有三种:left/center/right分别表示左中右。
文本装饰text-decoration也有三种:underline/line-through/overline表示下划线,删除线和上划线。
4.2 背景属性
| 名称 | 说明 |
|---|
| background-color | 背景颜色 |
| background-image | 背景图 |
| background-repeat | 背景平铺方式 |
| background-position | 背景位置 |
| background-size | 背景大小 |
关于背景颜色和背景图就不再赘述了,此处详细介绍一下背景的平铺方式:
repeat(默认值):背景图像在水平方向(x 轴)和垂直方向(y 轴)同时重复平铺,直到完全填满元素的背景区域。
repeat-x:背景图像仅在水平方向(x 轴)重复平铺,垂直方向不重复(只显示一次)。
repeat-y:背景图像仅在垂直方向(y 轴)重复平铺,水平方向不重复(只显示一次)。
no-repeat:背景图像不重复平铺,仅在背景区域内显示一次。
对于背景的位置background-position可以直接设置 x 坐标和 y 坐标,也可以使用top/bottom/left/right来进行替代。
对于背景的大小background-size可以直接使用宽度和高度来进行设置,也可以使用提供的一些方式:
auto默认值:保持背景图像的原始尺寸(宽高比例不变),不进行缩放。
cover:背景图像会被等比例缩放,确保完全覆盖整个背景区域(可能会裁剪图像的边缘)。
contain:背景图像会被等比例缩放,确保图像完全显示在背景区域内(可能会在区域内留下空白)。
4.3 边框属性
- 对于内切圆半径,值越大,弧度越大。
- 百分比对应的:
- 圆角的水平半径(控制左右方向的曲率) = 元素宽度 × 百分比;
- 圆角的垂直半径(控制上下方向的曲率) = 元素高度 × 百分比;
4.4 盒模型属性
- 边框 border;
- 内容 content;
- 内边距 padding;
- 外边距 margin;
- 内边距就是内容相对于边框的距离;
- 外边距就是每一个边框之间的距离。
<style>
p {
width: 100px;
height: 50px;
color: red;
border: black solid;
padding: 10px;
margin: 100px;
}
</style>
<body>
<p>段落 1</p>
</body>
但是:我们的盒模型的宽和高明明是:100 50 的,为什么这里变成了 124*74 的,这也不难理解,因为我们设置了边框和内边距,因此盒子被撑大了。
如果不希望盒模型被撑大,可以设置box-sizing: border-box。
在上述进行设置的时候,我们是直接对上下左右的内边距,外边距进行设置的,CSS 也允许我们对单个进行设置:
padding-left/right/top/bottom: ...;
margin-left/right/top/bottom: ...;
4.5 布局与定位属性
4.5.1 元素显示模式
HTML 中的元素可以分为两种:块级元素,独占一行;行内元素。
对于行内元素来说,也可以通过 CSS 中的设置转变为块级元素:display: block。
4.5.2 弹性布局
- 弹性布局是一种手段,专门用于解决元素在容器中的对齐、分布和动态尺寸调整问题。
弹性容器:通过 display: flex 或 display: inline-flex 声明的父元素,它会'包裹'内部的子元素。
弹性布局通过'轴线'控制项目的排列方向,这是理解布局规则的核心:
- 主轴:默认沿主轴排列,方向由
flex-direction 决定(默认水平向右)。
- 交叉轴:垂直于主轴的轴线,方向随主轴变化(默认垂直向下)。
容器属性用于定义项目的排列方向、换行规则、对齐方式等,常用属性如下:
flex-direction:决定主轴方向(项目排列方向)
row(默认):主轴水平,项目从左到右排列。
row-reverse:主轴水平,项目从右到左排列。
column:主轴垂直,项目从上到下排列。
column-reverse:主轴垂直,项目从下到上排列。
.flex-container {
flex-direction: row;
}
默认情况下,项目会在主轴上'挤压'不换行,通过 flex-wrap 可设置换行规则:
nowrap(默认):不换行,项目可能被压缩。
wrap:换行,超出容器的项目移至下一行(沿交叉轴方向)。
wrap-reverse:换行,但新行在上方(交叉轴反向)。
.flex-container {
flex-wrap: wrap;
}
flex-flow:flex-direction + flex-wrap 的简写
语法:flex-flow: <flex-direction> <flex-wrap>,简化代码:
.flex-container {
flex-flow: row wrap;
}
justify-content:控制项目在主轴上的对齐方式
根据主轴方向(水平 / 垂直),控制项目的水平 / 垂直对齐:
flex-start(默认):靠主轴起点对齐。
flex-end:靠主轴终点对齐。
center:沿主轴居中对齐(常用:水平居中)。
space-between:项目两端对齐,中间间距相等(常用:两端分布)。
space-around:项目两侧间距相等(总间距 = 中间间距 ×2)。
space-evenly:项目之间及与容器边缘的间距完全相等。
.flex-container {
justify-content: center;
}
align-items:控制项目在交叉轴上的对齐方式:根据交叉轴方向(垂直 / 水平),控制项目的垂直 / 水平对齐:
stretch(默认):项目拉伸至填满交叉轴方向(需项目无固定高度 / 宽度)。
flex-start:靠交叉轴起点对齐。
flex-end:靠交叉轴终点对齐。
center:沿交叉轴居中对齐(常用:垂直居中)。
baseline:项目沿基线(文字基线)对齐。
.flex-container {
height: 300px;
align-items: center;
}
我们可以通过类似于这种弹性布局来实现,百度首页侧栏中的链接排列:
<style>
div {
margin-left: 20px;
display: flex;
height: 50px;
width: 500px;
justify-content: space-between;
align-items: center;
}
</style>
</head>
<body>
<div>
<span>新文</span>
<span>地图</span>
<span>贴吧</span>
<span>视频</span>
<span>图片</span>
<span>网盘</span>
</div>
</body>
相关免费在线工具
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown转HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
- HTML转Markdown
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
- JSON 压缩
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
- JSON美化和格式化
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online