浮动是通过float
属性设置,float
取值范围:
<style>
.first {
height: 100px;
width: 100px;
background-color: red;
float: left;
}
.second {
height: 200px;
width: 200px;
background-color: blue;
}
</style>
<div class="first"></div>
<div class="second"></div>
<style>
.first {
height: 100px;
width: 100px;
background-color: red;
float: left;
}
.second {
height: 200px;
width: 200px;
background-color: blue;
float: left;
}
</style>
<div class="first"></div>
<div class="second"></div>
<style>
.first {
height: 200px;
width: 200px;
background-color: red;
float: left;
}
</style>
<span class="first">我是一个行内元素加了浮动</span>
<span>
是一个行内元素,无法设置宽高。当给它设置浮动后,就变成了一个行内块元素,可以设置宽高了。
<style>
.parent {
width: 100px;
background-color: red;
}
.child {
height: 100px;
float: left;
}
</style>
<div class="parent">
<div class="child">我是一个浮动的子元素</div>
</div>
ps:执行上面代码,你会发现一:父元素没有红色的背景,因为子元素浮动后,父元素没有高度;你会发现二:子元素的内容换行了,因为父元素的宽度依然束缚着浮动的子元素。
方式一:给父元素设置高度。
<style>
.parent {
width: 100px;
height: 100px;
background-color: red;
}
.child {
height: 100px;
float: left;
}
</style>
<div class="parent">
<div class="child">我是一个浮动的子元素</div>
</div>
方式二:给父元素设置一个overflow: hidden
<style>
.parent {
width: 100px;
background-color: red;
overflow: hidden;
}
.child {
height: 100px;
float: left;
}
</style>
<div class="parent">
<div class="child">我是一个浮动的子元素</div>
</div>
方式一:在最后一个浮动元素后面,添加一个块元素,并给块元素添加clear: both
。
<style>
.first {
height: 100px;
width: 100px;
background-color: aqua;
float: left;
}
.second {
height: 100px;
width: 100px;
background-color: blueviolet;
float: left;
}
.test {
height: 100px;
width: 100px;
background-color: blue;
}
.tmp {
clear: both;
}
</style>
<div class="parent">
<div class="first"></div>
<div class="second"></div>
<div class="tmp"></div>
</div>
<div class="test"></div>
ps:执行上面代码,你会发现class=test的div,并没有占据浮动元素的位置。因为在它前面添加了一个空div,并且清空的浮动。
方式二:原理与方式一相同,只是实现的方式更加优雅,在实际开发中应用更多。通过伪元素的方式实现。
<style>
.first {
height: 100px;
width: 100px;
background-color: aqua;
float: left;
}
.second {
height: 100px;
width: 100px;
background-color: blueviolet;
float: left;
}
.test {
height: 100px;
width: 100px;
background-color: blue;
}
.parent::after {
content: "";
display: block;
clear: both;
}
</style>
<div class="parent">
<div class="first"></div>
<div class="second"></div>
</div>
<div class="test"></div>
如果对伪类选择器不太熟悉,可以查看css选择器介绍。