当前位置: 首页 > news >正文

【css面试题】BFC

参考文章1
参考文章2

什么是BFC

BFC全称是Block Formatting Context,意思就是块级格式化上下文。你可以把BFC看做一个容器,容器里边的元素不会影响到容器外部的元素。

BFC的特性

  1. BFC是一个块级元素,块级元素在垂直方向上依次排列。

  2. BFC是一个独立的容器,内部元素不会影响容器外部的元素

  3. 属于同一个BFC的两个盒子,外边距margin会发生重叠,并且取最大外边距。

如何创建BFC?

给元素添加以下任意样式

  1. 具有overflow 且值不是 visible 的块元素,例如 overflow: hidden;
  2. display: flow-root;
  3. 内联块 (元素具有 display: inline-block)
  4. 绝对定位元素 (元素具有 position:absolute;position:fixed;)
  5. 浮动元素float不是none,例如float:left;
  6. display: flex;
  7. display: inline-flex;

BFC有什么作用?

  1. 解决当父级元素没有高度时子级元素浮动会使父级元素高度塌陷的问题
  • 解决前代码:
<!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>body {margin: 0;padding: 0;}.continer{width: 900px;background: black;}.box1{height: 300px;width: 300px;background: red;float: left;}.box2{height: 300px;width: 300px;background: blue;float: left;}</style>
</head>
<body><div class="continer"><div class="box1"></div><div class="box2"></div></div>
</body>
</html>

在这里插入图片描述

  • 解决后代码
.continer{width: 900px;background: black;overflow: hidden;}

在这里插入图片描述

  1. 解决子级元素设置外边距,但父级外边距塌陷的问题
  • 解决前源码
<!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>body {margin: 0;padding: 0;}.continer{width: 100px;height: 200px;background: green;}.box{margin-top: 20px;height: 50px;width: 50px;background: red;}</style>
</head>
<body><div class="continer"><div class="box"></div></div>
</body>
</html>

在这里插入图片描述

  • 解决后
 .continer{width: 100px;height: 200px;background: green;overflow: hidden; //!!!!!}

在这里插入图片描述

相关文章:

  • 通过QScrollArea寻找最后一个弹簧并且设置弹簧大小
  • OpenCV 4基础篇| OpenCV图像的裁切
  • leetcode移除元素
  • AzerothCore安装记录
  • UniApp项目处理小程序分包
  • HarmonyOS 开发之———应用程序入口—UIAbility的使用
  • Java学习--学生管理系统(残破版)
  • 微信小程序云开发教程——墨刀原型工具入门(Axure导入)
  • 【python】遵守 robots.txt 规则的数据爬虫程序
  • 汽车虚拟仿真技术的实现、应用和未来
  • PDF标准详解(二)——PDF 对象
  • 2024.3.2 训练记录(6)
  • 排序刷题12 -双向排序
  • Redis之一: 简介及环境安装搭建
  • CNN-LSTM-Attention混合神经网络归时序预测的MATLAB实现(源代码)
  • [ JavaScript ] 数据结构与算法 —— 链表
  • gf框架之分页模块(五) - 自定义分页
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • leetcode讲解--894. All Possible Full Binary Trees
  • Linux中的硬链接与软链接
  • 前嗅ForeSpider教程:创建模板
  • 区块链共识机制优缺点对比都是什么
  • 我感觉这是史上最牛的防sql注入方法类
  • 正则表达式
  • PostgreSQL之连接数修改
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​如何在iOS手机上查看应用日志
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #ifdef 的技巧用法
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • ( 10 )MySQL中的外键
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)项目管理杂谈-我所期望的新人
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .mysql secret在哪_MySQL如何使用索引
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET4.0并行计算技术基础(1)
  • .NET的数据绑定
  • .net反混淆脱壳工具de4dot的使用
  • .NET建议使用的大小写命名原则
  • .net连接oracle数据库
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • @Autowired和@Resource装配
  • @Import注解详解
  • @RequestParam,@RequestBody和@PathVariable 区别
  • @SentinelResource详解
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured