浮动
视觉格式化模型,大体上将页面盒子的排列分为三种方式。
- 常规流
- 浮动
- 定位
应用场景
- 文字环绕
- 横向排列
浮动的基本特点
修改float的属性为:
- left:左浮动,元素靠上靠左
- right:右浮动,元素靠上靠右
默认值为none
- 当一个 元素浮动后,元素必定为块盒(更改display属性为block)
- 浮动元素的包含块,和常规流一样,为父元素的内容盒。
盒子尺寸
- 宽度为auto时, 适应内容宽度
- 高度为auto时, 适应内容高度
- margin为auto时,为0
- 边框,内边距,百分比设置与常规流一致
盒子排列
- 左浮动的盒子靠上靠左排列。
- 右浮动的盒子靠上靠右排列。
- 浮动盒子在排列时,会避开常规流块盒。
- 常规流块盒排列时,会无视浮动盒子。
- 行盒在排列时,会避开浮动盒子。
- 外边距合并不会发生。
如果文字没有在行盒中,浏览器会自动生成一个行盒包裹文字,该行盒叫做匿名行盒。如此解释文字环绕的现象。
高度坍塌
高度坍塌的根源:常规流盒子的自动高度,在计算时,不会考虑浮动盒子。
解决:清除浮动
法一:css属性:clear
- 默认值:none
- left:清除左浮动,该元素必须出现在前面所有左浮动盒子的下方。
- right:清除右浮动,该元素必须出现在前面所有右浮动盒子的下方。
- both:清除左右浮动, 该元素必须出现在前面所有浮动盒子的下方。
<style>
.clearfix{
/* background-color: #0000FF;
height: 20px; */
clear: both;
}
</style>
<div class="container2">
<div class="normal" style="height: auto; padding: 20px;">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="clearfix"></div>
</div>
</div>
法二:
<style>
.clearfix2::after{
content: "";
display: block;
clear: both;
}
</style>
<div class="container2">
<div class="normal clearfix2" style="height: auto; padding: 20px;">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<!-- <div class="clearfix"></div> -->
</div>
</div>
demo代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>css浮动</title>
<style>
.container{
background-color: #00FFFF;
width: 100px;
height: 100px;
}
.container .left{
width: 20px;
height: 20px;
background-color: red;
float: left;
}
.container .right{
width: 20px;
height: 20px;
background-color: red;
float: right;
}
.block-box{
width: 100px;
height: 100px;
background-color: #00A1D6;
}
.block-box-in{
width: auto;
background-color: red;
}
.container2{
background-color: #00B498;
width: 208px;
height: 208px;
}
.item{
background-color: red;
width: 50px;
height: 50px;
float: left;
border: 1px solid;
}
.normal{
background-color: #00AEFF;
width: auto;
height: 60px;
}
.clearfix{
/* background-color: #0000FF;
height: 20px; */
clear: both;
}
.clearfix2::after{
content: "";
display: block;
clear: both;
}
</style>
</head>
<body>
<h2>## 浮动的基本特点</h2>
<div class="container">
<div class="left"></div>
<div class="right"></div>
</div>
<div class="block-box">
<div class="block-box-in">wo</div>
</div>
<h2>## 盒子排列</h2>
<div class="container2">
<div class="normal">常规流盒子会避开</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="normal">无视浮动盒子</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
</div>
<h3>### 行盒在排列时,会避开浮动盒子。</h3>
<div class="container3">
<img src="css笔记/浅谈盒模型_files/6.jpg" style="width: 200px; float: left; margin-right: 10px;" />
<p>可——叹——秋鸿折单复难双 痴人痴怨恨迷狂 只因那邪牲祭伏定祸殃 若非巾帼拔剑人皆命丧 凡缘朦朦仙缘滔 天伦散去绛府邀 朱丝缚绝烂柯樵 雪泥鸿迹遥 鹤归不见昔华表 蛛丝枉结魂幡飘 因果红尘渺渺 烟消
《神女劈观》到这里本该接近尾声,但今日,我再添一笔—— 唱与——诸位——听——
曲高未必人不识 自有知音和清词 红缨猎猎剑流星 直指怒潮洗海清
彼时鹤归 茫茫天地无依靠 孤身离去 今日再会 新朋旧友坐满堂 共聚此时
可——叹——秋鸿折单复难双 痴人痴怨恨迷狂 只因那邪牲祭伏定祸殃 若非巾帼拔剑人皆命丧 凡缘朦朦仙缘滔 天伦散去绛府邀 朱丝缚绝烂柯樵 雪泥鸿迹遥 鹤归不见昔华表 蛛丝枉结魂幡飘 因果红尘渺渺 烟消
《神女劈观》到这里本该接近尾声,但今日,我再添一笔—— 唱与——诸位——听——
曲高未必人不识 自有知音和清词 红缨猎猎剑流星 直指怒潮洗海清
彼时鹤归 茫茫天地无依靠 孤身离去 今日再会 新朋旧友坐满堂 共聚此时
</p>
</div>
<h2>## 高度坍塌 和 修复</h2>
<div class="container2">
<div class="normal clearfix2" style="height: auto; padding: 20px;">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<!-- <div class="clearfix"></div> -->
</div>
</div>
</body>
</html>