CSS-浮动
一、结构伪类选择器
- 作用与优势:
-
作用:根据元素在HTML中的结构关系查找元素
-
优势:减少对于HTML中类的依赖,有利于保持代码整洁
-
场景:常用于查找某父级选择器中的子元素
- 选择器
| 选择器 | 说明 |
|---|---|
| E:first-child{} | 匹配父类元素中第一个子类元素,并且为E元素 |
| E:last-child{} | 匹配父类元素中最后一个子类元素,并且为E元素 |
| E:nth - child{} | 匹配父类元素中第n个子类元素,并且为E元素 |
| E:first-last-child{} | 匹配父类元素中倒数第n个子类元素,并且为E元素 |
<style>
/* 选中第一个 */
/* li:first-child {
background-color: green;
} */
/* 最后一个 */
/* li:last-child {
background-color: green;
} */
/* 任意一个 */
/* li:nth-child(5) {
background-color: green;
} */
/* 倒数第xx个 */
li:nth-last-child(1) {
background-color: blue;
}
</style>
</head>
<body>
<!-- ul>li{这是第$个li}*8 -->
<ul>
<li>这是第1个li</li>
<li>这是第2个li</li>
<li>这是第3个li</li>
<li>这是第4个li</li>
<li>这是第5个li</li>
<li>这是第6个li</li>
<li>这是第7个li</li>
<li>这是第8个li</li>
</ul>
</body>
➢ n的注意点:
- n为:0、1、2、3、4、5、6、… 2. 通过n可以组成常见公式
| 功能 | 公式 |
|---|---|
| 偶数 | 2n,even |
| 奇数 | 2n+1,2n-1.odd |
| 照到前5个 | -n+5 |
| 找到从第五个往后 | n+5 |
二、伪元素
目标:能够使用 伪元素 在网页中创建内容
➢ 伪元素:一般页面中的非主体内容可以使用伪元素
➢ 区别:
-
元素:HTML 设置的标签
-
伪元素:由 CSS 模拟出的标签效果
➢ 种类:
| 伪元素 | 作用 |
|---|---|
| ::before | 在父元素内容的最前面添加一个伪元素 |
| ::after | 在父元素内容的最后面添加一个伪元素 |
<style>
.father {
width: 300px;
height: 300px;
background-color: pink;
}
.father::before {
/* 内容 */
/* content属性必须添加, 否则伪元素不生效 */
content: '';
color: green;
width: 100px;
height: 100px;
background-color: blue;
/* 默认是行内元素, 宽高不生效 */
display: block;
}
.father::after {
content: '大米';
}
</style>
</head>
<body>
<!-- 伪元素 通过css创建标签, 装饰性的不重要的小图 -->
<!-- 找父级, 在这个父级里面创建子级标签 -->
<div class="father">爱</div>
<!-- 老鼠爱大米 -->
</body>
➢ 注意点:
-
必须设置content属性才能生效
-
伪元素默认是行内元素
小结
➢ 伪元素的必加属性是?
- content属性
➢ 伪元素创建出来后默认的显示模式是?
- 行内元素
三、标准流
目标:能够认识 标准流 的默认排布方式及其特点
➢ 标准流:又称文档流,是浏览器在渲染显示网页内容时默认采用的一套排版规则,规定了应该以何种方式排列元素
➢ 常见标准流排版规则:
- 块级元素:从上往下,垂直布局,独占一行
- 行内元素 或 行内块元素:从左往右,水平布局,空间不够自动折行
小结
➢ 标准流中块级元素的排版规则是?
• 从上往下、垂直布局、独占一行
➢ 标准流中行内元素或行内块元素的排版规则是?
• 从左往右、水平布局、空间不够自动折行
四、浮动
1.浮动的作用
1.1 浮动的作用
➢ 早期的作用:图文环绕
- 让文字包围图片
➢ 现在的作用:网页布局
- 场景:让垂直布局的盒子变成水平布局,如:一个在左,一个在右
2.浮动的代码
2.1 浮动的代码
➢ 属性名:float
➢ 属性值:
| 属性名 | 效果 |
|---|---|
| left | 左浮动 |
| right | 右浮动 |
<style>
/* img {
float: left;
} */
div {
width: 100px;
height: 100px;
}
.one {
background-color: pink;
float: left;
}
.two {
background-color: skyblue;
/* flr */
/* float: right; */
float: left;
}
</style>
</head>
<body>
<!-- 1. 图文环绕 -->
<!-- <img src="./images/1.jpg" alt="">
李兆杰,男,汉族,清华大学法学院教授、博士生导师,于2025年5月29日在北京因病逝世,享年70岁。
李兆杰教授籍贯山东省东明县,1955年出生于吉林省长春市。1983年毕业于北京大学法律学系,获法学学士学位。1985年与1986年在美国加州大学伯克利分校分别获得法学硕士学位与图书馆信息学硕士学位,1995年在加拿大多伦多大学获法学博士学位。1986年8月至1989年6月在北京大学国际法研究所工作,历任助教、讲师。1996年1月至2000年6月任教于北京大学国际法研究所,历任讲师、副教授。2000年6月至2021年4月任教于清华大学法学院,历任副教授(2000年)、教授(2002年)。 -->
<!-- 2. 网页布局: 块在一行排列 -->
<div class="one">one</div>
<div class="two">two</div>
</body>
小结
➢ 浮动的作用是什么?
- 早期作用:图文环绕
- 现在作用:用于布局,让垂直布局的盒子变成水平布局,如:一个在左,一个在右
➢ 左浮动的属性是?右浮动的属性是?
左浮动:float : left
右浮动:float : right
3.浮动的特点
3.1 浮动的特点
-
浮动元素会脱离标准流(简称:脱标),在标准流中不占位置
* 相当于从地面飘到了空中 -
浮动元素比标准流高半个级别,可以覆盖标准流中的元素
-
浮动找浮动,下一个浮动元素会在上一个浮动元素后面左右浮动
-
浮动元素有特殊的显示效果
-
一行可以显示多个
-
可以设置宽高
<style>
/* 浮动的标签 顶对齐 */
/* 浮动: 在一行排列, 宽高生效 -- 浮动后的标签具备行内块特点 */
.one {
width: 100px;
height: 100px;
background-color: pink;
float: left;
margin-top: 50px;
}
.two {
width: 200px;
height: 200px;
background-color: skyblue;
float: left;
/* 因为有浮动, 不能生效 - 盒子无法水平居中 */
margin: 0 auto;
}
.three {
width: 300px;
height: 300px;
background-color: orange;
}
</style>
</head>
<body>
<div class="one">one</div>
<div class="two">two</div>
<div class="three">three</div>
</body>
➢ 注意点:
- 浮动的元素不能通过text-align:center或者margin:0 auto
小结
➢ 浮动元素的特点有哪些?
- 浮动元素会脱标,在标准流中不占位置
- 浮动元素比标准流高出半个级别,可以覆盖标准流中的元素
- 浮动找浮动,下一个浮动元素会在上一个浮动元素后面左右浮动
- 浮动元素有特殊的显示效果:1 一行可以显示多个 2 可以设置宽高
五、清除浮动
1.清除浮动的介绍
➢ 含义:清除浮动带来的影响
- 影响:如果子元素浮动了,此时子元素不能撑开标准流的块级父元素
➢ 原因:
- 子元素浮动后脱标 → 不占位置
➢ 目的:
• 需要父元素有高度,从而不影响其他网页元素的布局
小结
➢ 清除浮动的含义是什么?
-
清除浮动带来的影响
-
影响:如果子元素浮动了,此时子元素不能撑开父元素
➢ 清除浮动的目的是什么?
• 需要父元素有高度,从而不影响其他网页元素的布局
2.清除浮动的方法
直接设置父元素高度
➢ 特点:
-
优点:简单粗暴,方便
-
缺点:有些布局中不能固定父元素高度。如:新闻列表、京东推荐模块
2.2 清除浮动的方法
- 额外标签法
➢ 操作:
-
在父元素内容的最后添加一个块级元素
-
给添加的块级元素设置 clear:both
➢ 特点:
• 缺点:会在页面中添加额外的标签,会让页面的HTML结构变得复杂
<!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>Document</title>
<style>
.top {
margin: 0 auto;
width: 1000px;
/* height: 300px; */
background-color: pink;
}
.bottom {
height: 100px;
background-color: green;
}
.left {
float: left;
width: 200px;
height: 300px;
background-color: #ccc;
}
.right {
float: right;
width: 790px;
height: 300px;
background-color: skyblue;
}
.clearfix {
/* 清除左右两侧浮动的影响 */
clear: both;
}
</style>
</head>
<body>
<!-- 父子级标签, 子级浮动, 父级没有高度, 后面的标准流盒子会受影响, 显示到上面的位置 -->
<div class="top">
<div class="left"></div>
<div class="right"></div>
<div class="clearfix"></div>
</div>
<div class="bottom"></div>
</body>
</html>
2.3 清除浮动的方法
- 单伪元素清除法
➢ 操作:用伪元素替代了额外标签
1 :基本写法
.clearfix::after {
content: '';
/* 伪元素添加的标签是行内, 要求块 */
display: block;
clear: both;
}
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>Document</title>
<style>
.top {
margin: 0 auto;
width: 1000px;
/* height: 300px; */
background-color: pink;
}
.bottom {
height: 100px;
background-color: green;
}
.left {
float: left;
width: 200px;
height: 300px;
background-color: #ccc;
}
.right {
float: right;
width: 790px;
height: 300px;
background-color: skyblue;
}
/* 单伪元素清除浮动 和 额外标签法原理是一样的 */
.clearfix::after {
content: '';
/* 伪元素添加的标签是行内, 要求块 */
display: block;
clear: both;
/* 为了兼容性 */
height: 0;
visibility: hidden;
}
</style>
</head>
<body>
<!-- 父子级标签, 子级浮动, 父级没有高度, 后面的标准流盒子会受影响, 显示到上面的位置 -->
<div class="top clearfix">
<div class="left"></div>
<div class="right"></div>
<!-- 通过css 添加标签 -->
</div>
<div class="bottom"></div>
</body>
</html>
2.4 清除浮动的方法
- 双伪元素清除法
➢ 操作:
.clearfix::after {
/* content: '';
display: table; */
clear: both;
}
➢ 特点:
• 优点:项目中使用,直接给标签加类即可清除浮动
<!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>Document</title>
<style>
.top {
margin: 0 auto;
width: 1000px;
/* height: 300px; */
background-color: pink;
}
.bottom {
height: 100px;
background-color: green;
}
.left {
float: left;
width: 200px;
height: 300px;
background-color: #ccc;
}
.right {
float: right;
width: 790px;
height: 300px;
background-color: skyblue;
}
/* .clearfix::before 作用: 解决外边距塌陷问题
外边距塌陷: 父子标签, 都是块级, 子级加margin会影响父级的位置
*/
/* 清除浮动 */
.clearfix::before,
.clearfix::after {
content: '';
display: table;
}
/* 真正清除浮动的标签 */
.clearfix::after {
/* content: '';
display: table; */
clear: both;
}
</style>
</head>
<body>
<!-- 父子级标签, 子级浮动, 父级没有高度, 后面的标准流盒子会受影响, 显示到上面的位置 -->
<div class="top clearfix">
<div class="left"></div>
<div class="right"></div>
</div>
<div class="bottom"></div>
</body>
</html>
2.5 清除浮动的方法
- 给父元素设置overflow : hidden
➢ 操作:
- 直接给父元素设置 overflow : hidden
➢ 特点:
• 优点:方便
<!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>Document</title>
<style>
.top {
margin: 0 auto;
width: 1000px;
/* height: 300px; */
background-color: pink;
overflow: hidden;
}
.bottom {
height: 100px;
background-color: green;
}
.left {
float: left;
width: 200px;
height: 300px;
background-color: #ccc;
}
.right {
float: right;
width: 790px;
height: 300px;
background-color: skyblue;
}
</style>
</head>
<body>
<!-- 父子级标签, 子级浮动, 父级没有高度, 后面的标准流盒子会受影响, 显示到上面的位置 -->
<div class="top">
<div class="left"></div>
<div class="right"></div>
</div>
<div class="bottom"></div>
</body>
</html>
小结
➢ 清除浮动的方法有哪些?
-
直接设置父元素高度
-
额外标签法
-
单伪元素清除法
-
双伪元素清除法
-
给父元素设置overflow : hidden
2万+

被折叠的 条评论
为什么被折叠?



