css拾遗(12)-BFC

作者: 姜治宇 | 来源:发表于2022-04-20 13:01 被阅读0次

BFC是块级格式化上下文的意思,全称block formatting context,这是元素自带的属性,可通过overflow来触发它。
BFC里的内容,不会跟外部的元素重叠或者互相影响。如果给元素增加clear属性,它只会清除自身所在BFC内的浮动。
给元素添加以下的任意属性值都会创建BFC。

1、 float: left或right,不为none即可。
2、 overflow:hidden、auto或scroll,不为visible即可。
3、display:flex
4、 position:absolute或position: fixed
看个例子: 1.png
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .content{
            max-width:1080px;
            margin: 0 auto;
        }
        .media{
            float:left;
            width:50%;
            padding:10px;
            background-color: lightblue;
            border-radius: 6px;
        }
        .media-image {
            width:200px;
            height:100px;
            float:left;
            margin-right:20px;
        }

    </style>
</head>
<body>
    <div class="content">
        <div class="media">
            <img class="media-image" src="https://img2.doubanio.com/view/note/l/public/p82460871.webp" alt="" />
            <div class="media-body">
                <h4>宫崎骏电影</h4>
                <p>精选宫崎骏经典语录大全 宫崎骏经典语录大全 1、爱,不是寻找一个完美的人,而是学会用完美的眼光欣赏那个不完美的人。 2、不管前方的路有多苦,只要走的方向正确,不管多么崎岖...</p>
            </div>
        </div>
    </div>

</body>
</html>
media容器和里面的图片都设置了浮动,此时文字是环绕在图片周围的,我们希望的是让文字靠右边显示: 2.png

怎么实现呢?
直观上的理解,我们可以清除一下图片底部的浮动,然后让文字右浮动即可。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /*如果用float布局,清除浮动*/
        .clearfix::before,
        .clearfix::after {
            display: table;
            content: " ";
        }

        .clearfix::after {
            clear: both;
        }

        .content {
            max-width: 1080px;
            margin: 0 auto;
        }

        .media {
            float: left;
            width: 50%;
            padding: 10px;
            background-color: lightblue;
            border-radius: 6px;
        }

        .media-image {
            width: 200px;
            height: 100px;
            float: left;
            margin-right: 20px;
        }

        .media-body {

            float: right;

        }
    </style>
</head>

<body>
    <div class="content">
        <div class="media">
            <img class="media-image clearfix" src="https://img2.doubanio.com/view/note/l/public/p82460871.webp" alt="" />
            <div class="media-body">
                <h4>宫崎骏电影</h4>
                <p>精选宫崎骏经典语录大全 宫崎骏经典语录大全 1、爱,不是寻找一个完美的人,而是学会用完美的眼光欣赏那个不完美的人。 2、不管前方的路有多苦,只要走的方向正确,不管多么崎岖...</p>
            </div>
        </div>
    </div>

</body>

</html>
但这样做无法达到目的,发现文字都跑到下面去了: 3.png

我们希望左侧图片和右侧文字之间互不干扰,所以就要用到BFC,将文字区域增加overflow属性,即可达到目的。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .content{
            max-width:1080px;
            margin: 0 auto;
        }
        .media{
            float:left;
            width:50%;
            padding:10px;
            background-color: lightblue;
            border-radius: 6px;
        }
        .media-image {
            width:200px;
            height:100px;
            float:left;
            margin-right:20px;
        }
        .media-body {
            overflow: auto;/*创建BFC*/
        }
    </style>
</head>
<body>
    <div class="content">
        <div class="media">
            <img class="media-image" src="https://img2.doubanio.com/view/note/l/public/p82460871.webp" alt="" />
            <div class="media-body">
                <h4>宫崎骏电影</h4>
                <p>精选宫崎骏经典语录大全 宫崎骏经典语录大全 1、爱,不是寻找一个完美的人,而是学会用完美的眼光欣赏那个不完美的人。 2、不管前方的路有多苦,只要走的方向正确,不管多么崎岖...</p>
            </div>
        </div>
    </div>

</body>
</html>

相关文章

  • css拾遗(12)-BFC

    BFC是块级格式化上下文的意思,全称block formatting context,这是元素自带的属性,可通过o...

  • CSS清除浮动的方法

    BFC CSS中的BFC BFC:block formatting context块级格式化上下文; BFC 与清...

  • CSS BFC和CSS hack

    简述CSS BFC和CSS hack BFC BFC定义:浮动元素和绝对定位元素,非块级盒子的块级容器(例如inl...

  • 关于 BFC 的布局应用:清除浮动、文字环绕

    关于 BFC 的布局应用:清除浮动、文字环绕 参考文档:理解CSS中BFC BFC(Block Formattin...

  • 快速弄懂 BFC

    参考 BFC 是什么 css 2.1 规范。BFC(Block formatting context)直译为"块级...

  • CSS-BFC的理解

    简介在使用CSS的过程中,经常会听到触发BFC,但是何为BFC。BFC(Block formatting cont...

  • 前端面试基础题

    BFC、IFC、GFC、FFC CSS2.1中只有BFC和IFC, CSS3中才有GFC和FFC。 到底什么是BF...

  • 前端知识点之谈一谈css盒模型、BFC

    知识点:--css 盒模型--标准模型和 IE 模型--BFC 谈一谈 css 盒模型、BFC 是面试中常见的问题...

  • CSS中重要的BFC

    CSS中有个重要的概念BFC,搞懂BFC可以让我们理解CSS中某些原本诡异(??)的地方。 1. 简介 在解释BF...

  • BFC原理

    BFC是什么? 了解BFC之前,先了解Box,Formatting Content的概念 Box:CSS布局的基本...

网友评论

    本文标题:css拾遗(12)-BFC

    本文链接:https://www.haomeiwen.com/subject/uwrsertx.html