什么是BFC以及应用!

什么是BFC以及应用

BFC(Block formatting context)直译为“块级格式化上下文”。它是一个独立的渲染区域,只有Block-level box(块)参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干

BFC的布局规则

一、内部的Box会在垂直方向,一个接一个地放置。
二、Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠
三、每个元素的margin box的左边, 与包含块border box的左边相接触四、BFC的区域不会与float box重叠。
五、BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。
六、计算BFC的高度时,浮动元素也参与计算哪些元素或属性
能触发BFC根元素(html)float属性不为noneposition为absolute或fixeddisplay为inline-block, table-cell, table-caption, flex, inline-flexoverflow不为visible。

  • 在设置了overflow: hidden;触发bfc的元素,会剪切掉该元素之外的内容,所以在该元素设置定位后一点超出该元素的范围,则不会显示但是会占用空间,所以在需要定位的元素尽量不要使用这种方式清除浮动或者触发bfc。
BFC的应用

1、自适应两栏布局
2、清除内部浮动
3、防止margin上下重叠

  • 在两个盒模型浮动后,会脱离文本流可以利用这一特性进行操作给同级元素加另一个bfc一般添加overflow:hidden; 因为bfc规定两个独立的bfc不会重叠,
  • 在全屏的布局中需要将html,body高度设置为100%。
双翼布局
        `*{
            margin:0;
            padding:0;
        }
        body,html{
            height:100%;
        }
        .left-box,.right-box{
            width:200px;
            height:80%;
            background:rosybrown;
        }
        .center-box{
            height:100%;
            background:pink;
            overflow:hidden
        }
        .left-box{
            float:left;
        }
        .right-box{
            float:right;
        }
    <div class="left-box"></div>
    <div class="right-box"></div>
    <div class="center-box"></div>

原理:左右浮动会脱离文本流,.center-box触发bfc后形成独立区域,overflow:hidden会剪切掉之外的内容

用 padding实现双翼布局
   ` *{
        margin:0;
        padding:0;
    }
    body,html{
        height:100%;
    }
    .left-box,.right-box{
        width:200px;
        height:80%;
        background:rosybrown;
    }
    .center-box{
        height:100%;
        background:pink;
        padding:0 200px;
    }

    .left-box{
        float:left;
    }
    .right-box{
        float:right;
    }


    .con{
        height:100%;
        background:#ccc;
    }
</style>`
    <div class="left-box"></div>
    <div class="right-box"></div>
    <div class="center-box">
        <div class="con">
            
        </div>
    </div>

原理:左右两个左右浮动中间部分用padding,控制左右=內边距左右的距离实现。

bfc解决margin:上下重叠问题
    div{
        width:200px;
        height:200px;
    }
    .box1{
        background:orange;
        margin-bottom:100px;
    }
    .box2{
        background:purple;
        margin-top:50px;
    }
    .box{
        overflow:hidden;
    }
    <div class="box1"></div>
    <div class="box">
        <div class="box2"></div>
    </div>

原理:运用了bfc独立渲染区域独立的特点,使得分为bfc区域

bfc实现两栏布局
   *{
            margin:0;
            padding:0;
        }
        body,html{
            height:100%;
        }
        .left_box{
            width:200px;
            height:100%;
            background:orange;
            float:left;
        }

        .right_box{
            height:100%;
            background:pink;
            overflow:hidden;
        }

    <div class="left_box"></div>
    <div class="right_box"></div>

原理;左边浮动,右边设置个overflow:hidden;,因为这个属性触发了bfc使得右边的元素内容成为以一个独立的区域

bug表单对不齐现象处理

		input{
			border: 0;
		}
		.tit{
			width: 200px;
			height: 40px;
			line-height: 40px;
			float: left;
			border: 1px solid saddlebrown;
			
		}
		.tj{
			width: 40px;
			height: 40px;
			line-height: 40px;
			float: left;
			border: 1px solid firebrick;
		}
		.tj1{
			
			width: 40px;
			height: 40px;
			line-height: 40px;
			float: left;
		}
		.box{
			width: 300px;
			height: 300px;
			background: sandybrown;
			opacity:.5;
		}
		.box1{
			width: 200px;
			height: 100px;
			background: seagreen;
			opacity:.5;
		}

<input type="text" id="" value=""  class="tit"/>
<span class="tj"><input type="submit" id="" class="tj1"/></span>


需要给每个元素添加一个浮动,2去掉原有的边框3在按钮的外面套个元素进行操作外边框,设置按钮高度,属性在span元素中设置,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值