一、浮动的基本特征
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>浮动的基本特征</title>
</head>
<style>
.box{
width: 200px;
height: 200px;
}
.box1{
background-color: lightblue;
}
.box2{
background-color: lightcoral;
float: left;
}
.box3{
background-color: lightgreen;
width: 230px;
height: 230px;
}
a,span{
background-color: yellow;
width: 200px;
height: 50px;
float: left;
}
</style>
<body>
<div class="box box1">box1</div>
<div class="box box2">box2</div>
<div class="box box3">box3</div>
<hr/>
<a href="">php.cn</a>
<span>PHP中文网欢迎</span>
</body>
</body>
</html>
知识点:
1.box2浮动之后从文档流中脱离出来(意思就是会释放它原来在文档流中占据的空间)
2.浮动元素浮动之后,它后面的元素会自动填充它让出来空间的大小
3.浮动元素只会影响它后面的元素布局,对前面没有影响
4.行内元素用于最终内容的载体,不能充当容器/父级,不能设置宽高也是无效的
5.任何元素,一旦浮动都自动转为块级元素
6.不让它收到前面的浮动元素影响:clear:both
浮动元素只能水平方向浮动
浮动元素的浮动边界仅限于内容区
二、浮动元素的塌陷与解决方案
浮动塌陷和解决方法:
解决方案1:给父元素添加一个高度,但是此方法无法自适应.
解决方案2:把父元素浮动起来 ,会产生传导效应,级数越多很麻烦.
解决方案3: 添加一个专用元素用于清浮动 ,但依赖DOM结构
解决方案4: 添加一个伪元素来解决,也可以
解决方案5: 最简单的解决方案,加overflow属性(hidden/auto)
三、经典3列布局示例
1.使用定位完成一个三列经典布局
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>布局实例:使用绝对定位来完成一个通用三列布局</title>
<style>
/* 初始化 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
li {
list-style: none;
}
a {
text-decoration: none;
color: #666;
}
/* 页眉与页脚 */
.header,
.footer {
height: 40px;
background-color: lightsteelblue;
}
.content {
width: 960px;
margin: auto;
}
.content ul li {
float: left;
line-height: 40px;
padding: 0 15px;
}
.content ul li:hover {
background-color: lightcoral;
}
/* 页脚 */
.content p {
text-align: center;
line-height: 40px;
}
/* 主体用定位来做 */
.container {
width: 960px;
margin: 10px auto;
min-height: 600px;
/* 定位做的,转为定位元素,父级 */
position: relative;
}
.container > .left {
width: 200px;
background-color: navajowhite;
min-height: 600px;
position: absolute;
top: 0;
left: 0;
}
.container > .right {
width: 200px;
background-color: navajowhite;
min-height: 600px;
position: absolute;
top: 0;
right: 0;
}
.container > .main {
background-color: lightgreen;
min-height: 600px;
width: 540px;
position: absolute;
top: 0;
left: 210px;
}
</style>
</head>
<body>
<!-- 页眉 -->
<div class="header">
<div class="content">
<ul>
<li><a href="">首页</a></li>
<li><a href="">会场</a></li>
<li><a href="">售后</a></li>
</ul>
</div>
</div>
<!-- 主体 -->
<div class="container">
<div class="left">左边</div>
<div class="main">中间</div>
<div class="right">右边</div>
</div>
<!-- 页脚 -->
<div class="footer">
<div class="content">
<p>教育科技有限公司© | 闵备案号:*******</p>
</div>
</div>
</body>
</html>
2.使用浮动完成一个三列经典布局,防止浮动元素塌陷用overflow: hidden
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>布局实例:使用浮动来完成一个通用三列布局</title>
<style>
/* 初始化 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
li {
list-style: none;
}
a {
text-decoration: none;
color: #666;
}
/* 页眉与页脚 */
.header,
.footer {
height: 40px;
background-color: lightsteelblue;
}
.content {
width: 960px;
margin: auto;
}
.content ul li {
float: left;
line-height: 40px;
padding: 0 15px;
}
.content ul li:hover {
background-color: limegreen;
}
/* 页脚 */
.content p {
text-align: center;
line-height: 40px;
}
/* 主体用定位来做 */
.container {
width: 960px;
margin: 10px auto;
min-height: 600px;
/* 防止浮动元素塌陷 */
overflow: hidden;
}
.container > .left {
width: 200px;
background-color: navajowhite;
min-height: 600px;
float: left;
}
.container > .right {
width: 200px;
background-color: navajowhite;
min-height: 600px;
float: right;
}
.container > .main {
background-color: plum;
min-height: 600px;
width: 540px;
float: left;
margin-left: 10px;
}
</style>
</head>
<body>
<!-- 页眉 -->
<div class="header">
<div class="content">
<ul>
<li><a href="">首页</a></li>
<li><a href="">会场</a></li>
<li><a href="">售后</a></li>
</ul>
</div>
</div>
<!-- 主体 -->
<div class="container">
<div class="left">左</div>
<div class="main">中</div>
<div class="right">右</div>
</div>
<!-- 页脚 -->
<div class="footer">
<div class="content">
<p>教育科技有限公司© | 闵备案号:*******</p>
</div>
</div>
</body>
</html>
总结
通过学习,对浮动产生的影响有了更深的理解,新的知识点overflow: hidden,掌握定位的使用