前言
最近自己在写个网页 城墙墨の小破站,遇到了关于float实现元素横向排列及清除浮动影响问题,在这里整理记录一下。
定义float
float元素可以定义元素浮动显示
float: left | right | none
利用浮动,使元素横向排列
设置4个横向排列的item,代码如下:
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
.item{
width: 125px;
height: 165px;
float: left;
}
利用float就能使这几个div横着排列
清除元素浮动影响(四种方式)
由于元素浮动后不占据空间,在.item下面在设置div块时就会被浮动的.item所遮挡,所以这个时候就需要清除元素浮动影响,有两种方法
1.overflow:auto;
在浮动的元素的外面套个div盒子,例如如下在.item外面套个#category,css设置为overflow:auto
<div id="category">
<div class="item first"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item last"></div>
</div>
#category {
overflow: auto;
background-color:brown;
margin: auto;
}
#category .item{
width: 125px;
height: 165px;
padding-left: 25px;
padding-right: 25px;
padding-bottom: 25px;
border-right: 1px dashed black;
float: left;
}
2.clear清除元素浮动影响
clear: left | right | both
在浮动元素后设置个标签,css样式设置为clear: both;
即在父容器底部添加了一个非浮动元素,这样父元素就把所有元素包括在内了
<div id="category">
<div class="item first"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item last"></div>
<div style="clear:both;"></div>
</div>
3.使用after伪元素清除浮动
.clearfix:after{
content: '';
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix {
*zoom: 1; /*zoom 1 是IE6清除浮动的方式 * IE6、7读取 */
}
4.使用before和after双伪元素
.clearfix:before ,.clearfix:after {
content: "";
display: table; /*这句话可以触发FBC*/
}
.clearfix:after {
clear: both;
}
.clearfix {
*zoom: 1;
}
利用clear实现一个对话框
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>对话框</title>
<style type="text/css">
ul {
width: 300px;
height: 500px;
border-width:2px;
border-color: black;
}
li {
clear: both;
background-color: aquamarine;
}
.a {
float:left;
}
.b {
float: right;
}
</style>
</head>
<body>
<ul>
<li class="a">喵喵喵</li>
<li class="b">汪汪汪</li>
<li class="a">🤨</li>
<li class="b">🙃</li>
<li class="a">emm</li>
<li class="b">。。。</li>
<li class="a">我喵星人宇宙无敌超级美</li>
<li class="b">呵呵呵!!!</li>
</ul>
</body>
</html>