下面这段代码是用来清除浮动带来的高度塌陷问题程序员
.clearfix:before { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
Question 1: 上面的代码的可以实现清除浮动的问题吗?学习
Answer: Can't. 由于clear属性只能控制元素自己与前面的浮动元素的关系。在本例中,使用:before伪元素明显位于全部子元素以前,故而clear属性不会因后面的浮动元素产生任何做用效果。 clear属性的官方定义能够查看CSS文档 。那么应该如何修改呢?将:before换成:after便可。最终代码以下:spa
.clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
Question 2: content属性的内容能改为空吗content: '';?翻译
Answer: Yes. 由于设置了 height:0; 和 visibility: hidden。 若是设置了content:'';,那么 height:0; 和 visibility: hidden和 能够去掉吗? 固然能够,由于块元素没有内容就不会有高度咯。code
更改后的代码以下:图片
.clearfix:after { content: ""; display: block; clear: both; }
Question 3: display属性的内容能改为 inline 或 inline-block 吗?文档
Answer: 不能。 咱们要明白float属性的初衷————让文字环绕图片展现。翻译成另一句话:内联级别的元素会环绕浮动元素展现。那么为何 display: block;能够解决高度塌陷的问题呢。 由于 clear属性的含义是不让元素自己与浮动元素的边界相邻。若是块级元素要不与块级元素边界相邻,只有换到下一行展现。也正为换行,才将父元素到高度撑开了,正式上面的代码解决高度塌陷的原理。get
Question 4: 下面到div元素会存在高度塌陷问题吗?it
<style> .clearfix::after { content: ""; display: block; clear:left; } img { float: right; } </style> <div class="clearfix"> <span>历史的天空</span> <img src="images/naruto.gif"> </div>
Answer: 存在。为何呢?要知道 clear属性中, clear:left; 和 clear:right; 的区别。io
left : 不与左浮动的元素产生边界接触;
right : 不与右浮动的元素产生边界接触;
both : 不与左浮动和右浮动的元素产生边界接触;
因此上面的代码不会解决高度塌陷到问题。
若是有以下代码:
<style> .clear-left { clear:left; } .clear-right { clear:right; } .fl { float: left;} .fr { float: right;} .box { height: 30px; width: 30px; background: yellowgreen; margin: 5px; } </style> <div> <div class="box fl">1</div> <div class="box fr">2</div> <div class="box clear-left">3</div> </div> <div> <div class="box fl">1</div> <div class="box fr">2</div> <div class="box clear-right">3</div> </div>
你会发现,两个div的展现效果是相同的。也就是说,若是前面同时存在左浮动和右浮动到元素,那么clear属性值不管设成left 仍是right都可有可无。 反过来想,若是clear属性设成 both,那么不管前面的元素是左浮动仍是右浮动,都可有可无。这也是clearfix一般设置 clear:both;的缘由。
注意一点,咱们一直在说 解决 高度塌陷都问题,历来没有说清除浮动。 是由于本质上,浮动并没被清除,咱们只是利用clear属性解决了浮动元素带来的父级元素高度塌陷问题。并且clear属性影响也只是设置clear属性的元素自己,而不是浮动元素。
为了学习工做与休闲娱乐互不冲突,现新建圈【码农茶水铺】用于程序员生活,爱好,交友,求职招聘,吐槽等话题交流,但愿各位大神工做之余到茶水铺来喝茶聊天。
了解更多