下面这段代码是用来清除浮动带来的高度塌陷问题


.clearfix:before {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}

Question 1: 上面的代码的能够实现CSS清除浮动的问题吗?

Answer: Can't. 因为clear属性只能控制元素本身与前面的浮动元素的关系。在本例中,使用:before伪元素明显位于所有子元素之前,故而clear属性不会因后面的浮动元素产生任何作用效果。 clear属性的官方定义可以查看CSS文档 。那么应该如何修改呢?将:before换成:after即可。最终代码如下:


.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和 可以去掉吗? 当然可以,因为块元素没有内容就不会有高度咯。

更改后的代码如下:


.clearfix:after {
content: "";
display: block;
clear: both;
}

Question 3: display属性的内容能改成 inlineinline-block 吗?

Answer: 不能。 我们要明白float属性的初衷————让文字环绕图片展示。翻译成另外一句话:内联级别的元素会环绕浮动元素展示。那么为什么 display: block;可以解决高度塌陷的问题呢。 因为 clear属性的含义是不让元素本身与浮动元素的边界相邻。如果块级元素要不与块级元素边界相邻,只有换到下一行展示。也正为换行,才将父元素到高度撑开了,正式上面的代码解决高度塌陷的原理。

Question 4: 下面到div元素会存在高度塌陷问题吗?

```<style>
.clearfix::after {
content: "";
display: block;
clear:left;
}
img { float: right; }
</style>
<div class="clearfix">
<span>历史的天空</span>
<img src="data:images/naruto.gif">
</div>
```

Answer: 存在。为什么呢?要知道 clear属性中, clear:left;clear:right; 的区别。

  • left : 不与左浮动的元素产生边界接触;
  • right : 不与右浮动的元素产生边界接触;
  • both : 不与左浮动和右浮动的元素产生边界接触;

所以上面的代码不会解决高度塌陷到问题。

如果有如下代码:

    .clear-left { clear:left; }
.clear-right { clear:right; }
.fl { float: left;}
.fr { float: right;}
.box {
height: 30px; width: 30px;
background: yellowgreen;
margin: 5px;
}
&lt;/style&gt; &lt;div&gt;
&lt;div class="box fl"&gt;1&lt;/div&gt;
&lt;div class="box fr"&gt;2&lt;/div&gt;
&lt;div class="box clear-left"&gt;3&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class="box fl"&gt;1&lt;/div&gt;
&lt;div class="box fr"&gt;2&lt;/div&gt;
&lt;div class="box clear-right"&gt;3&lt;/div&gt;
&lt;/div&gt;å

你会发现,两个div的展示效果是相同的。也就是说,如果前面同时存在左浮动和右浮动到元素,那么clear属性值无论设成left 还是right都无关紧要。 反过来想,如果clear属性设成 both,那么无论前面的元素是左浮动还是右浮动,都无关紧要。这也是clearfix通常设置 clear:both;的原因。

注意一点,我们一直在说 解决 高度塌陷都问题,从来没有说清除浮动。 是因为本质上,浮动并没被清除,我们只是利用clear属性解决了浮动元素带来的父级元素高度塌陷问题。而且clear属性影响也只是设置clear属性的元素本身,而不是浮动元素。

来源:https://segmentfault.com/a/1190000017934125

利用clear清除浮动的一些问题的更多相关文章

  1. 【CSS】clear清除浮动

    clear清除浮动1.作用: 规定元素的某一侧不允许存在浮动元素 2.值: 3.应用: 清除其他浮动元素对其产生的影响 <!DOCTYPE html> <html lang=&quo ...

  2. day68-CSS-float浮动,clear清除浮动,overflow溢出

    1. float 浮动 1.1 在 CSS 中,任何元素都可以浮动. 1.2 浮动元素会生成一个块级框,而不论它本身是何种元素.内联标签设置浮动,就变成了块级标签. 1.3 关于浮动的两个特点: 浮动 ...

  3. CSS clear清除浮动

    1.CSS中的clear有四个参数: none:允许两边都可以浮动. left:不允许左边有浮动. right:不允许右边有浮动. both(默认):不允许有浮动. 2.一开始在CSS中clear浮动 ...

  4. CSS clear 清除浮动,兼容各浏览器

    .clear:after{content:".";display:block;height:0;clear:both;visibility:hidden;} .clear{zoom ...

  5. div clear清除浮动产生的影响 被受影响的div加上清除浮动后 不会填充前一个div浮动后空出的位置

  6. 清除浮动(overflow、clear、:after等方法)

    元素在浮动之后有三个重要的特点: 脱离文档流. 向左/向右浮动直到遇到父元素或者别的浮动元素. 浮动会导致父元素高度坍塌.  解决父元素高度坍塌的方式就是清除浮动. 以下述代码为例: <styl ...

  7. [转]CSS clear both清除浮动

    DIV+CSS clear both清除产生浮动 我们知道有时使用了css float浮动会产生css浮动,这个时候就需要清理清除浮动,我们就用clear样式属性即可实现. 接下来我们来认识与学习cs ...

  8. 【css】清除浮动(clearfix 和 clear)的用法

    本文主要是讲解如何在 html 中使用 clearfix 和 clear,针对那些刚开始了解 css 的童鞋.关于 clearfix 和 clear 的样式在这里我就不写了,具体样式点击此处. 下面就 ...

  9. CSS clear both清除浮动总结

    我们知道有时候使用了CSS float浮动,会产生CSS浮动,这个时候就需要清理浮动,我们就用clear样式属性即可实现. 接下来我们来认识与学习CSS clear知识与用法. clear清除浮动目录 ...

随机推荐

  1. 提升PPT制作效率和颜值

    [大咖分享]By汤帅,PPT定制师 网站有时比素材库更有效 学会多模板整合利用 网站推荐:花瓣,officeplus,演界网,pptstore 演讲提纲 思维导图听课笔记

  2. as3.2版本中中jar生成方法

    lintOptions { abortOnError false } task makeJar(type: Copy) { //删除存在的 delete 'build/libs/myjar.jar' ...

  3. 深入理解java的形参和实参

    转载声明:本文转载自公众号「码匠笔记」. 前几天在头条上看到一道经典面试题,引发了一些思考.也是写这篇文章的导火索. 背景 请看题: public    classMain{    publicsta ...

  4. 爬虫入门之反反爬虫机制cookie UA与中间件(十三)

    1. 通常防止爬虫被反主要有以下几个策略 (1)动态设置User-Agent(随机切换User-Agent,模拟不同的浏览器) 方法1: 修改setting.py中的User-Agent # Craw ...

  5. flume 1.4 设置FLUME_CONF_DIR没用

    今天安装Apache Flume 1.4的时候,发现设置了FLUME_CONF_DIR环境变量和flume-env.sh后,运行flume-ng时flume-env.sh中的JAVA_HOME没有生效 ...

  6. 【Leetcode】【Medium】Remove Duplicates from Sorted Array II

    Follow up for "Remove Duplicates":What if duplicates are allowed at most twice? For exampl ...

  7. Deep Learning Drizzle

    Deep Learning Drizzle Drench yourself in Deep Learning, Reinforcement Learning, Machine Learning, Co ...

  8. Exchange 2016 体系结构简介

    一.Exchange 2016简介 现在,CPU计算能力的成本显著降低,不再成为约束因素.随着此约束因素的消失,Exchange2016的主要设计目标是简化扩展.提高硬件利用率和实现故障隔离:在Exc ...

  9. February 2 2017 Week 5 Thursday

    Only do what your heart tells you. 随心而行. My heart tells me that I should leave here and go back to X ...

  10. January 30 2017 Week 5 Monday

    I can accept defeat but could not accept to give up. 我可以接受失败,但不能接受放弃. Fortune has not always smiled ...