浮动(float):
让默认文档流(标准文档流)下的元素漂浮起来,水平排列。
通俗点来说,浮动可以让元素浮到第二层,而其他没有浮动的元素就往上排,而我们是俯视去看的,所以往上顶的那个元素就会被遮住,这就带来了问题。解决方法,后面会有说。
float: 1. left----左浮
2. right------右浮
3. none ------不浮动
默认(标准)文档流:
说白了就是一个“默认”状态。文档流指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列。并最终窗体自上而下分成一行行,并在每行中从左至右的顺序排放元素。
浮动带来的影响:
1. 行内元素在浮动之后,可以支持宽高。
p{ ???float: left; ???width: 50px; ???height: 50px; ???border: 1px solid #000;}
2. 文本会给浮动的元素让位,可以制作成文本环绕的效果。
p{ ???float: left; ???width: 50px; ???height: 50px; ???border: 1px solid #000;}<body> ???<p></p>这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落这是段落</body>
3. 在没有给父级高度的情况下,子级浮动后,父级会没有高度。
这是没有给子级设置浮动的情况下:
div{ ???background-color: #f00;}p{ ???/*float: left;*/ ???width: 50px; ???height: 50px; ???border: 1px solid #000;}<div> ???<p></p></div>
给子级设置浮动后:
div{ ???background-color: #f00;}p{ ???float: left; ???width: 50px; ???height: 50px; ???border: 1px solid #000;}<div> ???<p></p></div>
这里给出的解决方案主要是针对第三种的。
解决方法主要有几个,下面我就向大家一一介绍:
1. 在父级内容最后添加一个空的div,添加clear属性
clear-----left------清除左浮动
right------清除右浮动
both-----清除所有浮动
这个方法不推荐使用,因为他会添加大量的无用的标签,让页面的布局变的更加的复杂。
2. 给父级设置 overflow:hidden;
溢出隐藏,会触发bfc(block formatting context)块级格式化上下文
这个也不推荐使用,在和定位一起使用的时候,会产生其他的问题。
3. 使用伪元素 :after (推荐使用)
.clear:after{ ???content: ""; ????/*内容为空*/ ???height: 0; ????????????line-height: 0; ???display: block; ????/*块级元素*/ ???visibility: hidden; ?????/*隐藏*/ ???clear: both; ?????/*清除浮动*/}.clearfix{ ??/*兼容性问题*/ ???zoom: 1; ??/*ie678*/}
4. 使用伪类元素(第三种的改进) 缺点,相比于第三种,有点不严谨
.clear:after,.clear:before{ ???content: ""; ????/*内容为空*/ ???display: block; ????/*块级元素*/ ???clear: both; ?????/*清除浮动*/}.clearfix{ ??/*兼容性问题*/ ???zoom: 1; ??/*ie678*/}
CSS,浮动及其影响
原文地址:https://www.cnblogs.com/mercy-up/p/10130639.html