首页 > 其他分享 >CSS BFC 介绍及应用

CSS BFC 介绍及应用

时间:2023-08-31 15:00:30浏览次数:34  
标签:BFC 浮动 img 元素 content 应用 div CSS

概念

BFC(Block Formatting Contexts 块级格式化上下文)是 CSS 中的一个重要概念。

它是页面上一个独立的渲染区域,如果一个元素具有 BFC 特性,则内部子元素在任何情况下都不会影响到外部元素,也不会被外部元素影响。

例如:

  1. 处理浮动问题:当父元素包含浮动元素时,父元素的高度坍塌,这导致父元素无法包裹子元素。但是,当父元素具有 BFC 特性时,它会包含浮动元素并计算其高度,解决了这个问题。

  2. 防止边距重叠:在普通流中,相邻两个元素的 margin 可能会重叠。但是,当两个元素属于不同的 BFC 时,它们的边距不会重叠。

元素在什么时候具有 BFC 特性?

  • html 根元素。天生具有。
  • float 的值不为 none。
  • position 的值不为 relative、static。
  • overflow 的值为 auto、scroll、hidden。
  • display 的值为 inline-block、table-cell、table-caption、flex、grid。

BFC 与布局

<div class="demo">
  <img src="./example.jpg" />
  <div class="content">
    BFC(Block Formatting Contexts 块级格式化上下文)是 CSS
    中的一个重要概念。它是页面上一个独立的渲染区域,如果一个元素具有 BFC
    特性的话,内部子元素在任何情况下都不会影响到外部的元素。
  </div>
</div>

<style>
  img {
    float: left;

    width: 100px;
    margin-right: 12px;
  }

  .content {
    overflow: hidden;
  }
</style>

上面代码,img 设置了 float 属性具有了 BFC 和原有的浮动特性,所以 img 会尽可能地靠左浮动。

此时 div.content 的文字会受到 img 的 float 属性环绕 img。但是 div.content 设置了 overflow 属性也具有 BFC 特性:BFC 元素的子元素不会受到外部元素的影响。所以 div.content 就不会环绕 img。

可以通过改变 img 宽度大小会发现 div.content 内容是自适应的。如果元素之间需要间隔,这里推荐在 img 中设置 margin 属性或其他,但是不推荐在 div.content 上设置 margin-left,因为该值必须是浮动元素的宽度加上间隙的大小,可复用性差。

标签:BFC,浮动,img,元素,content,应用,div,CSS
From: https://www.cnblogs.com/2113ic/p/17669563.html

相关文章

  • 动态数组指针应用
    TypeTMyArr=arrayofarrayofarrayofInteger;Pint=^TMyArr;varPArr:Pint;i,j,k,ic,jc,kc:Integer;beginic:=2;jc:=3;kc:=4;New(PArr);SetLength(PArr^,ic,jc,kc);fori:=0toic-1doforj:=0tojc-1......
  • css或js实现隔行换色
    /*用CSS实现隔行换色*//*tabletbodytr:nth-child(odd){background-color:#c7cac9;}tabletbodytr:nth-child(even){background-color:#ccc;}*///用JS实现隔行换色functionfn(){......
  • PhysX 和 NavMesh 在服务器的应用
    https://cloud.tencent.com/developer/article/1006053一、引言本文源于一个简单的想法“在LINUX服务器进程中,加载Unity搭建的场景,并驱动AI在客户端的行为”,这个想法引发了一系列的思考:物理引擎的选择如何从Unity导出场景如何用PhysX加载场景,并验证其正确性如何驱动AI......
  • CSS基础-3D变形
    今天介绍两种3D变形的形式:3D旋转、空间位移。3D旋转在上一节2D变形中,我们用到了transform 属性。那么在3D旋转中同样还是这个属性(怎么老是它,手动狗头)。用rotateX()函数来给 transform 属性赋值,即可实现元素标签绕X(横)轴3D旋转。语法//绕横轴(盒子X轴中心线旋转3......
  • 应用交付交付管理(报表)系统LOGIN 远程命令执⾏漏洞
    漏洞描述深信服应⽤交付管理系统login存在远程命令执⾏漏洞,攻击者通过漏洞可以获取服务器权限,执⾏任意命令漏洞影响深信服应⽤交付管理系统7.0.8-7.0.8R5⽹络测绘fid="iaytNA57019/kADk8Nev7g=="登录页面如下:第一个POC输入账号密码拦截登录请求包,然后更改数据包。......
  • 深信服应用交付报表系统download.php任意文件读取漏洞
    漏洞描述深信服应用交付报表系统download.php文件存在任意文件读取漏洞,攻击者通过漏洞可以下载服务器任意文件。漏洞影响深信服应用交付报表系统漏洞复现fofa搜索环境复现:app="SANGFOR-应用交付报表系统"登录页面:payload:/report/download.php?pdf=../../../../../etc/pa......
  • tailwindcss -原子化 CSS 框架
    原子化CSS框架我记得很久之前有时候为了少写些css,我们通常会有如下的样板代码.block{display:block;}.flex{display:flex}.flex-center{align-items:center;justify-content:center;}.w1{width:1%;}/*1...100*/.w100{width:100%;}......
  • 生成式 AI 在泛娱乐行业的应用场景实践 – 助力风格化视频内容创作
    感谢大家阅读《生成式AI行业解决方案指南》系列博客,全系列分为4篇,将为大家系统地介绍生成式AI解决方案指南及其在电商、游戏、泛娱乐行业中的典型场景及应用实践。目录如下:《生成式AI行业解决方案指南与部署指南》《生成式AI在电商行业的应用场景实践–赋能营销物......
  • python列表的应用(二)
    #2.注册账户,保存到列表中#2.1.注册的数据不大于5个#2.2.如果输入已经存在的用户,提示"用户名太受欢迎"#2.3.如果输入非法信息,提示"根据相关法律法规,不能使用此类字符",非法信息为['蜜蜂','高圆圆']list1=[]list2=['蜜蜂','高圆圆']whileTrue:user=input("请输......
  • 【Azure App Service for Linux】NodeJS镜像应用启动失败,遇见 RangeError: Incorrect
    问题描述在AppServiceForLinux中,部署NodeJS应用,应用启动失败。报错信息为:2023-08-29T11:21:36.329731566ZRangeError:Incorrectlocaleinformationprovided2023-08-29T11:21:36.329776866ZatIntl.getCanonicalLocales(<anonymous>)2023-08-29T11:21:36.329783066ZatC......