浮动的语法:float:left/right;html
浮动float的本来设计了做用初衷是为了实现文字环绕效果浏览器
浮动产生负做用:spa
一、背景不能显示设计
二、边框不能撑开父元素code
三、margin padding设置值不能正确显示htm
浮动以后会使父元素内的子元素漂浮在父元素上方,形成父元素边框重叠。因此须要清除浮动来使子元素撑开父元素。对象
简单来讲浮动是由于使用了float:left或float:right或二者都是会产生的浮动。blog
何时使用清除浮动呢?当父元素没有设置宽度或者高度的时,又须要子元素撑开父元素的时候使用清除浮动。it
演示:io
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>浮动反作用</title> 6 <style> 7 .container{ 8 margin:40px auto; 9 width:400px; 10 border:5px solid grey; 11 background: yellow; /*背景不能显示*/ 12 } 13 .left{float:left;width:200px;height:100px;border: 1px solid red;} 14 .right{float:right;width:196px;height:100px;border: 1px solid red;background: blue;} /*边框不能撑开父级元素*/ 15 </style> 16 </head> 17 <body> 18 <div class="container"> 19 <div class="left">left浮动</div> 20 <div class="right">right浮动</div> 21 </div> 22 </body> 23 </html>
结果显示:
原本俩个红色对象是在父级元素灰色盒子内的,可是由于对俩个红色盒子使用了float浮动,因此俩个盒子产生了浮动致使灰色盒子不能撑开,这样浮动就产生了。
为了解决上面的浮动产生的反作用,本人总结了如下几个清除浮动的方式:
HTML代码:
1 <div class="container"> 2 <div class="left">left浮动</div> 3 <div class="right">right浮动</div> 4 <div class="clear"></div> 5 </div>
具体CSS代码:
1 <style> 2 .container{ 3 margin:40px auto; 4 width:400px; 5 border:5px solid grey; 6 background: yellow;/*背景正常显示*/ 7 } 8 .left{float:left;width:200px;height:100px;border: 1px solid red;} 9 .right{float:right;width:196px;height:100px;border: 1px solid red;background: blue;} /*边框能撑开*/ 10 .clear{clear:both;} 11 </style>
结果显示:
父级背景以及边框也能正常显示和撑开了,优势方便使用,缺点是会多加HTML空标签
优势:无需额外的标签,浏览器兼容性好,是目前用的最多的一种清除浮动的方法之一,企业都在用;
缺点:ie6-7不支持伪元素:after,使用zoom:1触发hasLayout.
HTML代码:
1 <div class="container"> 2 <div class="left">left浮动</div> 3 <div class="right">right浮动</div> 4 </div>
CSS代码:
1 <style> 2 .container{ 3 width:400px; 4 border:5px solid grey; 5 background: yellow; 6 } 7 .left{float:left;width:200px;height:100px;border: 1px solid red;} 8 .right{float:right;width:196px;height:100px;border: 1px solid red;background: blue;} 9 .container:after{ 10 content:""; 11 display: block; 12 clear:both; 13 } 14 .container{ *zoom: 1; /*ie6清除浮动的方式 *号只有IE6-IE7执行,其余浏览器不执行*/ } 15 </style>
结果显示:
通常设置高度须要能肯定内容高度才能设置。这里咱们知道内容高度是100PX+上下边框为2px,这样具体父级高度为102px,
只需在上面的浮动缺点反作用代码中的设置类样式.container加上父级高度便可,这里我就不作过多演示了。缺点也很是明显,本人不建议这样清除浮动。
原理:父元素定义overflow:hidden,此时,浏览器会自动检查浮动区域的高度;
优势:简单,无需增长新的标签;
缺点:不能和position配合使用,由于超出的尺寸的会被隐藏;
代码也是在反作用基础上container中添加上overflow:hidden或者auto便可实现清除浮动效果
结果显示:
优缺点:很完美,可是属性太多;很差分别。