CSS零基础完整入门教程

42 阅读14分钟

CSS 零基础完整入门教程(超详细版)

1. CSS 简介

CSS 全称 层叠样式表(Cascading Style Sheets) ,是用于修饰和美化网页的核心语言,专门负责网页的视觉样式与布局。

HTML 负责搭建网页结构(骨架),CSS 负责渲染网页样式(颜值),同时 CSS 可配合 JavaScript 等脚本语言,动态修改网页元素样式,实现交互效果、动画效果等动态页面效果。

核心作用:统一页面样式、分离结构与样式、提升页面美观度、适配不同设备布局。


2. CSS 基础语法

2.1 完整语法结构

CSS 样式由 选择器样式声明 两部分组成,基础格式固定:

选择器 {
    属性名: 属性值;
    属性名: 属性值;
    /* 可编写多条样式声明,每条声明以分号结尾 */
}
  • 选择器:精准选中页面中需要设置样式的 HTML 元素
  • 属性:需要设置的样式类型(如字体、颜色、宽高、边距等)
  • 属性值:对应样式的具体参数,决定样式最终效果
  • 分号:每条样式声明结束标识,最后一条可省略,建议统一书写规范

2.2 CSS 注释

注释用于标注代码说明、备注逻辑,浏览器解析页面时会自动忽略注释内容,不生效、不占用页面资源。

支持单行/多行注释,统一格式:

/* 这里是注释内容,可单行、可多行 */

2.3 CSS 三种引入方式(优先级:行内 > 内嵌 > 外部)

1. 行内样式(不推荐)

直接在 HTML 标签的 style 属性中编写样式,优先级最高,但结构与样式混杂,不利于代码维护,仅临时调试使用。

<div style="color: red; font-size: 14px;">行内样式文本</div>

2. 内嵌样式(内部样式)

在 HTML 页面的 标签内,通过 标签书写 CSS 样式,仅作用于当前页面。

<head>
    <style type="text/css">
        /* 此处编写所有当前页面的CSS样式 */
        div { color: blue; }
    &lt;/style&gt;
&lt;/head&gt;

3. 外部样式(项目推荐)

将 CSS 代码单独写在 .css 后缀的外部文件 中,通过 标签引入页面,实现样式与结构完全分离,支持多页面复用。

引入位置:head 标签内,meta 标签下方、title 标签上方

<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="css文件的相对路径">
    <title>页面标题</title>
</head>

参数说明: rel="stylesheet":固定属性,声明当前引入的是样式表文件 href:填写 css 文件的相对/绝对路径


3. 常用 CSS 选择器(8大核心)

选择器的核心作用:精准匹配页面 HTML 元素,为其绑定样式,是 CSS 最基础、最重要的知识点。

3.1 标签选择器(元素选择器)

直接以 HTML 标签名作为选择器,选中页面中 所有同名标签,统一设置样式。

/* 选中页面所有div标签 */
div {
    color: #333;
    font-size: 14px;
}

3.2 类选择器(最常用)

.英文类名 定义,标签通过 class 属性调用,一个类名可作用于多个标签,一个标签可绑定多个类名,灵活性极高。

/* 定义类选择器 */
.box {
    width: 100px;
    height: 100px;
}
/* HTML调用:<div class="box"></div> */

3.3 ID 选择器

#ID名 定义,标签通过 id 属性调用,整个HTML页面中ID值必须唯一,不可重复,常用于定位唯一元素。

/* 定义ID选择器 */
#content {
    line-height: 1.8;
}
/* HTML调用:<div id="content"></div> */

3.4 后代选择器

通过 空格 分隔父子元素,选中父元素内部 所有层级 的指定子元素(子孙元素均生效)。

/* 选中类名为box元素内部的所有p标签 */
.box p {
    color: #666;
}

3.5 子代选择器

通过 > 分隔父子元素,仅选中父元素的 直接子元素,孙子及更深层级元素不生效。

/* 选中box的直接子级p标签 */
.box > p {
    font-weight: bold;
}

3.6 群组选择器(并集选择器)

通过 , 分隔多个选择器,为多个不同元素 统一设置相同样式,简化冗余代码。

/* 给div、p、span统一设置颜色 */
div, p, span {
    color: #222;
}

3.7 属性选择器

根据 HTML 标签的属性及属性值匹配元素,适合精准筛选带特定属性的标签。

/* 选中所有type为text的input标签 */
input[type="text"] {
    border: 1px solid #ccc;
}

3.8 通配符选择器

以 ***** 表示,匹配页面 所有HTML元素,常用于页面初始化样式重置。

/* 全局重置默认边距 */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

4. CSS 三大核心特性

4.1 层叠性

同一个元素可被多个 CSS 样式修饰,样式会自动叠加生效;若出现 相同样式属性冲突,则根据 选择器权重 决定最终生效样式,权重高的样式覆盖权重低的。

4.2 继承性

父元素设置的部分样式,会自动传递给后代子元素,无需重复设置,简化代码。

可继承属性(高频)

  • 字体类:font-size、font-weight、font-family
  • 文本类:color、text-align、text-indent、line-height
  • 其他:letter-spacing、word-spacing

不可继承属性:宽高、边距、边框、背景、定位、浮动等布局类属性

4.3 优先级(权重规则)

当同一元素的样式冲突时,按选择器权重优先级生效,权重越高,样式优先级越高;权重相同时,后写的样式覆盖先写的

权重优先级排序(从低到高) : 通配符选择器 < 标签选择器 < 类选择器 < 属性选择器 < ID选择器 < 行内样式 < !important(最高优先级,强制生效)

注意:!important 慎用,会破坏样式层级规则,不利于后期维护。


5. 文本与字体全套样式(高频常用)

5.1 字体样式(font 系列)

1. font-style(字体样式)

控制字体是否倾斜

  • normal:默认正常字体
  • italic:斜体字体(专属斜体字体,更美观)
  • oblique:强制倾斜(普通字体倾斜)

2. font-family(字体系列)

设置文本字体,可设置多个字体优先级,浏览器从左到右匹配,有则生效,无则顺延,全部无则使用系统默认字体

font-family: "微软雅黑", "宋体", sans-serif;

3. font-weight(字体粗细)

控制文字加粗效果,支持关键字与数字取值

  • normal:正常粗细(对应数值 400)
  • bold:加粗(对应数值 700)
  • lighter:细体
  • 数字取值:100-900 整数,数值越大字体越粗

4. font-size(字体大小)

设置文字尺寸,最常用单位为 px(像素) ,数值不可为负值。

5. line-height(行高)

控制文本行与行之间的间距,可实现文字垂直居中效果。

取值:normal(默认)、固定像素值、百分比、无单位数字(字体倍数,最常用)

5.2 文本样式(text 系列)

1. text-align(水平对齐)

控制块级元素内部文本、行内元素的水平对齐方式

  • left:默认左对齐
  • center:水平居中
  • right:右对齐
  • justify:两端对齐(仅多行文本生效)

2. color(文本颜色)

四种取值方式:

  • 英文单词:red、black、#333 等
  • 十六进制:#000000,可简写为三位(#000)
  • rgb(r,g,b):三原色取值 0-255
  • rgba(r,g,b,a):a 为透明度(0完全透明-1完全不透明)

3. text-indent(首行缩进)

设置段落首行缩进,常用单位 em(1em = 1个字体大小),支持负值(悬挂缩进)。

text-indent: 2em; /* 首行缩进两个字符 */

4. text-decoration(文本修饰线)

  • none:无修饰线(清除a标签默认下划线)
  • underline:下划线
  • overline:上划线
  • line-through:删除线

5. 间距与换行样式

  • letter-spacing:文字字符间距
  • word-spacing:英文单词间距
  • word-break:英文换行规则(break-all 强制截断换行)
  • word-wrap:长单词、URL 自动换行

6. 超链接伪类(a标签专属)

伪类用于设置元素 不同状态 的样式,a标签四个核心伪类,必须严格遵循 LVHA 顺序(link > visited > hover > active),否则失效。

  • a:link:未被访问的链接(初始状态)
  • a:visited:已被访问过的链接
  • a:hover:鼠标悬浮在链接上(所有标签通用
  • a:active:鼠标点击瞬间的激活状态

7. display 显示模式(布局核心)

控制元素的显示类型、是否占位、是否换行,是网页布局的核心属性。

  • none:隐藏元素,不占位、不占据页面空间
  • block:块级元素,独占一行,支持宽高、边距设置(div、p、h系列默认)
  • inline:行内元素,同行显示,不支持宽高(span、a、i默认)
  • inline-block:行内块元素,同行显示,支持宽高(img、input默认,最常用)
  • flex:弹性布局模式,适配现代网页布局

8. list-style 列表样式

专门用于修改有序、无序列表的默认标记样式,开发中最常用 清除默认样式

  • none:清除列表默认符号(高频使用)
  • disc:实心小圆点(无序列表默认)
  • circle:空心小圆点
  • decimal:阿拉伯数字(有序列表默认)

9. overflow 溢出处理

当元素内部内容尺寸 超出自身宽高 时,控制溢出内容的显示方式。

  • visible:默认值,溢出内容直接显示
  • hidden:溢出内容直接隐藏(高频使用)
  • scroll:强制显示横竖滚动条
  • auto:内容溢出时自动显示对应方向滚动条,无溢出则不显示

实用技巧:单行文本溢出显示省略号

/* 单行文字超出隐藏并显示三个小圆点 */
.text-ellipsis {
    display: -webkit-box;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 1;
}

10. 盒模型(网页布局基石)

网页中所有元素都可以看作一个矩形盒子,由内容区(content)、内边距(padding)、边框(border)、外边距(margin) 四部分组成,决定元素实际占位尺寸。

10.1 核心属性

1. width / height(内容宽高)

仅设置元素 内容区域 的尺寸,默认不包含边距和边框。支持 px、百分比、rem、vw 等单位。

2. padding(内边距)

元素内容与边框之间的距离,会撑大元素整体尺寸,取值遵循顺时针规则:上、右、下、左。

padding: 10px; /* 四边统一内边距 */
padding: 10px 20px; /* 上下10px,左右20px */
padding: 10px 20px 30px 40px; /* 上右下左顺时针 */

3. margin(外边距)

元素与其他元素之间的间距,不撑大自身尺寸,支持正负值,取值规则同 padding。

注意:margin 重叠问题:垂直方向相邻块级元素会发生外边距合并,取最大值生效,建议统一设置单边 margin 避免冲突。

10.2 元素实际尺寸计算公式

默认盒模型(content-box): 实际宽度 = width + 左右padding + 左右border 实际高度 = height + 上下padding + 上下border


11. border 边框样式

为元素设置四周边框,简写属性必须包含三个参数,缺一不可。

border: 宽度 样式 颜色;
/* 示例:1px 黑色实线边框 */
border: 1px solid #000;

边框样式取值:

  • solid:实线(最常用)
  • dashed:虚线
  • dotted:点状线
  • none:无边框

支持单边单独设置:border-top、border-bottom、border-left、border-right


12. box-sizing 盒模型切换

用于修改盒模型的尺寸计算规则,解决 padding、border 撑大元素的问题,项目全局必加

1. border-box(推荐)

设置的 width/height 为 元素最终实际尺寸,padding、border 会向内压缩内容区,不会撑大盒子。

2. content-box(默认)

width/height 仅为内容区尺寸,边距和边框会额外增加元素整体尺寸。


13. 背景全套样式

13.1 基础背景属性

  • background-color:背景颜色,取值同 color 文本颜色
  • background-image:背景图片,url(路径) 引入图片
  • background-repeat:背景重复方式(no-repeat 不重复、repeat-x 水平重复、repeat-y 垂直重复)
  • background-position:背景图位置(center 居中、top/right/bottom/left、自定义坐标)
  • background-size:背景图尺寸,控制图片缩放

13.2 简写属性

background: 颜色 图片地址 位置/尺寸 重复方式;

注意:background-size 属性必须紧跟在 position 后方,用 / 分隔。

13.3 渐变背景

1. 线性渐变(linear-gradient)

可实现上下、左右、对角渐变,支持多颜色、比例控制

/* 从上到下,红转蓝 */
background: linear-gradient(to bottom, red, blue);
/* 从左到右,红60%、蓝40% */
background: linear-gradient(to right, red 60%, blue);

2. 径向渐变(radial-gradient)

从中心向四周圆形扩散渐变,类似水波扩散效果

background: radial-gradient(red, yellow, blue);

14. position 定位布局

定位用于实现 层级布局、特殊位置摆放,可让元素脱离默认文档流,通过 top/left/right/bottom 控制位置。

14.1 relative 相对定位

相对于 自身默认位置 偏移,保留原有文档流位置,不脱离标准流,多用于配合绝对定位使用,极少单独布局。

14.2 absolute 绝对定位

脱离文档流,不占位;相对于 最近一层设置了定位的父元素 偏移,若无定位父级,则相对于 html 根元素。

核心搭配:父级相对定位(relative),子级绝对定位(absolute),实现元素内部精准定位。

14.3 fixed 固定定位

脱离文档流,相对于 浏览器窗口 固定位置,页面滚动时位置不变,常用于导航栏、回到顶部按钮、悬浮广告。

14.4 sticky 粘性定位

相对定位与固定定位的结合体,滚动页面时达到阈值后切换为固定定位,常用于吸顶导航。


15. 伪元素(高级样式)

伪元素用于 在元素前后创建虚拟子元素,无需新增HTML标签即可添加内容、装饰样式,属于行内元素。

强制规则:必须携带 content 属性,无内容则赋值空字符串,否则伪元素不生效。

15.1 ::before

在元素 内部最前方 生成虚拟内容

15.2 ::after

在元素 内部最后方 生成虚拟内容(常用于清除浮动)

/* 伪元素基础写法 */
.box::before {
    content: ""; /* 必须书写 */
    display: block;
    width: 10px;
    height: 10px;
    background: red;
}

16. Flex 弹性布局(现代布局首选)

Flex 布局是移动端、现代网页主流布局方案,完美解决传统浮动布局的高度塌陷、对齐困难等问题,布局简单灵活。

使用前提:给父元素设置 display: flex;,子元素自动成为弹性项目,支持各类对齐、排序、自适应效果。

16.1 父容器属性

1. flex-direction(排列方向)

  • row:默认,水平从左到右排列
  • row-reverse:水平反向排列(从右到左)
  • column:垂直从上到下排列
  • column-reverse:垂直反向排列(从下到上)

2. flex-wrap(换行规则)

  • nowrap:默认,不换行,子元素自动压缩
  • wrap:自动换行(最常用),超出父级宽度自动换行展示
  • wrap-reverse:反向换行

3. justify-content(水平对齐)

  • flex-start:默认左对齐
  • flex-end:右对齐
  • center:水平居中
  • space-between:两端对齐,子元素均匀分布(高频)
  • space-around:两侧留白均分,子元素间距统一

4. align-items(垂直对齐)

  • flex-start:顶部对齐
  • flex-end:底部对齐
  • center:垂直居中(高频)
  • stretch:默认拉伸,子元素高度铺满父级
  • baseline:文字基线对齐

5. flex-flow(复合属性)

简写 flex-direction 和 flex-wrap,默认值:row nowrap

flex-flow: row wrap;

6. align-content(多行垂直对齐)

仅适用于 多行弹性元素,控制整体垂直对齐方式,单行无效。

16.2 子元素项目属性

1. order(排列顺序)

控制子元素排序,默认值0,数值越小越靠前,支持负值。

2. flex-grow(放大比例)

默认0(不放大),设置为1时,自动均分父元素剩余空白空间。

3. flex-shrink(缩小比例)

默认1(自动缩小),设置为0时,元素不压缩,保持原有尺寸。

4. flex-basis(固定尺寸)

设置子元素基准宽度,优先级高于 width。

5. flex(复合简写)

简写 flex-grow、flex-shrink、flex-basis,移动端布局核心属性

flex: 1; /* 均分剩余空间,自适应布局 */

6. align-self(单独对齐)

单独控制某个子元素的垂直对齐方式,覆盖父级 align-items 全局样式。