css清除浮动

前端开发中浮动处处可见,本文探讨浮动的成因以及如何更加有效的清除浮动。

1、浮动与清除浮动

浮动溢出

    当容器的高度为auto,且容器中的内容有浮动(float为left或right)的元素,在这种情况下,容器的高度不会自动改变以包含浮动部分的高度,使得浮动内容溢出到容器外面而影响(甚至破坏)布局的现象。 这个现象叫浮动溢出,为了防止这个现象的出现而进行的CSS处理,就叫CSS清除浮动。
“理想状态” - 合理的清除浮动后

2、清除浮动

基本css样式

.box {
    width: 400px;
    border: 1px solid #ff721b;
}
[class*='pull-'] {
    width: 100px;
    height: 100px;
    background-color: #00A8FF;
}
.pull-left {
    float: left;
}
.pull-right {
    float: right;
}

2.1 在容器内部使用块级元素的clear: both清除浮动

(1)通过在浮动元素后的块级元素设置clear: both;来清除其之前的浮动

css样式:

.clearfix2 {
    clear: both;
}

示例1:

<div class="box">
    <div class="pull-left"></div>
    <p class="clearfix2"></p>
    <div class="pull-right"></div>
    <p class="clearfix2"></p>
</div>

示例2:

<div class="box">
    <div class="pull-left"></div>
    <div class="pull-right"></div>
    <p class="clearfix2"></p>
</div


注:如果通过在容器内部添加新元素(块级元素且设置clear:both;),最好在容器结束标签前添加该元素才能达到理想状态。
(2)通过设置容器伪元素(::after)为块级元素且clear: both;来清除浮动 。----【用这个方式较好 ,不用考虑太多其它影响因素。
示例:

.clearfix4::after {
    display: block; /*table、flex也可以*/
    height: 0; /*可不写*/
    visibility: hidden; /*可不写*/
    content: '';
    clear: both;
}
<div class="box clearfix4">
    <div class="pull-left"></div>
    <div class="pull-right"></div>
</div>

2.2 利用BFC特性

BFC(Block Formatting Context),块级格式化上下文,它规定了内部的块级元素的布局方式,默认情况下只有根元素(即body)一个块级上下文。

1. BFC布局规则

  • 内部的块级元素会在垂直方向,一个接一个地放置;
  • 块级元素垂直方向的距离由margin决定(margin合并);
  • 每个元素的margin box的左边,与包含border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此;
  • BFC的区域不会与float box重叠;
  • BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素;外面的元素也不会影响到容器里面的子元素;*
  • 计算BFC的高度时,浮动元素也参与计算

2. 创建一个BFC

  • float的值不为none;
  • overflow的值不为visible;
  • position的值fixed / absolute;
  • display的值table-cell / table-caption / inline-block / flex / inline-flex。
    只需满足以上条件之一,一个BFC就可以被显式触发。

示例:以设置overflow:auto;为例(其它属性设置后会有一些影响-脱离文档流)

.clearfix1 {
    overflow: auto; /*hidden也可以*/
}
<div class="box clearfix1">
    <div class="pull-left"></div>
    <div class="pull-right"></div>
</div>

2.3 让容器也浮动

让容器一起浮动,也能不受内部元素的浮动影响。这个方法要小心使用。

3、参考文章

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352