CSS Basic Tutorial
What is CSS?
CSS(Cascading Style Sheet)是用于控制页面样式与布局并允许样式信息与网页内容相分离的一种标记性语言。如果HTML是人,那么CSS就是我们身上的衣服和化妆品!
CSS由选择器,属性和属性值组成:
1 | |
- 选择器:用于定义CSS样式名称
- 属性:例如网页中的字体样式、字体颜色等
- 属性值:例如字体的大小、颜色等
- 属性和属性值必须写在{}内,且用“:”隔开
- 每写完一个完整的属性和属性值,必须用“;”隔开
- 如果一个属性有多个属性值,每个属性值用
space隔开
引入CSS
1.内联引入
每个HTML元素都拥有一个<style>属性,我们的CSS代码都是作为HTML中<style>属性的属性值出现的:
1 | |
这是段落
2.内部引入
当我们页面有很多元素时,这样内联引入CSS样式代码显然是不合适的,比如当同一个元素需要复用同一种样式,我们需要在每一个元素内部手动添加,这样产生很多重复性的操作和劳动。所以我们可以将有相同需求的元素整理好分成许多类别,让相同类别元素使用同一种样式。
我们使用<style>标签进行对CSS的引入,在页面的<head>区域引入<style>标签,在其中写入需要的CSS样式:
1 | |
3.外部引入
在我们实际开发过程中,项目的页面不会少,如果我们希望所有的页面都使用同一个CSS样式,那么我们就需要将CSS样式单独放在一个文件中(新建一个以.css为后缀名的样式表)然后通过<link>标签引入到我们的页面中,这是你还会发现,当我们需要对所有页面进行样式修改时,就只需要修改一个CSS文件,不用对所有页面逐个修改!
CSS选择器
1.元素选择器
对HTML元素进行选取,如<p>、<ul>等
1 | |
2.类选择器
通过class属性确定类名进行选取,相同类名的元素含有相同的CSS样式
1 | |
- 类选择器前需要加
. - 在
vscode中,属性名+.+类名,Tab自动补全<元素 class=“类名”>的形式
3.ID选择器
以上两种都是对同一类元素进行选取和操作,当我们需要单独为一个元素进行操作时,通过id属性确定ID名进行选取,如<p id="title">、<ul id="list">,相同ID名的含有相同的CSS样式
1 | |
- ID选择器前需要加
#
网页常用样式
字体
font-family字体
font-size字号
- 像素(px)
- 点数(pt)
- 英寸(in)、厘米(cm)、毫米(mm)
- 倍数(em)
- 百分比(%)
font-weight字重
- 正常(normal):400
- 加粗(bold):700
- 更粗(bolder)
- 更细(lighter)
- 数字(100~900):只能写成整百的数字
color颜色
相关内容前文有相应介绍,不再赘述
- color_name
- hex_number
- rgb_number
- rgba_number
text-decoration文本修饰
- none:无修饰
- underline:下划线
- overline:上划线
- line-through:中划线
- blink:闪烁
段落
letter-spacing字间距
- normal:正常
- length:长度
word-spacing词间距
- normal:正常
- length:长度
text-indent缩进
- length:长度
- %:百分比
text-align水平对齐
- left:左对齐
- right:右对齐
- center:居中对齐
- justify:两端对齐
vertical-align垂直对齐
- top:顶部对齐
- middle:垂直居中对齐
- bottom:底部对齐
line-height行间距
- normal:正常
- number:与当前字体尺寸相乘来设置行间距
- length:固定行间距
边框
border-style边框线型
- none:无边框
- hidden:隐藏边框
- dotted:点状边框
- dashed:虚线边框
- solid:实线边框
- double:双线边框
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
border-color边框颜色
border-width边框宽度
盒子模型

根据上图,俯视这个盒子,内边距(padding)可以理解为盒子里装的东西和边框的距离;而边框(border)就是盒子本身;内容(content)就是盒子中装的东西;外边距就是边框外面自动留出的一段空白;而填充(padding)就是怕盒子里装的东西损坏而添加的泡沫或者其他抗震材料;至于边界(margin)则说明盒子摆放时不能全部堆在一起,要留有一定空隙保持通风,同时方便取出!
外边距设置
使用margin属性设置外边距,margin边界环绕在该元素的content区域四周,如果margin为0,则margin边界与border边界重合。
| 属性 | 描述 |
|---|---|
margin-top |
上外边距 |
margin-right |
右外边距 |
margin-bottom |
下外边距 |
margin-left |
左外边距 |
margin属性值仍然有四个参数,对应上、右、下、左即顺时针方向旋转

1 | |
当两个垂直外边距相遇时,他们将会形成一个外边距,合并后的外边距的高度等于两个外边距的最大高度(注意不是外边距相加)

内边距设置
使用padding属性设置内边距,内边距在边框和内容区之间,padding属性接受长度值和百分比,但不允许使用负值。
| 属性 | 描述 |
|---|---|
padding-top |
上内边距 |
padding-right |
右内边距 |
padding-bottom |
下内边距 |
padding-left |
左内边距 |
弹性盒子
默认流式布局中,块级元素(如div)会独占一行,多个div会垂直堆叠,无法横向排列;而当我们使用float和inline-box进行横向排列时,会带来间距、对齐、父元素高度塌陷等问题。
当一种页面需要适应不同的屏幕大小以及设备类型时,弹性盒子可以确保元素拥有恰当行为的布局方式,这样的布局模型能提供一种更有效的方式来对一个容器中的子元素进行排列、对齐、分配空白空间!
- 只要给容器设置
display: flex;任何一个容器我们都可以设置为弹性盒子 - 设为
flex布局以后,子元素的float、clear、vertical-align属性将失效
flex-direction:设置排列方向(沿纵轴还是横轴)(正序还是倒序)
| 值 | 描述 | 动画演示 |
|---|---|---|
row |
默认值,水平显示,起点在左端 | 1️⃣2️⃣3️⃣4️⃣_ _ _ _ |
row-reverse |
盒子方向相反,且起点在右端 | _ _ _ _4️⃣3️⃣2️⃣1️⃣ |
column |
垂直显示,起点在上端 | 无 |
column-reverse |
盒子方向相反,且起点在下端 | 无 |
justify-content:在主轴(横轴)上的对齐方式
| 值 | 描述 | 动画演示 |
|---|---|---|
flex-start |
起点在左端 | 1️⃣2️⃣3️⃣4️⃣_ _ _ _ |
flex-end |
终点在右端 | _ _ _ _1️⃣2️⃣3️⃣4️⃣ |
center |
居中对齐 | _ _1️⃣2️⃣3️⃣4️⃣ _ _ |
space-between |
项目之间的间隔相等,紧贴左右两端 | 1️⃣ _ 2️⃣ _ 3️⃣ _ 4️⃣ |
space-around |
每个项目两侧的间隔相等 | _ 1️⃣ _ 2️⃣ _ 3️⃣ _ 4️⃣ _ |
space-evenly |
项目之间的间隔相等,且项目两侧的间隔相等 | _ 1️⃣ _ 2️⃣ _ 3️⃣ _ 4️⃣ _ |
align-items:在侧轴(纵轴)上的对齐方式
| 值 | 描述 |
|---|---|
flex-start |
起点在上端 |
flex-end |
终点在下端 |
center |
居中对齐 |
baseline |
基线对齐 |
stretch |
auto尽可能接近所在行的尺寸 |
flex-wrap:弹性盒子的换行方式
| 值 | 描述 |
|---|---|
nowrap |
默认值,不换行,盒子会被压缩 |
wrap |
换行,第一行在上方 |
wrap-reverse |
反向换行,第一行在下方 |
align-content:多行情况下侧轴(纵轴)的对齐方式
| 值 | 描述 |
|---|---|
stretch |
默认值auto,将占满整个容器的高度 |
flex-start |
起点在上端 |
flex-end |
起点在下端 |
center |
上下居中对齐 |
space-between |
项目之间的间隔相等 |
space-around |
每个项目两侧的间隔相等 |
该属性只在多行(flex-wrap: wrap或flex-wrap: wrap-reverse)的情况下生效!
下面是使用CSS和HTML创建的“待办事项”demo!

1 | |