,它们同时具有块元素和行内元素的特点,故我们称其为行内块元素。
行内块元素的特点
和相邻行内元素在一行上,但是它们之间会有空白缝隙,一行可以显示多个。
默认宽度就是它本身内容的高度。
高度、行高、外边距以及内边距可以控制。
3.7.5 总结
元素显示模式总结
| 元素模式 | 元素排列 | 设置样式 | 默认宽度 | 包含 |
|---|
| 块级元素 | 一行只能放一个块级元素 | 可以设置宽度高度 | 容器的100% | 容器级可以包含任何标签 | | 行内元素 | 一行可以放多个行内元素 | 不可以设置宽度和高度 | 它本身内容的宽度 | 容纳文本或者其他行内元素 | | 行内块元素 | 一行放多个行内元素 | 可以设置宽度和高度 | 它本身内容的宽度 | |
3.7.6 元素显示模式转换
元素显示模式转换
一个特别的例子是,我们要点击一个链接。正常情况下,链接的点击范围应该是字体之上,但是我们想扩大它的点击范围,这就需要使用元素模式的转换。
a标签属于行内元素无法设置高宽,只有完成元素模式转换,将其赋予块级元素的特性之后使其可设置宽高才能扩大它的点击范围。
转换方式
- 转换为块元素:display:block(重要)
- 转换为行内元素:display:inline(不常用)
- 转换为行内块元素:display:inline-block(普通)
- 隐藏元素:display:none
程序清单3_7_6
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content=" -width, initial-scale=1.0">
<title>简单小米侧边栏演示title>
<style>
a{
display: block;
width: 230px;
height: 40px;
background-color: #55585a;
color: #fff;
font-size: 14px;
text-decoration: none;
text-indent: 2em;
line-height: 40px;
}
a:hover{
background-color: orange;
}
style>
head>
<body>
<a href="#">手机 电话卡a>
<a href="#">电视 盒子a>
<a href="#">笔记本 平板a>
<a href="#">出行 穿戴a>
<a href="#">智能 路由器a>
<a href="#">健康 儿童a>
<a href="#">耳机 音响a>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
注:CSS没有提供让一行文字在一个元素中垂直居中的代码。但是我们可以让文字的行高等于盒子的高度,这样就可以做到垂直居中的效果。
3.8 CSS背景
3.8.1 背景的设置
背景颜色
语法:background-color:transparent | color。
说明:如果不填颜色,则默认透明(transparent)
背景图片
语法:background-image:none | url(“”)
说明:如果不指定则默认无背景图,否则使用绝对路径或相对路径插入图片
应用:描述了元素的背景图像。在实际开发中常见于一些logo或者一些装饰性的小图片或者是超大的背景图片,优点是便于控制位置。
背景平铺
平铺:若图片不及容器那么大,则采用复制的形式平铺填充整个容器。
语法:backgroud-repeat:repeat | no-repeat | repeat-x | repeat-y
说明:
- repeat代表背景图像在纵向和横向上平铺
- no-repeat代表背景图像不平铺
- repeat-x代表背景图像横向平铺
- repeat-y代表背景图像纵向平铺
3.8.2 背景方位设置
背景图片位置
语法:background-position:x y
说明:x坐标和y坐标可以使用方位名词或者精确单位
| 参数值 | 说明 |
|---|
| length | 百分数|由浮点数字和单位标识符组成的长度值 | | position | top | center | bottom | left | center | right |
注:
-
使用方位名词时,x和y的取值确定后顺序无所谓。如center top和top center的效果相同。 -
使用方位名词时,如果只指定了一个方位名词,另外一个值省略,则第二个值默认为居中对齐。 -
使用精确坐标时,第一个肯定是x坐标,第二个肯定是y坐标,这时顺序十分重要。 -
使用精确坐标时,如果只指定了一个数值,那该数值一定是x坐标,另外一个默认垂直居中。 -
如果指定的x和y是使用方位名词和精确坐标混用,则第一个值一定是x坐标,第二个值一定是y坐标。
3.8.3 背景附着
背景图像附着
语法:background-attachment:scroll | fixed
说明:可以设置背景图像固定还是随着页面的其余部分滚动。scroll表示滚动,fixed表示固定。
3.8.4 背景复合写法
复合写法
格式:background:背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置;
3.8.5 透明度
背景颜色半透明
格式:background:rgba(0,0,0,0.3)
说明:最后一个参数为alpha透明度,取值为0~1之间。
注:
-
我们可以把小数前面的0去掉,只保留小数点及后面数字即可,如0.3常写作.3。 -
背景半透明指的是容器背景半透明,上面存放的其他元素不会受到影响。 -
这种写法是CSS3才新增的,必须要IE9+版本浏览器才能支持。
3.8.6 背景总结
| 属性 | 作用 | 值 |
|---|
| background-color | 背景颜色 | 预定义的颜色值/十六进制/RGB代码 | | background-image | 背景图片 | url(“”) | | backgroud-repeat | 背景平铺 | repeat/no-repeat/repeat-x/repeat-y | | background-position | 背景位置 | length/position | | background-attachment | 背景附着 | scroll /fixed | | 背景简写 | 书写简单 | 背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置; | | 背景色半透明 | 背景颜色半透明 | background:rgba(0,0,0,0.3);后面必须是4个值 |
3.9 CSS三大特性
3.9.1 层叠性
层叠性
相同选择器给相同的元素设置样式,此时一个样式会覆盖另一个冲突的样式。层叠性遵循就近原则,那个样式离结构近,就执行哪个样式。
程序清单3_9_1
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
div{
height: 200px;
background-color: aqua;
}
div{
background-color:pink;
}
style>
head>
<body>
<div>测试文本1div>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
一些说明
打开网页,点击检查,点击元素,可以看到div设置的上一个冲突样式被删除线划掉,意为被覆盖或失效。

3.9.2 继承性
继承性
子标签会继承父标签的某些样式,如文本颜色和字号。
恰当使用继承性可以简化很多代码。
不是所有的样式都能继承,如text-,font-,line-这些元素开头的样式以及color属性大多数能继承。
程序清单3_9_2
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
div{
height: 200px;
background-color: aqua;
font-size : 12px;
}
style>
head>
<body>
<div>
<p>测试案例1p>
div>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
一些说明
打开网页,点击检查,点击元素,点击p标签,可看到p标签继承自div标签。

3.9.3 优先级
-
当一个元素指定了多个选择器,就会有优先级的产生。 -
选择器相同,则执行层叠性。 -
选择器不同,则根据选择器的权重来选择。
选择器的权重
| 选择器 | 选择器权重 |
|---|
| 继承或者* | 0,0,0,0 | | 元素(标签)选择器 | 0,0,0,1 | | 类选择器,伪类选择器 | 0,0,1,0 | | ID选择器 | 0,1,0,0 | | 行内样式 | 1,0,0,0 | | 样式!important | 无穷大 |
注:看权重时将逗号省略,如行内样式看做1000。数值越大,权重越大。这实际上很容易记忆:如果选择器的精度越高,则其权重越高。
CSS权重的叠加
下面给出一段代码作为演示
<style>
div{
background-color: skyblue;
}
div p{
background-color: yellow;
}
style>
<body>
<div>
<p>测试内容1p>
div>
body>
在上面的演示中,div标签选择器的权重是0,0,0,1。而div p的后代选择器的权重为div标签选择器权重0,0,0,1加上p标签选择器权重0,0,0,1,结果为0,0,0,2。该权重比div标签的权重要大,故p的内容应该是黄色,而不是天蓝色。
3.10 盒子模型
3.10.1 盒子模型概述
页面布局的三大核心
- 盒子模型
- 浮动
- 定位
看透网页的布局
- 网页大多数可以看做是多个盒子组成的
- 我们可以利用CSS设置好盒子的样式,然后摆放到对应的位置
- 往盒子里面装内容
盒子模型的组成
把HTML页面中的布局元素看做是一个矩形的盒子。CSS盒子模型本质上也是一个盒子,封装周围的HTML元素。它包括外边距、边框、内边距和实际内容。
- 外边距(margin):一个盒子和另外一个盒子之间的距离
- 内边距(padding):盒子边框和盒子内部元素之间的距离
- 边框(border):盒子的外围
- 实际内容(content):盒子中存放的元素
注:
边框会影响盒子的实际大小。如一个盒子长200px,宽100px,设定边框宽度为10px,则盒子会变成210px×110px,故我们实际测量盒子时一般都是测内壁。
内边距会影响盒子的实际大小。如一个盒子长200px,宽100px,设定内边距为10px,则盒子会变成210px×110px,因为盒子会被撑大。如果想要盒子不被撑大,那就不要设置盒子的长宽属性。
3.10.2 边框
边框属性
| 属性 | 说明 |
|---|
| border-width | 边框粗细 | | border-style | 边框样式 | | border-color | 边框颜色 |
注:如果想要简化代码,也可以写成border:border-width border-style border-color的连写形式。
边框样式的选值
| 选值 | 说明 |
|---|
| solid | 实线边框 | | dashed | 虚线边框 | | dotted | 点线边框 |
表格的边框
对于表格来说也可以应用边框属性,不过表格中含有多个标签,属性加在不同的标签上面效果是不一样的。
程序清单3_10_2
DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
#Test1{
width: 400px;
height: 100px;
margin:0 auto;
background: pink;
border:4px dashed yellow;
}
#Test2{
width: 400px;
height: 100px;
background: pink;
margin:0 auto;
border-width: 4px;
border-style:solid;
border-color:blue;
}
table,td{
font-size:14px;
text-align:center;
border: solid pink;
border-collapse: collapse;
}
style>
head>
<body>
<div id = "Test1">div>
<div id= "Test2">div>
<table align=center>
<caption>演示表格1caption>
<thead>
<th>
姓名
th>
<th>
学号
th>
<tbody>
<tr>
<td>ArimaMisakitd>
<td>20195140td>
tr>
thead>
table>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
3.10.3 内边距
准确的控制
内边距除了直接使用padding,我们还可以控制其上下左右的内边距。
| 属性 | 作用 |
|---|
| padding-left | 左内边距 | | padding-right | 右内边距 | | padding-top | 上内边距 | | padding-bottom | 下内边距 |
复合写法
使用padding也可以做到准确的控制。
| |
|---|
| padding:5px | 代表四面内边距都是5px | | padding:5px 10px | 代表上下5px,左右10px | | padding:5px 10px 20px | 代表上5px左右10px下20px | | padding:5px 10px 20px 30px | 代表顺时针依次px |
程序清单3_10_3
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
div{
margin: 0 auto;
width:200px;
height: 100px;
background-color: rgb(244, 94, 119);
padding: 2em 4em 3em 4em;
}
style>
head>
<body>
<div>
如果把世上每一个人的痛苦放在一起,再让你去选择,你可能还是愿意选择自己原来的那一份
div>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
3.10.4 外边距
准确的控制
和内边距一样,如果想要准确控制就后面加一横杆再加方位的英语,复合写法和内边距差不多,这里不再赘述。
外边距的应用
外边距可以使得块级盒子水平居中,条件是盒子必须指定了宽度,并且盒子的左右外边距都设置为auto。如:
- margin-left:auto;margin-right:auto;
- margin:auto;
- margin:0 auto;
行内元素和行内块元素水平居中
在前面我们已经有提及了,使用text-align:center即可。
外边距的塌陷问题
如果定义了两个盒子,一个A盒子一个B盒子,B盒子嵌套在A盒子之中,两个盒子的标签为父子关系。若想要使得B盒子在A盒子中使用margin来往垂直距离挪一点点,则会发生塌陷,即子盒子外边距影响了父盒子的外边距。
较好的办法有三种:
- 为父元素定义边框
- 为父元素定义内边距
- 为父元素添加:overflow:hidden
如果盒子是浮动盒子、固定盒子、绝对定位盒子则不会有塌陷问题。
清除内外边距
不同的浏览器网页会自带内外边距,故在使用时我们要使用通配符选择器清除默认内外边距。
行内元素为了照顾兼容性,我们一般指设置左右内外边距,而不设置上下内外边距。如果是行内块元素或是块级元素则无需注意。
3.10.5 圆角边框
圆角边框
如果我们想要使用圆角的边框,可以设置border-radius。如border-radius:10px 。需要注意的是,border-radius的值可以是一个,也可以是四个;如果是四个值,则表示从左上角开始顺时针方向每个圆角的半径。
圆角边框的原理
从名字上看,我们可以理解radius实际上是半径的意思。我们输出该样式的值为生成一个半径为输入值的圆在盒子的内部,然后于盒子内壁相切,生成的角即为圆角。

程序清单3_10_5
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
div{
margin: 0 auto;
height: 100px;
width: 200px;
background-color: pink;
border-radius: 30px;
}
style>
head>
<body>
<div>div>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
3.10.6 盒子阴影
盒子阴影及其语法
使用box-shadow可以为盒子增加阴影
语法:box-shadow:h-shadow v-shadow blur spread color inset;
| 值 | 描述 |
|---|
| h-shadow | 必须,水平阴影,正为右,负为左 | | v-shadow | 必须,垂直阴影,正为下,负为上 | | blur | 可选,模糊距离 | | spread | 可选,阴影尺寸 | | color | 可选,阴影颜色 | | insert | 可选,将外部阴影改为内部阴影 |
注:
- 默认的是外阴影,但是不可以写外阴影的单词,否则会导致外阴影失效。
- 盒子阴影不占用空间,不会影响其他盒子的排列。
程序清单3_10_6
Document
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
3.11 浮动
3.11.1 浮动概述
传统网页布局的三种方式
标准流(普通流/文档流)
- 标准流就是标签按照规定好默认方式排列
- 块级元素独占一行,从上向下顺序排列
- 行内元素按照排序从左到右排列,碰到父元素边缘则自动换行
- 标准流是最基本的布局方式
为什么需要浮动
- 浮动可以改变元素标签默认的排列方式
- 最典型的就是让多个块级元素一行内排列显示
- 网页布局第一准则:多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动
浮动
原理:float属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘。
语法:选择器{float:属性值};
属性选值:
| 属性值 | 描述 |
|---|
| none | 元素不浮动(默认值) | | left | 元素向左浮动 | | right | 元素向右浮动 |
示意图:

程序清单3_11_1
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
div{
background-color: pink;
width: 100px;
height: 100px;
}
#Test1{
float:left;
}
#Test2{
float:right;
}
style>
head>
<body>
<div id = "Test1">左边div>
<div id = "Test2">右边div>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
3.11.2 浮动脱标
浮动特性
- 浮动元素会脱离标准流(脱标)
- 浮动元素会一行内显示并且元素顶部对齐
- 浮动元素会具有行内块元素的特性
脱标
- 是设置浮动元素最重要的特性
- 脱离标准普通流的控制移动到指定位置
- 浮动的盒子不再保留原先的位置
说明:试想我们有两个盒子,如果没有做任何布局,则其呈现的应该是标准流效果。假设此时盒子A肯定在盒子B的下方。当我们对盒子A施加浮标效果,则A脱离原来位置,而B会填补上原来的位置。如果还是不能理解,可以试着敲下面的代码。
程序清单3_11_2
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
.box1{
float: left;
width:200px;
height:100px;
background: pink;
}
.box2{
width:400px;
height:200px;
background-color: skyblue;
}
style>
head>
<body>
<div class = "box1">div>
<div class = "box2">div>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
3.11.3 行显示
行显示的示意图
若第一个盒子加了左浮动,则其会浮动到左上角,此时如果对第二个盒子加了浮动,它会贴着第一个盒子的边缘与它的左上角行对齐。

程序清单3_11_3
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
.box1{
float: left;
width:200px;
height:100px;
background: pink;
}
.box2{
float: left;
width:400px;
height:200px;
background-color: skyblue;
}
style>
head>
<body>
<div class = "box1">div>
<div class = "box2">div>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
3.11.4 浮动元素具有行内块特性
行内块特性
一个元素前面不管是块元素还是行内元素,当使用了浮动后,它可以转换为行内块元素。
程序清单3_11_4
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
.box1{
float: left;
width:200px;
height:100px;
background: pink;
}
.box2{
float: left;
width:400px;
height:200px;
background-color: skyblue;
}
style>
head>
<body>
<span class = "box1">span>
<span class = "box2">span>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
3.11.5 常见网页布局
浮动元素经常搭配标准流的父元素
为了约束浮动元素的位置,我们网页布局的一般策略是:先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置,符合网页布局第一准则。如小米官网,它们的页面是以大盒子为父标签先置中,子标签再去里面做布局:

一个元素浮动了,理论上其余的兄弟元素也要浮动
一个盒子里面有多个盒子,如果其中一个盒子动了,那么其他兄弟也应该浮动,以防止引起问题。浮动的盒子只会影响浮动盒子后面的标准流,而不会影响前面的标准流。
3.11.6 令人深思的问题
如果我们提前设置父盒子的宽高,则父盒子被确定,子盒子若超出父盒子的宽高,则会离开父盒子。我们的理想目标是:不设置父盒子的宽高,子盒子能够撑开父盒子。但是这样的想法是会出现问题的,当我们子盒子全部设置浮动,则父盒子会因为孩子的浮动导致高度为0,此时如果有一个标准流元素跟在父盒子之后,则会被压在父盒子的子盒子之下。为此,我们需要去除浮动。
3.11.7 清除浮动
清除浮动的原因
由于父级盒子的很多情况下,不方便给高度,但是子盒子浮动又不占有位置,最后父级盒子高度为0时,就会影响下面的标准流盒子,为此我们需要清除浮动。
由于浮动元素不占有原文档流的位置,所以它会对后面的元素排版产生影响。
清除浮动的本质
清除浮动的本质就是清除浮动元素造成的影响。
如果父盒子本身有高度,则不需要清除浮动。
清除浮动之后,父级会根据子盒子自动检测高度。父级有了高度,就不会影响下面的标准流了。
清除浮动及其语法
格式:选择器{clear:属性值}
| 属性值 | 描述 |
|---|
| left | 不允许左侧有浮动元素 | | right | 不允许右侧有浮动元素 | | both | 同时清除左右两侧浮动的影响 |
清除浮动的方法
- 额外标签法(隔墙法),是W3C推荐的做法
- 父级添加overflow属性
- 父级添加alter伪元素
- 父级添加双伪元素
额外标签法
如果想要使得往后的标签不再浮动,则可以使用隔墙法。使用的方法就是在浮动的标签后加一个块级标签,并且为这个标签添加clear样式,使得往后的标签都会清除浮动。
Document
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
父级添加overflow
清除浮动的第二个方法是在需要清除浮动的父标签中添加overflow属性,并将其属性值设置为hidden、auto或scroll。虽然方法简便,但是无法显示溢出部分的盒子。且overflow不止有清除浮动这一用途,我们后面再做讲解。
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
.clearfix{
overflow:hidden;
}
.box{
overflow: auto;
background-color:skyblue;
width:60%;
height: 300px;
}
.innerbox{
background-color:pink;
width:20%;
height: 50px;
margin: 1px;
float:left;
}
.footer{
background-color:pink;
width:20%;
height: 50px;
}
style>
head>
<body>
<div class = "box">
<div class = "clearfix">
<div class = "innerbox">div>
<div class = "innerbox">div>
div>
<div class = "footer">div>
div>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
父级元素添加:after伪元素
:after方式是额外标签法的升级版,也是给父元素添加。虽然没有增加标签,但是需要照顾低版本浏览器。
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
.clearfix:after{
content:"";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix{
*zoom: 1;
}
.box{
overflow: auto;
background-color:skyblue;
width:60%;
height: 300px;
}
.innerbox{
background-color:pink;
width:20%;
height: 50px;
margin: 1px;
float:left;
}
.footer{
background-color:pink;
width:20%;
height: 50px;
}
style>
head>
<body>
<div class = "box">
<div class = "clearfix">
<div class = "innerbox">div>
<div class = "innerbox">div>
div>
<div class = "footer">div>
div>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
双伪元素清除浮动
和after同理,不过是前后都堵了个盒子。
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
.clearfix::before,
.clearfix:after{
content:"";
display:table;
}
.clearfix:after{
clear:both;
}
.clearfix{
*zoom: 1;
}
.box{
overflow: auto;
background-color:skyblue;
width:60%;
height: 300px;
}
.innerbox{
background-color:pink;
width:20%;
height: 50px;
margin: 1px;
float:left;
}
.footer{
background-color:pink;
width:20%;
height: 50px;
}
style>
head>
<body>
<div class = "box">
<div class = "clearfix">
<div class = "innerbox">div>
<div class = "innerbox">div>
div>
<div class = "footer">div>
div>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
3.12 常见的图片格式
| 图片格式 | 说明 |
|---|
| jpg | jpeg(jpg)对色彩的信息保留较好,高清,颜色较多,我们产品类的图片继承用jpg格式 | | gif | gif最多只能存储256色,通常用于显示简单图像及字体,但是可以保存透明背景和动画效果 | | png | 结合了GIF和JPG的优点,具有存储形式丰富的特点,能够保持透明背景 | | PSD | ps的专用格式,可以存放图层、通道、遮罩等多种设计稿 |
3.13 一些注意的问题
3.13.1 CSS属性书写顺序问题
CSS书写建议遵循以下顺序:
- 布局定位顺序:display/position/float/clear/visiblity/overflow
- 自身属性:width/height/margin/padding/border/backgroud
- 文本属性:color/font/text-decoration/text-align/vertical-align/white-space/break-word
- 其他属性:content/cursor/border-radius/box-shadow/text-shadow/background…
3.13.2 页面布局整体思路
为了提高网页制作的效率,布局时通常有以下的整体思路:
- 必须确定页面的版心,我们测量可以得知。
- 分析页面中的行模块,以及每个行模块中的列模块。
- 一行中的列模块经常浮动布局,先确定每个列的大小,之后确定列的位置。
- 制作HTML结构,我们还是遵循先有结构后有样式的原则。
3.14 定位
3.13.1 定位概述
为什么需要定位
- 有些效果无法通过标准流和浮动实现。
- 浮动可以让多个块级盒子一行没有缝隙排列显示,经常用于横向排列盒子。
- 定位则是可以让盒子自由的在某个盒子内移动位置或者固定屏幕中某个位置,并且可以压住其他盒子。
定位组成
- 定位:将盒子定在某一个位置
- 定位 = 定位模式+边偏移
- 定位模式:用于指定一个元素在文档中的定位方式。边偏移则决定了该元素的最终位置
定位模式
定位模式决定了元素的定位方式,它通过CSS的position属性来设置,其值可以分为五个:
| 值 | 语义 |
|---|
| static | 静态定位 | | relative | 相对定位 | | absolute | 绝对定位 | | fixed | 固定定位 | | sticky | 粘性定位 |
边偏移
边偏移是定位盒子移动的最终位置。
| 边偏移属性 | 示例 | 描述 |
|---|
| top | top:80px | 顶端偏移量,定义元素相对于其父元素上边线的距离 | | buttom | buttom:80px | 底部偏移量,定义元素相对于其父元素下边线的距离 | | left | left:80px | 左侧偏移量,定义元素相对于其父元素左边线的距离 | | right | right:80px | 右侧偏移量,定义元素相对于其父元素右边线的距离 |
3.13.2 五种定位模式
静态定位
- 静态定位是元素的默认定位方式,即无定位。
- 静态定位按照标准流特性摆放位置,它没有边偏移
- 静态定位在布局时很少使用
相对定位
- 相对定位是元素在移动位置的时候,是相对于它原来的位置来说的。如原来标准流中盒子的左上角顶点坐标为(110px,220px),则施加绝对定位后再加top:80px的边偏移,盒子会移动到(110px,300px)上。
- 当盒子使用相对定位移动后,原先标准流的位置会被保留,如果还有一个盒子紧随其后,那么它自己施加完相对定位后,后面的盒子时不会像浮动那样顶替它的位置的。

绝对定位
- 绝对定位的元素在移动位置的时候,是相对于它的祖先元素来说的。
- 在没有祖先盒子的情况下,施加绝对定位的盒子以浏览器为基准。
- 如果有祖先盒子,但是祖先盒子没有施加定位,则施加绝对定位的盒子仍然以浏览器为基准。
- 如果祖先盒子有定位,则以最近一级有定位的祖先元素为基准。
- 绝对定位会导致脱标。
固定定位
- 固定定位是元素固定于浏览器可视区的位置,主要使用场景就是可以在浏览器滚动时元素的位置不会改变。
- 固定定位和父元素没有关系。
- 固定定位会导致脱标。
- 你最讨厌的浏览器广告就是定位做的。

粘性定位
- 粘性定位可以认为是相对定位和固定定位的混合。
- 粘性定位以浏览器的可视窗口为参照点移动元素。
- 粘性定位占有原先的位置。
- 必须添加top、left、right、bottom其中一个才会生效。
- 可以跟页面滚动搭配使用,兼容性差,IE不支持。

3.13.3 子绝父相
子绝父相:子级若是绝对定位,则父级要用相对定位。
目的:
- 子级绝对定位,不会占有位置,可以放到父盒子里面的任何一个地方,不会影响其他的兄弟盒子。
- 父盒子需要加定位限制子盒子在父盒子之内显示。
- 父盒子布局时,需要占有位置,因此父亲只能是相对定位。
3.13.4 定位算法
固定定位于版心右侧位
- 让固定定位的盒子left:50%,走到浏览器可视区的一半位置。
- 让固定定位的盒子margin-left:版心宽度的一半距离,多走版心宽度一半的位置。
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
.w{
width: 800px;
height: 1400px;
background-color: pink;
margin: 0 auto;
}
.fixed{
position: fixed;
left: 50%;
margin-left: 400px;
width: 50px;
height: 150px;
background-color: skyblue;
}
style>
head>
<body>
<div class = "fixed">div>
<div class = "w">div>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
绝对定位盒子居中
绝对定位无法使用margin:0 auto来实现水平居中,故我们采取以下策略:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
.w{
width: 800px;
height: 1400px;
background-color: pink;
margin: 0 auto;
}
.fixed{
position: absolute;
left:50%;
margin-left:-25px;
width: 50px;
height: 150px;
background-color: skyblue;
}
style>
head>
<body>
<div class = "fixed">div>
<div class = "w">div>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
3.13.5 定位拓展
叠放的问题
在使用绝对定位布局时,可能会出现盒子重叠的情况。此时我们可以使用z-index来控制盒子的最后次序,z-index的值可以是整数、负整数或0,默认是auto,数值越大,盒子越靠上。如果使用auto,则按照CSS的层叠性来叠放。
定位的特殊性质
- 行内元素添加绝对或者固定定位,可以直接设置高度和宽度。
- 块级元素添加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小。
- 脱标的元素不会触发外边距塌陷。
- 绝对定位会压住下面标准流的所有内容。
- 浮动的元素会压住下面标准流的盒子,但是不会压住标准流盒子中的文字。这是因为浮动产生的最初目的是为了做文字环绕效果。

3.15 阶段性总结
标准流:可以让盒子上下排列或者左右排列,垂直的块级盒子显示就用标准流布局。
浮动:可以让多个块级元素一行显示或者左右对齐盒子,多个块级盒子水平显示就用浮动布局。
定位:定位最大的特点就是含有重叠的概念,就是可以让多个盒子前后叠压来显示,如果元素自由在某个盒子内移动就用定位布局。
3.16 元素的显示和隐藏
3.16.1 display
display属性用于设置一个元素应该如何显示。这在我们的3.7元素显示方式已经提到过。display搭配JS能做出许多网页特效。
| 属性值 | 说明 |
|---|
| none | 隐藏对象 | | block | 除了转为块级元素外,还能显示元素 |
注:display隐藏元素后,原来位置会被抛弃。
3.16.2 visibility
visibility字如其名,即可见性。
| 属性值 | 说明 |
|---|
| inherit | 继承上一个父对象的可见性 | | visible | 对象可视 | | hidden | 对象隐藏 | | collapse | 用于隐藏表格的行或列 |
注:visbility隐藏元素后,继续占有原来的位置。
3.16.3 overflow
如果一些内容溢出了盒子,那么overflow可以将内容进行控制。
| 属性值 | 说明 |
|---|
| visible | 默认值,不剪切内容也不添加滚动条,随它溢出。 | | auto | body和textarea的默认值。在需要时剪切内容并添加滚动条 | | hidden | 不显示超过对象尺寸的内容 | | scroll | 总是显示滚动条 |
3.17 精灵图
3.17.1 精灵图概述
精灵图的需要
一个网页中往往会应用很多小的背景图来作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度。
因此,为了有效地减少服务器接收和发送请求的次数,提高页面的加载速度,出现了CSS精灵技术(也称CSS Sprites、CSS雪碧)。其核心原理是将网页中的一些小背景图像整合到一张大图中,这样服务器只需要一次请求即可。
3.17.2 精灵图的使用
- 精灵技术主要针对于背景图片使用,就是把多个小背景图片整合到一张大图中
- 移动背景图片位置,可以依靠background-position
- 移动的距离就是这个目标图片所在的精灵图的区域x和y,但这个坐标不同于传统的笛卡尔坐标系,而是一种倒立的笛卡尔坐标系,即二维坐标,y越往下越大,x越往右越大。如果给的值为正数,则按坐标轴方向找,如果给的是负数,则按反坐标方向找。
- 精灵图的使用需要精确测量每个小背景图片的大小和位置。
程序清单3_17_2
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
.box1{
width: 195px;
height: 30px;
margin: 100px auto;
background:url(./3_17_2.png);
background-position: -211px -2px;
}
style>
head>
<body>
<div class="box1">div>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21

3.18 字体图标
字体图标的产生
字体图标的产生:主要常用于显示网页中通用、常用的一些小图标。

精灵图虽然有诸多优点,但是缺点也很明显:
- 图片文件较大
- 图片缩放会失真
- 图片制作完成更换复杂
为此,字体图标iconfont的出现解决了这一问题。字体图标展示的虽然是图标,但本质上属于字体。文字相关的属性都可以应用在其之上。
字体图标的优点
轻量级:一个图标字体要比一系列的图像要小。一旦字体加载了,图标马上就能渲染出来,减少了服务器的请求。
灵活性:本质其实是文字,可以随意改变颜色,产生阴影、透明效果、旋转。
兼容性:几乎支持所有浏览器,可以放心使用。
注:字体图标不能替代精灵技术,仅仅是对工作中图标部分技术的提升和优化罢了。
字体图标的下载
Icon Font & SVG Icon Sets ❍ IcoMoon
iconfont-阿里巴巴矢量图标库
字体图标的使用
这里仅介绍阿里巴巴矢量图标库的图标使用,进入阿里巴巴矢量图标库-》帮助-》代码应用查看应用方法即可。
程序清单3_18
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
@font-face {font-family: 'iconfont';
src: url('iconfont.eot');
src: url('iconfont.eot?#iefix') format('embedded-opentype'),
url('iconfont.woff') format('woff'),
url('iconfont.ttf') format('truetype'),
url('iconfont.svg#iconfont') format('svg');
}
.iconfont{
font-family: 'iconfont'!important;
font-size:16px;
}
style>
head>
<body>
<div class="iconfont"><svg t="1658651375520" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1329" width="64" height="64"><path d="M460.8 947.2a473.6 473.6 0 1 1 486.912-460.8 25.6 25.6 0 1 1-51.2 0 422.4 422.4 0 1 0-435.712 409.6 25.6 25.6 0 0 1 0 51.2z" fill="#333333" p-id="1330">path><path d="M742.4 522.752l164.864 132.608V972.8h-329.728v-317.44l164.864-132.608m0-61.952a12.8 12.8 0 0 0-8.192 2.56l-269.312 216.576a11.264 11.264 0 0 0 8.192 19.968h51.2V1024h432.128v-324.096h51.2a11.264 11.264 0 0 0 8.192-19.968l-265.216-216.576A12.8 12.8 0 0 0 742.4 460.8z" fill="#333333" p-id="1331">path><path d="M780.8 844.8V972.8h-76.8v-128h76.8m51.2-51.2h-179.2V1024h179.2v-230.4zM500.224 401.92l-177.152 144.896 32.256 39.424 177.152-144.896-32.256-39.424z" fill="#333333" p-id="1332">path><path d="M532.48 236.544h-51.2v204.8h51.2v-204.8z" fill="#333333" p-id="1333">path>svg>div>
body>
html>

- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
3.19 CSS三角
三角的本质
当你的盒子不指定宽高,四周又施加边框,则边框实际上是一个三角形。
程序清单3_19
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
.test1{
height:0;
width: 0;
border-top: 50px solid pink;
border-bottom: 50px solid red;
border-left: 50px solid blue;
border-right: 50px solid gold;
}
.test2{
height:0;
width: 0;
border: 50px solid transparent;
border-top: 50px solid pink;
}
style>
head>
<body>
<div class = "test1">div>
<div class = "test2">div>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
3.20 CSS用于界面样式
3.20.1 鼠标样式
通过指定cursor值可以改变鼠标样式
| 属性值 | 描述 |
|---|
| default | 默认、白箭头样式 | | pointer | 小手 | | move | 移动十字架 | | text | 文本 | | not-allowed | 禁止 |
3.20.2 表单样式
| 样式 | 说明 |
|---|
| outline:none或outline:0 | 表单轮廓 | | resize:none | 文本域禁止拖动大小 |
3.20.3 行内(块)元素的对齐
CSS的vertical-align可以用于设置图片或者表单等行内元素或行内块元素和文字垂直对齐。
| 属性值 | 说明 |
|---|
| baseline | 默认,元素放置在父元素的基线上 | | top | 把元素的顶端与行中最高元素的顶端对齐 | | middle | 把此元素放置在父元素的中部 | | bottom | 把元素的顶端与行中最低的元素的顶端对齐 |

注:图片放入div盒子中时对齐默认是baseline,这时会出现一条缝隙,如果不想出现缝隙,可以使用bottom。
3.20.4 溢出文字省略号显示
单行文本溢出文字
如果想要单行文本溢出显示省略号,可以采取以下策略:
- 先使用white-space:nowrap来强制文字全部在一行内显示,其默认值为normal可以自动换行。
- 其次使用overflow:hidden超出盒子的文字隐藏。
- 最后使用text-overflow:ellipsis来用省略号代替文字超出的部分。
多行文本溢出文字
多行文本溢出显示省略号,有较大的兼容性问题,其适用于webKit浏览器或移动端,想要使用可以采取以下策略:
- 先使用overflow:hidden,并且text-overflow:ellipsis。
- 其次使用display:-webkit-box,让盒子变成弹性伸缩盒子,然后使用-webkit-line-clamp:2来限制一个块元素显示文本的行数,这里写的是两行,最后使用-webkit-box-orient:vertical来设置或检索伸缩盒对象的子元素的排列方式。
注:推荐让后端人员来做这个效果。
3.21 常用布局技巧
3.22 CSS初始化
不同浏览器对有些标签的默认值是不同的,故我们需要对所有样式进行初始化操作。
3.23 CSS3新特性
CSS3的现状
- 新增的CSS3特性有兼容性问题,ie9+才支持
- 移动端支持优于PC端
- 不断改进中,应用相对广泛
3.23.1 属性选择器
属性选择器可以更具特定属性来选择元素,这样就不用借助与类或id选择器。
| 选择符 | 简介 |
|---|
| E[att] | 选择具有att属性的E元素 | | E[att = “val”] | 选择具有att属性且属性值等于val的E元素 | | E[att^“val”] | 匹配具有att属性且值以val开头的E元素 | | E[att$=“val”] | 匹配具有att属性且值以val结尾的E元素 | | E[att*=“val”] | 匹配具有att属性且值中含有val的E元素 |
程序清单3_23_1
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
div[class]{
background-color: rgb(248, 127, 147);
}
div[id = "Test2"]{
background-color: skyblue;
}
div[id ^= "tes"]{
background-color: gold;
}
div[id $= "4"]{
background-color: red;
}
div[id *= "on"]{
background-color: green;
}
div{
height:200px;
margin: 2px;
}
style>
head>
<body>
<div class = "Test1">div>
<div id = "Test2">div>
<div id = "test3">div>
<div id = "Test4">div>
<div id = "ontest5">div>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
3.23.2 结构伪类选择器
结构伪类选择器主要根据文档结构来选择器元素,常用于根据父级选择器里面的子元素
| 选择符 | 简介 |
|---|
| E:first-child | 匹配父元素中的第一个子元素E | | E:last-child | 匹配父元素中的最后一个子元素E | | E:nth-child(n) | 匹配父元素中的第n个子元素E | | E:first-of-type | 指定类型E的第一个 | | E:last-of-type | 指定类型E的最后一个 | | E:nth-of-type(n) | 指定类型E的第n个 |
说明:nth-child
nth-child选择器可以选择某个父元素的一个或多个特定的子元素
- n可以是数字、关键字和公式
- n如果是数字,就是选择第n个子元素,里面数字从1开始
- n可以是关键字:even偶数,odd奇数
- n可以是公式,公式的变量仅仅只能使用字母n。若公式只填n则选择器从0开始计算,但是第0个元素或者超出了元素的个数会被忽略,可以理解为此时选择器相当于全选子元素。也可以填2n,3n之类的,或者2n+1啥的,看你需求了。
区别:child和type
child要求类型指定正确,如div里套两个标签,先一个p标签后一个div标签,如果此时选用div div:first-child则选不出来p标签也选不出来div标签,因为这样写意为选取div且第一个元素,而嵌套的标签中没有符合要求的。
type则不用这么要求,还是上面那个例子,如果选用div div:first-of-type则可以选出div标签,因为这样写意为选出div中的第一个div标签。
程序清单3_23_2
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
ul li{
height:50px;
width: 100px;
margin: 2px;
list-style: none;
}
ul li:first-child{
background-color: skyblue;
}
ul li:last-child{
background-color: pink;
}
ul li:nth-child(2){
background-color: gold;
}
ol li{
height:50px;
width: 100px;
margin: 2px;
list-style: none;
}
ol li:nth-child(even){
background-color: red;
}
ol li:nth-child(odd){
background-color: blue;
}
div p,div{
height:50px;
width: 100px;
margin: 2px;
background-color: pink;
}
div div:first-child{
background-color: blue;
}
style>
head>
<body>
<ul>
<li>li>
<li>li>
<li>li>
<li>li>
<li>li>
<li>li>
ul>
<ol>
<li>li>
<li>li>
<li>li>
<li>li>
<li>li>
<li>li>
ol>
<div>
<p>p>
<div>div>
div>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
3.23.3 伪元素选择器
伪元素选择器可以帮助我们利用CSS创建新标签元素,而不需要HTML标签,从而简化HTML结构。
| 选择符 | 简介 |
|---|
| ::before | 在元素内部的前面插入内容 | | ::after | 在元素内部的后面插入内容 |
说明:伪元素选择器的使用
- CSS3引入双冒号是为了将伪类和伪元素区别开来,浏览器也接受由CSS2原来的单冒号写法,即element::before和element:before等价。
- before和after创建的元素属于行内元素,可以理解为一个最左边的盒子和一个最右边的盒子。该元素在文档树中无法找到,故称为伪元素。
- before和after必须有content属性
- before在父元素内容的前面创建元素,after在父元素内容的后面插入元素
- 伪元素选择器和标签选择器一样,选中为1
程序清单3_23_3
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
div{
width: 200px;
height: 200px;
background-color: pink;
}
div::before{
content:'I';
}
div::after{
content:'You';
}
style>
head>
<body>
<div>Lovediv>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
3.23.4 盒子模型
CSS3中可以通过box-sizing来指定盒模型。该属性有两个值:content-box(默认)、border-box。
| 类型 | 说明 |
|---|
| content-box | 盒子大小为:width+padding+border | | border-box | 盒子大小为:width |
注:一般在初始化时就可以将盒子们全局设定为border-box。
3.23.5 滤镜
filter属性可以将模糊或颜色偏移等图形效果应用于元素,格式为filter:函数(),这里我们只讲一个较常用的函数blur模糊,参数传px数值,数值越大越模糊。
3.23.6 计算
calc函数可以用于CSS属性的计算,如宽度不想直接声明具体数值而想先计算再返回值,那就可以使用calc函数。calc函数仅允许加减乘除。
注:加减乘除运算符左右必须有两个空格,否则运算失败。
3.23.7 过渡
过渡(transition)是CSS3中具有颠覆性的特征之一。我们可以在不使用Flash动画和js的情况下就能做出过渡动画的效果。其经常和:hover一起搭配使用。
格式:transition:要过渡的属性 花费时间 [运动曲线] [何时运动];
使用方式:谁用过渡给谁加
| 属性值 | 说明 |
|---|
| 过渡属性 | 想要变化的css属性,宽度高度 背景颜色 内边边距都可以,如果想要全部变化,写all即可 | | 花费时间 | 单位是s(秒),必须写单位 | | 运动曲线 | 默认是ease,可以选择其他曲线,见下图 | | 何时开始 | 单位是s(秒),可以设置延迟触发时间,必须写单位,默认是0s。 |

程序清单3_23_7
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
div{
width: 200px;
height: 200px;
background: pink;
border-radius: 200px;
transition: all 2s;
}
div:hover{
width: 400px;
height: 400px;
background: skyblue;
border-radius: 20px;
}
style>
head>
<body>
<div>div>
body>
html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
3.23.8 2D转换
转换(tansform)是CSS3具有颠覆性的特征之一,可以实现元素的位移、选择、缩放等效果。
移动
语法:
- transform:translate(x,y);
- transform:translateX(n);
- transform:translateY(n);
说明:
- 定义2D转换中的移动,沿着X和Y轴移动元素
- translate最大的优点,就是不会影响其他元素的位置
- translate中的百分比单位是相对于自身元素的百分比,如一个盒子高30px,使用translataY(50%)实际上是往下移动15px
- 对行内标签没有效果
旋转
语法:transform:rotate(度数);
说明:
- rotate里面度数要带单位,单位为deg
- 角度为正则顺时针,负为逆时针
- 默认旋转的中心点是元素的中心点
缩放
语法:transform:scale(x倍数,y倍数);
说明:scale缩放的最大优势在于可以设置转换中心点缩放,默认以中心点缩放且不影响其他盒子。
旋转、缩放中心点
语法:transform-origin:x y;
说明:
- 注意后面的参数x和y用空格隔开
- xy默认转换的中心点是元素的中心点(50% 50%)
- 还可以给xy设置像素或者方位名词
综合写法
语法:transform:translate() rotate() scale()…
说明:
- 综合写法的顺序会影响转换的效果
- 移动要写在所有属性的最前面
3.23.9 动画
动画(animation)是CSS3具有颠覆性的特征之一,可以通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果。相比较过渡,动画可以实现更多变化,更多控制,连续自动播放等效果。
定义动画的方式
@keyframes 动画名称{
0%{
width:100px;
}
100%{
width:200px;
}
}
注:from和to等价于0%和100%
调用动画的方式
拥有动画的选择器{
animation-name: 动画名;
animation-duration: 动画花费时长;
}
动画序列
通过定义动画序列中一段时间内不同的关键帧所拥有的状态,可以实现一个动画经过多种状态,这是过渡所做不到的。
4 服务器部署
4.1 Web服务器
服务器是提供计算服务的设备,它也是一台计算机。在网络环境下,根据服务器提供的服务类型不同,服务器又分为文件服务器、数据库服务器 、应用程序服务器、Web服务器等。
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览,可以放置数据文件,让全世界下载。
4.2 远程服务器
本地服务器主要在局域网中访问,如果真要在互联网中访问,可以把自己做好的网站上传到远程服务器。
远程服务器通常是别的公司为我们提供一台电脑,我们只要把网站项目上传导这台电脑上,任何人都可以利用域名访问我们的网站了。
4.3 免费服务器
5 前端素材
颜色表大全 颜色代码 设计配色表 网页配色表-www.5tu.cn
Neumorphism/Soft UI CSS shadow generator
ColorSpace - Color Palettes Generator and Color Gradient Tool (mycolor.space)
相关阅读:
分布式事务的解决方案
一生一芯14——chisel环境搭建
来自北大算法课的Leetcode题解:208. 实现Trie(前缀树)
[ctfhub.pwn] 第12-14题
安装国产系统Kylin-Desktop实战
PPT制作小技巧分享
css样式之精灵图与字体图标跟多行显示省略号
【一文秒懂——SLF4j日志】
2022年7月31日 暑假第三周总结
LPL Ban/Pick 选人阶段的遮罩效果是如何实现的?
原文地址:https://blog.csdn.net/chengyuhaomei520/article/details/126024846
|