css中的浮动以及如何清除浮动
2017-08-16 14:02
561 查看
在平时的开发过程中,我们往往会遇到一个问题,无法将块元素(block)居右,并且在行内块元素(inline-block)出现之前,像div这样独占一行的块元素,我们很难有办法将它们排成一行,今天就来谈谈如何将块元素居右显示。
浮动(float)就是这样一个可以解决问题的属性,什么是浮动呢?其实也就一句话:浮动元素会脱离文档流,可以向左或者向右浮动,直到碰到父元素或者另一个浮动元素。在这句话中,我们可以发现浮动元素的几个特性——会脱离文档流,可以向左向右浮动。下面,就让我们看看如何浮动的效果:
1.浮动元素可以向左向右浮动:
这是没有设置浮动的: 请看实例————————>点击打开链接
这是设置了浮动的: 请看实例————————>点击打开链接
在没有设置浮动的情况下,两个div元素是独占一行的,在设置了浮动之后,两个div元素在同一行,一个在左,一个在右。这就是浮动的特点,可以脱离文档流显示,两个块元素不再会像之前一样,霸道的占领一行。但是,浮动虽然避免了块元素独占一行的特性,并且可以居左或者居右显示。但是,他也有一个致命的缺点,脱离文档流的特性导致他的父级无法感受到他的高度,会因此造成父元素的高度崩塌。
下面请看实例 看实例戳这里——————>点击打开链接
在这个例子中,我们会发现,这个id为father的div元素,他的高度为0。这就是浮动带来的缺点,父级高度塌陷,无法像正常情况一样父级元素的高度会被子级撑起来。那么面对这个问题,我们该如何解决父类塌陷呢,接下来我们会谈谈如何清除浮动(元素依然可以向左向右的浮动,但是不会造成父级高度塌陷。)
2.在父级中添加一个没有任何作用的空标签,并且给它添加一个属性(clear:both;)
.clearfix{clear:both;}
<div class="clearfix"></div>
3.在父级上使用after伪元素。(推荐使用)
#father:after{content:"";clear:both;display:block;}
4.在父级中使用overflow属性
#father{background:yellow;overflow:auto;zoom:1;}
5.之前看过一个很好的清除浮动的方法,推荐给大家:
浮动(float)就是这样一个可以解决问题的属性,什么是浮动呢?其实也就一句话:浮动元素会脱离文档流,可以向左或者向右浮动,直到碰到父元素或者另一个浮动元素。在这句话中,我们可以发现浮动元素的几个特性——会脱离文档流,可以向左向右浮动。下面,就让我们看看如何浮动的效果:
1.浮动元素可以向左向右浮动:
这是没有设置浮动的: 请看实例————————>点击打开链接
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link rel="icon" href="images/favicon1.ico"/> <title>北晨的博客—float浮动</title> <style type="text/css"> *{margin:0px;padding:0px;} h1{margin-top:30px;text-align: center;} .box1,.box2{width:100px;height:100px;} .box1{background-color:red;} .box2{background-color:blue;} </style> </head> <body> <h1>未浮动</h1> <div class="box1">box1</div> <div class="box2">box2</div> </body> </html>
这是设置了浮动的: 请看实例————————>点击打开链接
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link rel="icon" href="images/favicon1.ico"/> <title>北晨的博客—float浮动</title> <style type="text/css"> *{margin:0px;padding:0px;} h1{margin-top:30px;text-align: center;} .box1,.box2{width:100px;height:100px;} .box1{background-color:red;float:left;} .box2{background-color:blue;float:right;} </style> </head> <body> <h1>浮动</h1> <div class="box1">box1</div> <div class="box2">box2</div> </body> </html>
在没有设置浮动的情况下,两个div元素是独占一行的,在设置了浮动之后,两个div元素在同一行,一个在左,一个在右。这就是浮动的特点,可以脱离文档流显示,两个块元素不再会像之前一样,霸道的占领一行。但是,浮动虽然避免了块元素独占一行的特性,并且可以居左或者居右显示。但是,他也有一个致命的缺点,脱离文档流的特性导致他的父级无法感受到他的高度,会因此造成父元素的高度崩塌。
下面请看实例 看实例戳这里——————>点击打开链接
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link rel="icon" href="images/favicon1.ico"/> <title>北晨的博客—float浮动</title> <style type="text/css"> *{margin:0px;padding:0px;} h1{margin-top:30px;text-align: center;} #father{background:yellow;} .box1,.box2{width:100px;height:100px;} .box1{background-color:red;float:left;} .box2{background-color:blue;float:right;} </style> </head> <body> <h1>浮动造成的高度崩塌</h1> <div id="father"> <div class="box1">box1</div> <div class="box2">box2</div> <div> </body> </html>
在这个例子中,我们会发现,这个id为father的div元素,他的高度为0。这就是浮动带来的缺点,父级高度塌陷,无法像正常情况一样父级元素的高度会被子级撑起来。那么面对这个问题,我们该如何解决父类塌陷呢,接下来我们会谈谈如何清除浮动(元素依然可以向左向右的浮动,但是不会造成父级高度塌陷。)
清除浮动常用的几种方法:
1.给父级设置高度。(不是很好,因为内容一般不是固定的。)2.在父级中添加一个没有任何作用的空标签,并且给它添加一个属性(clear:both;)
.clearfix{clear:both;}
<div class="clearfix"></div>
3.在父级上使用after伪元素。(推荐使用)
#father:after{content:"";clear:both;display:block;}
4.在父级中使用overflow属性
#father{background:yellow;overflow:auto;zoom:1;}
5.之前看过一个很好的清除浮动的方法,推荐给大家:
// 全浏览器通用的clearfix方案【推荐】 // 引入了zoom以支持IE6/7 // 同时加入:before以解决现代浏览器上边距折叠的问题 .clearfix:before, .clearfix:after { display: table; content: " "; } .clearfix:after { clear: both; } .clearfix{ *zoom: 1; }
作者:齐修_qixiuss 链接:http://www.jianshu.com/p/09bd5873bed4 來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章推荐
- CSS中清除浮动的作用以及如何清除浮动
- css的浮动以及如何清除浮动
- css清除浮动的几种方法以及对应规范说明
- 第五节 HTML&CSS -- 关于浮动和清除浮动的解说,以及两个大坑不要踩
- 浮动布局所带来的影响以及如何清除浮动
- 浮动布局所带来的影响以及如何清除浮动
- 浮动布局所带来的影响以及如何清除浮动
- css如何清除浮动(二)
- CSS学习笔记一 如何清除浮动
- css如何清除浮动(clear和BFC)
- css如何清除浮动(三)
- css清除浮动的几种方法以及对应规范说明
- css如何清除浮动常用的方法有哪些
- 浮动布局所带来的影响以及如何清除浮动
- css如何清除浮动(四)
- css如何清除浮动(五)
- html5和css篇有关浮动以及如何清除浮动
- css如何清除浮动(五)
- css如何清除浮动(四)
- 关于CSS中float的两点心得以及清除浮动的总结