标准流
标准流 或者可以称为 文档流 ,是浏览器在渲染显示网页内容时默认采用的一套排版规则,它规定了应该以哪种方式排列元素。
常见的标准流排版规则有以下两种:
- 块级 元素:从上往下,垂直布局,独占一行
- 行内 元素 / 行内块 元素:从左往右,水平布局,如果空间不够,就会自动换行
浮动的作用
浮动 最开始被用来做图文环绕的,就是在一段文字的合适的地方插入图片
现在通常用来做网页布局 ,例如让两个垂直布局的盒子变成水平布局:
水平布局形式,使用行内块元素或行内元素也能实现,但是,浏览器在解析行内块 或行内 标签的时候,如果标签换行 书写会产生一个空格的距离
浮动如何设置及其有什么特点
浮动的属性名是 float ,分 左浮动 (left)和 右浮动(right):
浮动的特点:
- 浮动元素会脱离标准流,就是我们常说的 脱标 ,在标准流中 不占位置 ,就相当于从地面飘到了空中
- 浮动元素比标准流中的元素 高 半个级别,它可以 覆盖 标准流中的元素
- 浮动元素的 布局 位置,是浮动找浮动,下一个浮动元素会在上一个浮动元素的后面左右浮动
- 浮动元素有其特殊的显示效果:一行可以显示多个;也可以设置宽高
- 有一点需要注意,浮动元素没有 text-align:center 或 margin:0 auto
举例说明浮动的特点及用法
(0) 原始盒子布局
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.top {
width: 100px;
height: 100px;
background-color: lawngreen;
}
.center {
width: 200px;
height: 200px;
background-color: rgb(126, 232, 211);
}
.bottom {
width: 300px;
height: 300px;
background-color: lightcoral;
}
</style>
</head>
<body>
<div class="top">top</div>
<div class="center">center</div>
<div class="bottom">bottom</div>
</body>
</html>
(1) 浮动的标签 --- 顶部对齐
html
<style>
.top {
float: left;
width: 100px;
height: 100px;
background-color: lawngreen;
}
.center {
float: left;
width: 200px;
height: 200px;
background-color: rgb(126, 232, 211);
}
.bottom {
width: 300px;
height: 300px;
background-color: lightcoral;
}
</style>
(2) 在一行排列,宽高生效 --- 浮动后的标签具备行内块特点
HTML
<style>
.top {
float: left;
margin-top: 60px;
width: 100px;
height: 100px;
background-color: lawngreen;
}
.center {
float: left;
width: 200px;
height: 200px;
background-color: rgb(126, 232, 211);
}
.bottom {
width: 300px;
height: 300px;
background-color: lightcoral;
}
</style>
布局案例
为了让浏览器的 执行效率更高 ,CSS 推荐书写顺序:
- 1)浮动 / 元素显示模式 display
- 2)盒子模型:margin 、border 、padding 、width 、height 、background-color
- 3)文字样式
(1) 简易的网页布局
完成上图的简易布局,每个人的模块拆分思路不一样,但最终效果都一样,下面是其中一种布局方式:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.top {
height: 40px;
background-color: #333;
}
.box {
margin: 0 auto;
width: 1226px;
height: 560px;
background-color: #ffc0cb;
}
.left {
float: left;
margin-top: 100px;
width: 234px;
height: 460px;
background-color: #ffa500;
}
.right {
float: left;
margin-top: 100px;
width: 992px;
height: 460px;
background-color: #87ceeb;
}
</style>
</head>
<body>
<div class="top"></div>
<div class="box">
<div class="left"></div>
<div class="right"></div>
</div>
</body>
</html>
设计图可以有多种拆分方式,上边代码是先将其拆成上下两大部分,然后再将下面的部分拆成左右两部分,最终实现的效果与原始布局一致
(2) 模拟网页商品列表布局
参照以上设计图,实现布局效果:
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.box {
margin: 0 auto;
width: 1226px;
height: 614px;
/* background-color: rgb(202, 140, 150); */
}
.left {
float: left;
margin-right: 14px;
width: 234px;
height: 614px;
background-color: #800080;
}
.right {
float: right;
width: 978px;
height: 614px;
/* background-color: rgb(159, 247, 190); */
}
ul {
list-style: none;
}
li {
float: left;
margin-right: 14px;
margin-bottom: 14px;
width: 234px;
height: 300px;
background-color: #87ceeb;
}
li:nth-child(4n){
margin-right: 0;
}
</style>
</head>
<body>
<div class="box">
<div class="left"></div>
<div class="right">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
</div>
</body>
</html>