css里的BFC用法

css里的BFC用法

BFC(Block Formatting Contexts),可以把BFC理解为一个封闭的大箱子,容器里面的子元素不会影响到外面的元素。

规则

1.内部的盒子会在垂直方向,一个个地放置。

2.BFC是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素

3.属于同一个BFC的两个相邻BOx的上下margin会发生重叠

4.计算BFC的高度时,浮动元素也参与计算

5.每个元素的左边,与包含的盒子的左边相接触,即使存在浮动也是如此;

6.BFC的区域不会与float重叠;

哪些元素会触发BFC

1.body根元素

2.浮动元素:float不为none的属性值;

3.绝对定位元素:position(absolute、fixed)

4.display为:inline-block、table-cell、flex

5.overflow除了visible以外的值(hidden、auto、scroll)

BFC的应用

1.解决margin重叠问题

2.解决浮动高度塌陷问题

3.解决侵占浮动元素的问题

例:

1.margin重叠问题

我们先定义两个垂直的div

    <div class="box"></div>
    <div class="box"></div>

css

    .box{
            width: 200px;
            height: 50px;
            margin: 30px 0;
            background: black;
        }

margin重叠后的效果

这满足规则第三条:
属于同一个BFC的两个相邻BOx的上下margin会发生重叠
说明两者属于同一个BFC,所以我们将两个div放到不同的BFC中,为第二个div套上一个父元素,然后通过设置overflow hidden来激活BFC

    <div class="box"></div>

    <div class="content">
        <div class="box"></div>
    </div>

css

    .content{
            overflow: hidden;
        }
    

效果图为:

再来看看浮动高度塌陷问题

    <div class="content">
        <div class="box"></div>
    </div>
    

css


    .content{
            width:300px;
            border:1px solid black;
        }

        .content .box{
            width:100px;
            height:100px;
            border:1px solid red;
            float:left;
        }
    

效果图为:

能够看到父元素没有被撑开,BFC规则第四条:
计算BFC的高度时,浮动元素也参与计算
所以我们要将父元素触发BFC

    .content{
            width:300px;
            border:1px solid black; 

            overflow: hidden;
        }

效果图为:

能都看到父元素已经撑开了。

再来看看侵占浮动元素的问题

先定义两个div:

    <div class="left"></div>
    <div class="right"></div>

css

    .left{
            width: 100px;
            height: 100px;
            background: salmon;

            float: left;
        }

        .right{
            width: 300px;
            height: 200px;
            background: black;
        }
    

效果图为:

满足了规则第五点:
每个元素的左边,与包含的盒子的左边相接触,即使存在浮动也是如此

所以我们要将红色区域撑到黑色区域的左边,就需利用规则第六条
BFC的区域不会与float重叠
我们给黑色区域right设置一个 overflow: hidden; 属性来触发BFC;

.right{
            width: 300px;
            height: 200px;
            background: black;

            overflow: hidden;
        }
    

效果图为:

能够看到红色区域已经撑到黑色区域的左边

如果,您认为阅读这篇博客让你有些收获,请您关注一下。感谢您的支持,如有不足,请多指教。

联系方式:

wx:bsl521921

原文地址:https://www.cnblogs.com/Absl/p/10847560.html

时间: 2024-10-10 00:01:28

css里的BFC用法的相关文章

【转】css学习专题-BFC

css学习专题-BFC 转自:原文链接:css学习专题-BFC文章目录 BFC:Block Formatting Context. BFC就是一种布局方式,在这种布局方式下,盒子们自所在的 containing block 顶部起一个接一个垂直排列,水平方向上撑满整个宽度 (除非内部的盒子自己内部建立了新的 BFC). developer center上面有对BFC的一段描述: 一个 block formatting context 是web页面可视化CSS渲染的一个部分,是一块 block b

一个CSS中Z-index的用法

一个CSS中Z-index的用法 CSS教程:彻底掌握Z-index属性 大多数的CSS属性都很容易使用.常常,当您对标记语言的元素使用CSS属性时,产生的结果会随着您刷新页面而立即呈现.而另一些CSS属性,却会有一些复杂,且只能在给定的环境下才会工作. Z-index属性便属于上面所说的后面的那一组.Z-index无疑的比其他任何属性都会频繁的导致(兼容性)上 的混乱和(开发者心理上)的挫败感.但滑稽的是,一旦你真正理解了Z-index,你会发现它却是一个非常容易使用的属性,并且会为解决很多l

CSS学习笔记(9)--详解CSS中:nth-child的用法

详解CSS中:nth-child的用法 前端的哥们想必都接触过css中一个神奇的玩意,可以轻松选取你想要的标签并给与修改添加样式,是不是很给力,它就是":nth-child". 下面我将用几个典型的实例来给大家讲解:nth-child的实际用途: Tips:还用低版本的IE浏览器的哥们请绕过! :nth-child(2)选取第几个标签,"2可以是你想要的数字" .demo01 li:nth-child(2){background:#090} :nth-child(n

css before after基本用法【转】

<HTML><HEAD> <meta http-equiv="content-Type"content="text/html;charset=utf-8"> <TITLE>css before after基本用法</TITLE> <style> p::before{ content: "H" } p::after{ content: "d" } a { p

css中!important的用法总结

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

关于解决网站页面Banner图片即时更换css里背景图片url相对路径问题的新方案

最近在网站首页上想将Banner壁纸给做到后台上传随时更改的效果.遇到问题便是:将上传的图片路径动态添加到首页css代码中,结果尝试了网上提供的思路,更改相对路径,换为url中“../../Content/”以及“./Content/”之类的,但实际操作并没能实现新上传的图片路径加载到css代码中.首页部分css代码贴出: 1 /*--banner--*/ 2 .banner { 3 background:url(../images/banner-1.jpg) no-repeat 0px 0px

详解CSS中:nth-child的用法_大前端

http://www.daqianduan.com/3737.html 前端的哥们想必都接触过css中一个神奇的玩意,可以轻松选取你想要的标签并给与修改添加样式,是不是很给力,它就是":nth-child". 下面我将用几个典型的实例来给大家讲解:nth-child的实际用途: Tips:还用低版本的IE浏览器的哥们请绕过! :nth-child(2)选取第几个标签,"2可以是你想要的数字" .demo01 li:nth-child(2){background:#0

php里的declare用法

function tick_handler () { echo "tick_handler() called<br>" ; } function tick_handler1 () { echo "tick_handler1() called<br>" ; } register_tick_function ( 'tick_handler' ); register_tick_function ( 'tick_handler1' ); declar

理解CSS Clip属性及用法

应用Clip属性实现的一个简单效果图: 样式写法: .my-element { position: absolute; clip: rect(10px  350px  170px  0); /* IE4 to IE7 */ clip: rect(10px, 350px, 170px, 0); /* IE8+ & other browsers */ } 属性解析: clip: { shape | auto | inherit } ; auto 即浏览器默认解析,无clip效果,inderit 继承