热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

前端基础:BFC:前端零基础b站

本文主要介绍关于前端的知识点,对前端基础:BFC和前端零基础b站有兴趣的朋友可以看下由【GY_U_YG】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的2022面试,前端相关技术问题。前端零基础

本文主要介绍关于前端的知识点,对前端基础:BFC和前端零基础b站有兴趣的朋友可以看下由【GY_U_YG】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的2022面试,前端相关技术问题。

前端零基础b站

一、概念

BFC:Block formatting context 块级格式化上下文;

形成独立的渲染区域

内部元素的渲染不会影响外界

形成 BFC 的常见条件:

浮动元素:  float 不是 none;绝对定位元素   position 是 absolute 或者  fixed;块级元素 overflow 不是 visible;flex元素;inline-block元素

应用场景:

清除浮动  等。

二、例子

 

是因为图片img左浮动了,脱离了文档流。

所以,container的高度是由P标签的高度决定的,如果我们希望container高度由这个img标签来决定。 

我们可以这么做,我们在CSS文件中定义一个.bfc的类,找到一个行程BFC的条件,比如:overflow:hidden;

为啥这么做高度就正常了呢。因为container这个div加了一个overflow: hidden;

这就是说:

container这个div会 “形成独立的渲染区域,内部元素的渲染不会影响外界”,img就是内部元素啊,保证img渲染不会影响到外部。按照img高度渲染整个container的高度。不然img就超过container的高度了,不符合BFC的逻辑。

虽然img标签,float浮动了,但container依旧会把这个浮动的元素算进去,保证它不出格,得到最终的高度。

但是,也有问题,虽然看着没问题,实际上是有问题的,p占据了img的位置,这不是我们想要的结果,我们不想让P占据img的位置。

 怎么解决呢?我们再次使用BFC的功能,将P标签也加上.bfc的类。那么p也形成了BFC:p形成独立的渲染区域,p不能侵占了img,只能在自己的区域渲染。

复习知识

复习一下常见的定位方案

第一:普通流(默认)

 第二:浮动

第三、绝对定位

 

而BFC属于普通流。

BFC可以看做是元素的一种属性,当元素有了BFC属性,元素就可以看做是隔离了的独立容器。

容器里面的元素不会在布局上影响到外面的元素。

 如何触发BFC?

BFC的特性和应用 1、BFC可以避免外边距重叠

 

这是规范,不是bug:

块的上外边距margin-top和下外边距 margin-bottom会合并为单个边距,其大小为单个边距的最大值,这就是外边距重叠现象

如何解决呢 ?

只要将两个div放在不同的BFC中。那么两个BFC的内容不会互相干扰。

 2、BFC第二个作用,清除浮动。

两个div,父子关系,子元素设置float为left。

但是,事与愿违。

 

子div是浮动的,脱离了文档流。

我们可以通过overflow属性触发父容器的BFC,那么父容器会包裹这子元素,从而达到了清除浮动的目的。

 

 

三、阻挡元素被浮动元素覆盖 

阻止元素被浮动元素覆盖

 如果想要避免被覆盖,可以触发正常元素的BFC属性。

所以,在下面正常元素加了overflow属性,这样两个属性就不会互相干扰。

 

本文《前端基础:BFC》版权归GY_U_YG所有,引用前端基础:BFC需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • Docker 环境下 MySQL 双主同步配置指南
    本文介绍了如何在 Docker 环境中配置 MySQL 的双主同步,包括目录结构的创建、配置文件的编写、容器的创建与设置以及最终的验证步骤。 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • 本文详细介绍了如何在项目中引入和配置KindEditor网页编辑器,包括脚本引用、初始化编辑器以及文件上传功能的实现。 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 本文介绍了如何在 ASP.NET 中设置 Excel 单元格格式为文本,获取多个单元格区域并作为表头,以及进行单元格合并、赋值、格式设置等操作。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 使用jqTransform插件美化表单
    jqTransform 是由 DFC Engineering 开发的一款 jQuery 插件,专用于美化表单元素,操作简便,能够美化包括输入框、单选按钮、多行文本域、下拉选择框和复选框在内的所有表单元素。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 在使用Eclipse进行调试时,如果遇到未解析的断点(unresolved breakpoint)并显示“未加载符号表,请使用‘file’命令加载目标文件以进行调试”的错误提示,这通常是因为调试器未能正确加载符号表。解决此问题的方法是通过GDB的`file`命令手动加载目标文件,以便调试器能够识别和解析断点。具体操作为在GDB命令行中输入 `(gdb) file `。这一步骤确保了调试环境能够正确访问和解析程序中的符号信息,从而实现有效的调试。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
author-avatar
直由飞翔_447
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有