Css里的BFC
一、BFC简介
BFC全称:Block Formatting Contexts (BFC,块级格式化上下文),就是 一个块级元素 的渲染显示规则
  (可以把 BFC 理解为一个封闭的大箱子,,容器里面的子元素不会影响到外面的元素)
二、BFC的触发条件(只要元素满足下面任一条件即可触发 BFC 特性)
- body 根元素;
 - 浮动元素:float 不为none的属性值;
 - 绝对定位元素:position (absolute、fixed);
 - display为: inline-block、table-cell、flex;
 - overflow 除了visible以外的值 (hidden、auto、scroll);
 
三、BFC的布局规则
<1> 内部的盒子会在垂直方向,一个个地放置;
 <2> BFC是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然
 <3> 属于同一个BFC的 两个相邻Box的 上下margin会发生重叠 ;
 <4> 计算BFC的高度时,浮动元素也参与计算
 <5> 每个元素的左边,与包含的盒子的左边相接触,即使存在浮动也是如此;
 <6> BFC的区域不会与float重叠;
四、BFC的应用
<1>解决margin重叠问题
<2>解决浮动高度塌陷问题
<3>解决侵占浮动元素的问题
五、解决方法(代码和效果图)
<1>解决margin重叠问题
代码如下:
<!doctype html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title>解决margin重叠</title>
        <link rel="stylesheet" href="index.css"/>
    </head>
    <body>
        <div class="one"></div>
        <div class="box">
            <div class="two"></div>
        </div>
        <div class="three"></div>
    </body>
</html>
body{
    margin:0 auto;
}
.box{
    overflow:hidden;
}
.one{
    height:50px;
    background-color:red;
    margin:20px 0;
}
.two{
    height:50px;
    background-color:red;
    margin:20px 0;
}
.three{
    height:50px;
    background-color:red;
    margin:20px 0;
}
效果图如下:
(若将box中的overflow:hiddden;去掉的话第二个div的margin就会和上下俩个div的margin重叠)
<2>解决浮动高度塌陷问题
代码如下:
<!doctype html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title>解决父元素高度塌陷</title>
        <link rel="stylesheet" href="index4.css"/>
    </head>
    <body>
        <div class="box">
            <div class="one"></div>
            <div class="two"></div>
        </div>
    </body>
</html>
body{
    margin:0 auto;
}
.box{
    overflow:hidden;
    width:500px;
    background-color:yellow;
    margin:0 auto;
}
.one{
    height:50px;
    width:100px;
    background-color:red;
    float:left;
}
.two{
    height:100px;
    width:200px;
    background-color:blue;
    float:right;
}
效果图如下:
图片描述
(不给父元素overflow:hiddden;的话由于父元素没高而子元素也由于浮动不能撑起父元素 ,父元素就会塌陷)
<3>解决侵占浮动元素的问题
代码如下:
<!doctype html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title>解决侵占浮动元素的问题</title>
        <link rel="stylesheet" href="index5.css"/>
    </head>
    <body>
        <div class="box">
            <div class="one"></div>
            <div class="two">
                akehfakwehfaie<br/>
                akehfakwehfaie<br/>
                akehfakwehfaie<br/>
                akehfakwehfaie<br/>
                akehfakwehfaie<br/>
                akehfakwehfaie<br/>
            </div>
        </div>
    </body>
</html>
body{
    margin:0 auto;
}
.box{
    overflow:hidden;
    width:700px;
    background-color:yellow;
    margin:0 auto;
}
.one{
    height:100px;
    width:150px;
    background-color:red;
    float:left;
}
.two{
    height:170px;
    background-color:blue;
    /* float:left; */
    overflow:hidden;
}
(这里是将红色div左浮给蓝色的divoverflow:hidden;蓝色的就不会被红色的挡住
注意要给父元素divoverflow:hidden;否则当蓝色框内容少时父元素会和蓝色div一起变化)
Css里的BFC的更多相关文章
- 浅析CSS里的 BFC 和 IFC
		
前端日刊 登录 浅析CSS里的 BFC 和 IFC 2018-01-29 阅读 1794 收藏 3 原链:segmentfault.com 分享到: 前端必备图书<Web安全开发指南 掌握白 ...
 - CSS布局基础——BFC
		
what's BFC? 第一次看到这个名词,我是拒绝的,css什么时候还有这个东西?于是迫不及待的google了一下,才发现原来它无时无刻不在我们的css当中,只不过它并不是一个属性,不需要我们平常使 ...
 - 【转】css学习专题-BFC
		
css学习专题-BFC 转自:原文链接:css学习专题-BFC文章目录 BFC:Block Formatting Context. BFC就是一种布局方式,在这种布局方式下,盒子们自所在的 conta ...
 - 关于CSS inline-block、BFC以及外边距合并的几个小问题
		
CSS inline-block和BCF对于初学者来说,总是弄不太明白,下面记录下我在学习这块知识的过程中遇到的几个问题,供大家参考,有不足的地方,欢迎大家批评指正. 一.在什么场景下会出现外边距合并 ...
 - 关于解决asp.net mvc网站页面Banner图片即时更换css里背景图片url相对路径问题的新方案
		
最近在网站首页上想将Banner壁纸给做到后台上传随时更改的效果.遇到问题便是:将上传的图片路径动态添加到首页css代码中,结果尝试了网上提供的思路,更改相对路径,换为url中“../../Conte ...
 - CSS里的pointer-events属性
		
现代浏览器里CSS的职责范围和JavaScript的越来越模糊分不清.比如CSS里-webkit-touch-callout属性在iOS里能禁止当用户点击时弹出气泡框.而本文要说的pointer-ev ...
 - CSS里的 no-repeat 是什么意思
		
CSS里的 no-repeat是针对背景图片来说的.当你设置了no-repeat这个属性后,你的背景图片将不会被重复,再换一种说法,你在网站上所看到的背景图片就是你所添加的图片, 不会出现平铺或者重复 ...
 - 【演示】在CSS里用calc进行计算
		
请阅读 在CSS里用calc进行计算 下面的元素的width,padding,margin都使用了CSS calc进行计算. 简单计算: 100% – 100px 这是经过简单计算的元素宽度 复杂 ...
 - 使用CSS里的user-select属性控制用户在页面上选中的内容
		
CSS里的user-select属性用来禁止用户用鼠标在页面上选中文字.图片等,也就是,让页面内容不可选.也可以只允许用户选中文字,或者全部都放开,用户可以同时选中文字.还包括文本里的图片.视频等其它 ...
 
随机推荐
- 学习4412开发板gdb和gdbserver的调试
			
因为有很多的小伙伴是从单片机转过来的,用惯了单片机上的JLINK调试程序,换到Linux上非常的不习惯.确实,如果能设置断点,单步调试,查看变量,那确实是太爽了,那么在我们的Linux可以做到吗,答案 ...
 - 31)PHP,对象的遍历
			
对象的遍历: 对象也可以可以使用foreach语句进行便利,有两点注意: 1,只能便利属性.(所以,这个就解决了,为啥之前的数据库类,我只是看到了一些属性名字,而没有得到我的属性值) 2,只能便利“看 ...
 - 吴裕雄--天生自然C语言开发:数据类型
			
#include <stdio.h> #include <limits.h> int main() { printf("int 存储大小 : %lu \n" ...
 - [LC] 39. Combination Sum
			
Given a set of candidate numbers (candidates) (without duplicates) and a target number (target), fin ...
 - 63)PHP,登录验证
			
首先辨析两种状态: 你的用户名和密码通过验证 只能表明你能登录,但是不能保证你登录了. 管理员信息合法和管理员处于的登录状态是两个概念:管理员信息合法证明你的用户名和密码是正确的, 但是管理员信 ...
 - VisionPro和Halcon的详细对比
			
一.概括的对比 1.1 Halcon的优势 Halcon有着更加低廉的Lisence 1.并且提供更好.更强大的2D和3D的视觉软件库 2.Halcon支持的视觉图像采集设备数量是Visionpro ...
 - HDU-1164-Eddy's research I(分解质因数)
			
由于这道题目数据范围小,所以属于水题.可以采取暴力的做法来解决. 代码如下: #include"bits/stdc++.h" using namespace std; ; ]; v ...
 - com.spotify:docker-maven-plugin 报localhost:2375 Connection refused 错误
			
当用maven build项目时出现了如下错误: Failed to execute goal com.spotify:docker-maven-plugin:0.4.13:build (defaul ...
 - OpenResty+缓存穿透基本介绍
			
OpenResty 1.lua表达式 2.Nginx的安装 3.OpenResty ...
 - [洛谷P2613] [模板] 有理数取余
			
刷水题. 传送门 看似高精而非高精乃是此题最大亮点. 边读边取模技能get~ #include<cstdio> #define ll long long #define mod 19260 ...