场景1:非块元素(不支持低版本IE浏览器)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.box {
width: 700px;
margin: 30px auto;
}
h3 {
text-indent: 15px;
margin-bottom: 30px;
}
.box-list {
list-style: none;
}
.box-list li {
width: 165px;
height: 96px;
float: left;
margin-left: 15px;
margin-bottom: 10px;
background-color: yellow;
}
footer {
height: 20px;
background-color: red;
}
</style>
</style>
</style>
</head>
<body>
<section class="box">
<h3>盒子列表</h3>
<ul class="box-list">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</section>
<footer></footer>
</body>
</html>
以上代码运行结果:
期望结果:
footer 标签内容在 section 标签下面,但是现在结果如上图所示。
原因:
通过浏览器调试,发现 section 标签中 ul 标签的内容高度为0,导致整个 section 标签内容高度只有25px(即 h3 标签内容的高度)。因此实际上 footer 标签内容已经在 section 标签内容下面,但是由于 section 标签内容高度的错误,导致如上图的显示结果。
解决:
为 ul 标签添加样式:overflow:hidden; 来清除浮动(让元素适应内容的大小)。即:当子元素浮动后,父元素需使用 overflow:hidden; 来清除浮动。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.box {
width: 700px;
margin: 30px auto;
}
h3 {
text-indent: 15px;
margin-bottom: 30px;
}
.box-list {
list-style: none;
overflow:hidden;
}
.box-list li {
width: 165px;
height: 96px;
float: left;
margin-left: 15px;
margin-bottom: 10px;
background-color: yellow;
}
footer {
height: 20px;
background-color: red;
}
</style>
</style>
</style>
</head>
<body>
<section class="box">
<h3>盒子列表</h3>
<ul class="box-list">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</section>
<footer></footer>
</body>
</html>
以上代码运行结果:
场景2:块元素(不支持低版本IE浏览器)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.box {
width: 700px;
margin: 30px auto;
}
.item {
width: 165px;
height: 96px;
float: left;
margin-left: 15px;
margin-bottom: 10px;
background-color: yellow;
}
footer {
height: 20px;
background-color: red;
}
</style>
</style>
</style>
</head>
<body>
<div class="box">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
<footer></footer>
</body>
</html>
以上代码运行结果:
期望结果:
footer 标签内容在 .box 下面,但是现在结果如上图所示。
原因:
通过浏览器调试,发现 .box 的内容高度为0。因此实际上 footer 标签内容已经在 .box 内容下面,但是由于 .box 内容高度的错误,导致如上图的显示结果。
解决:
在 .box 的最后一个 div 标签后再添加一个元素,且这个元素需满足以下条件:
1)是一个块元素(占一行)
2)是一个空元素(元素下面没有内容)
3)元素本身不浮动(样式中没有 float 属性)
4)为元素添加样式:clear: both; 来清除浮动
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.box {
width: 700px;
margin: 30px auto;
}
.item {
width: 165px;
height: 96px;
float: left;
margin-left: 15px;
margin-bottom: 10px;
background-color: yellow;
}
footer {
height: 20px;
background-color: red;
}
</style>
</style>
</style>
</head>
<body>
<div class="box">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div style="clear: both;"></div>
</div>
<footer></footer>
</body>
</html>
以上代码运行结果:
让场景1、场景2支持低版本IE浏览器(推荐用此方法)
为需要清除浮动的元素(需要高度自适应的元素)添加一个 .clearfix 样式,且被添加 .clearfix 样式的元素本身是一个没有浮动(无 float 样式)的块元素, .clearfix 样式为:
/* IE7+ */
.clearfix:after {
content: "";
display: block;
clear: both;
}
/* IE6 IE7 */
.clearfix {
zoom: 1;
}
- 场景1代码调整
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.box {
width: 700px;
margin: 30px auto;
}
h3 {
text-indent: 15px;
margin-bottom: 30px;
}
.box-list {
list-style: none;
}
.box-list li {
width: 165px;
height: 96px;
float: left;
margin-left: 15px;
margin-bottom: 10px;
background-color: yellow;
}
/* IE7+ */
.clearfix:after {
content: "";
display: block;
clear: both;
}
/* IE6 IE7 */
.clearfix {
zoom: 1;
}
footer {
height: 20px;
background-color: red;
}
</style>
</style>
</style>
</head>
<body>
<section class="box">
<h3>盒子列表</h3>
<ul class="box-list clearfix">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</section>
<footer></footer>
</body>
</html>
- 场景2代码调整
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.box {
width: 700px;
margin: 30px auto;
}
.item {
width: 165px;
height: 96px;
float: left;
margin-left: 15px;
margin-bottom: 10px;
background-color: yellow;
}
/* IE7+ */
.clearfix:after {
content: "";
display: block;
clear: both;
}
/* IE6 IE7 */
.clearfix {
zoom: 1;
}
footer {
height: 20px;
background-color: red;
}
</style>
</style>
</style>
</head>
<body>
<div class="box clearfix">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
<footer></footer>
</body>
</html>
网友评论