首页 > 其他分享 >BFC

BFC

时间:2024-12-22 22:31:34浏览次数:3  
标签:BFC 浮动 盒子 元素 浏览器 margin

--- 学习目标:   - 理解BFC   - 了解渐进增强和优雅降级   typora-copy-images-to: media --- ## BFC(块级格式化上下文)
BFC(Block formatting context)
直译为"块级格式化上下文"。
### 元素的显示模式
我们前面讲过 元素的显示模式 display。
分为 块级元素   行内元素  行内块元素 ,其实,它还有很多其他显示模式。
<img src="media/dis.png"  style="border: 1px dashed #ccc; padding: 5px;" />
### 那些元素会具有BFC的条件
不是所有的元素模式都能产生BFC,w3c 规范:
display 属性为 block, list-item, table 的元素,会产生BFC.
大家有么有发现这个三个都是用来布局最为合理的元素,因为他们就是用来可视化布局。
注意其他的,display属性,比如 line 等等,他们创建的是 IFC ,我们暂且不研究。
这个BFC 有着具体的布局特性:
<img src="media/box.gif" />
有宽度和高度 , 有 外边距margin  有内边距padding 有边框 border。
就好比,你有了练习武术的体格了。 有潜力,有资质。
<img src="media/gu.jpeg" width="400" />
### 什么情况下可以让元素产生BFC
以上盒子具有BFC条件了,就是说有资质了,但是怎样触发才会产生BFC,从而创造这个封闭的环境呢?
在好比,你光有资质还不行,你需要一定额外效果才能出发的武学潜力,要么你掉到悬崖下面,捡到了一本九阴真经,要么你学习葵花宝典,欲练此功必先....
<img src="media/kuihua.png" /> 同样,要给这些元素添加如下属性就可以触发BFC。
-float属性不为none
-position为absolute或fixed
-display为inline-block, table-cell, table-caption, flex, inline-flex
-overflow不为visible。
### BFC元素所具有的特性
BFC布局规则特性:
1.在BFC中,盒子从顶端开始垂直地一个接一个地排列.
2.盒子垂直方向的距离由margin决定。属于同一个BFC的两个相邻盒子的margin会发生重叠
3.在BFC中,每一个盒子的左外边缘(margin-left)会触碰到容器的左边缘(border-left)(对于从右到左的格式来说,则触碰到右边缘)。
1. BFC的区域不会与浮动盒子产生交集,而是紧贴浮动边缘。 2. 计算BFC的高度时,自然也会检测浮动或者定位的盒子高度。
它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。
白话文: 孩子在家里愿意怎么折腾都行,但是出了家门口,你就的乖乖的,不能影响外面的任何人。
<img src="media/xiong.jpeg" width="400" />
### BFC的主要用途
BFC能用来做什么?
(1) 清除元素内部浮动
只要把父元素设为BFC就可以清理子元素的浮动了,最常见的用法就是在父元素上设置overflow: hidden样式,对于IE6加上zoom:1就可以了。
主要用到
``` 计算BFC的高度时,自然也会检测浮动或者定位的盒子高度。 ```
<img src="media/fu.jpg" /> (2) 解决外边距合并问题
外边距合并的问题。
主要用到
``` 盒子垂直方向的距离由margin决定。属于同一个BFC的两个相邻盒子的margin会发生重叠 ```
属于同一个BFC的两个相邻盒子的margin会发生重叠,那么我们创建不属于同一个BFC,就不会发生margin重叠了。
<img src="media/ma.png" />
(3) 制作右侧自适应的盒子问题
主要用到
``` 普通流体元素BFC后,为了和浮动元素不产生任何交集,顺着浮动边缘形成自己的封闭上下文 ```
<img src="media/you.png" />
### BFC 总结
BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。包括浮动,和外边距合并等等,因此,有了这个特性,我们布局的时候就不会出现意外情况了。
## 优雅降级和渐进增强
什么是渐进增强(progressive enhancement)、优雅降级(graceful degradation)呢?
渐进增强 progressive enhancement:
针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。
 类似 爬山,由低出往高处爬
  <img src="media/pa.png" width="400" />
  <b>优雅降级 graceful degradation:</b>
一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。
类似蹦极,由高处往低处下落
<img src="media/xia.jpg" />
  区别:渐进增强是向上兼容,优雅降级是向下兼容。
个人建议: 现在互联网发展很快, 连微软公司都抛弃了ie浏览器,转而支持 edge这样的高版本浏览器,我们很多情况下没有必要再时刻想着低版本浏览器了,而是一开始就构建完整的效果,根据实际情况,修补低版本浏览器问题。
## 浏览器前缀
| 浏览器前缀    | 浏览器                                    | | -------- | -------------------------------------- | | -webkit- | Google Chrome, Safari, Android Browser | | -moz-    | Firefox                                | | -o-      | Opera                                  | | -ms-     | Internet Explorer, Edge                | | -khtml-  | Konqueror                              |


后面我们会有 常用的解决H5和C3 的兼容解决文件, 我们这里暂且不涉及。
## 背景渐变
在线性渐变过程中,颜色沿着一条直线过渡:从左侧到右侧、从右侧到左侧、从顶部到底部、从底部到顶部或着沿任何任意轴。如果你曾使用过制作图件,比如说Photoshop,你对线性渐变并不会陌生。
兼容性问题很严重,我们这里之讲解线性渐变
语法格式:
~~~css background:-webkit-linear-gradient(渐变的起始位置, 起始颜色, 结束颜色); ~~~
~~~css background:-webkit-linear-gradient(渐变的起始位置, 颜色 位置, 颜色位置....); ~~~


## CSS W3C 统一验证工具
CssStats 是一个在线的 CSS 代码分析工具
``` 网址是:  http://www.cssstats.com/ ```


如果你想要更全面的,这个神奇,你值得拥有:
W3C 统一验证工具:    http://validator.w3.org/unicorn/  ☆☆☆☆☆
因为它可以检测本地文件哦!!
## CSS 压缩
通过上面的检测没有错误,为了提高加载速度和节约空间(相对来说,css量很少的情况下,几乎没啥区别),可以通过css压缩工具把css进行压缩。
 w3c css压缩   http://tool.chinaz.com/Tools/CssFormat.aspx   网速比较慢
 还可以去站长之家进行快速压缩。
 http://tool.chinaz.com/Tools/CssFormat.aspx      

标签:BFC,浮动,盒子,元素,浏览器,margin
From: https://www.cnblogs.com/hexiaofei/p/18622696

相关文章

  • css布局中BFC的事情
    在页面布局中,其实很多地方都用到了BFC只不过,不知道它叫这个名字。BFC,说是块盒作用域上下文,包括从开始写页面,html,也是一个bfc形成这个的因素很多。最开始布局使用的浮动,清除浮动,就是给2个相邻的元素创建各自的BFC,这样就不会收到浮动的影响,比如:父元素下面2个div都浮动了,导致它两......
  • iframe、BFC
    iframeiframe标签用来制作后台管理系统,不需要新开浏览器窗口就可以在本页面规定区域切换页面。iframe标签src属性是首次展示的页面添加name属性用来绑定跳转连接a连接负责跳转页面,属性targate就是iframe的name属性浏览器回默认给iframe一点多余的尺寸需要自己调BFC什......
  • 前端——BFC
    一、什么是BFC?1.BFC是BlockFormattingContext(块级格式上下文),可以理解成元素的一个“特异功能”。2.该"特异功能",在默认的情况下处于关闭状态;当元素满足了某些条件后,该“特异功能”被激活。3.所谓激活“特异功能”,专业点说就是:该元素创建了BFC(又称:开启了BFC)。......
  • 【软件工程造价师必修课:概念篇】4.ILF/EIF/EI/EO/EQ/BFC五大功能点说的明明白白!附案例
       软件成本评估工作,本身有一定的专业性,也是有一定的门槛,最主要的难点在功能点识别方面。  下面我们就针对评估过程中需要掌握的功能点知识,分享给大家,大家先了解概念,继而通过我们的案例来让概念更具体化,从而达到初步了解并掌握。BFC 基本功能组件BasicFunction......
  • GLM-4-9B领先!伯克利函数调用榜单BFCL的Function Calling评测方法解析与梳理
    智谱公布的GLM-4-9B基于BFCL榜单的工具调用能力测试结果©作者|格林来源|神州问学在智谱最新开源的GLM-4-9B-Chat中,其工具调用能力在BFCL(伯克利函数调用排行榜)榜上获得了超高的总BFCL分,和gpt-4-turbo-2024-04-09几乎不相上下。在榜单中,还提到了AST总分以及Exec总分两个......
  • 2024-05-10 BFC是什么
    BFC(BlockFormattingContext)即块级格式化上下文,是W3CCSS2.1规范中的一个概念。它指的是浏览器中创建的一个独立的渲染区域,并且拥有一套渲染规则,决定了其子元素如何定位,以及与其他元素的相互关系和作用。BFC是一个完全独立的空间(布局环境),让空间里的子元素不会影响到外面的布局,反......
  • 聊聊css中的BFC
    BFC,即BlockFormattingContext(块级格式化上下文),是CSS布局的一部分,用于确定块级盒子的布局及其在页面上的排列方式。BFC是一个独立的布局环境,其中的元素布局不受外部元素的影响,并且它们之间的布局不会互相影响。在一个BFC中,每个盒子按照垂直方向一个接一个地放置。具体来说......
  • 浮动、bfc-规范、清除浮动总结
    介绍参考:浮动、bfc-规范、清除浮动的最佳实践#浮动、BFC规范、清除浮动的最佳实践TIP在讲CSS浮动之前,我们要现在了解下CSS布局有哪些实现机制#一、实现CSS布局的几种策略网页布局的本质是:用CSS来摆放盒子,把盒子摆放到页面对应的位置。在之前的章节我们已经详细......
  • BFC详解
    1.问题1.1BFC作用一:可以取消盒子margin塌陷计算BFC的高度时,考虑BFC所包含的所有元素,连浮动元素也参与计算1.2BFC作用二:可以阻止该元素被浮动元素覆盖浮动盒区域不叠加到BFC上!!!这是BFC的独立性主要应用于一行中同时存在浮动元素和行内元素,防止行内元素被覆盖(不常用,一般一行均......
  • CSS 的BFC
    BFC是什么含义是:blockformattingcontext上下文可以理解为(区域)blockformattingcontext表示被隔离的区间:(BFC的子元素不会对外面的元素产生影响)1.普通流2.定位流3.浮动流0.BFC的规则1.BFC就是一个块级元素,块级元素会在垂直方向一个接一个的排列。2.BFC就是页面中一个隔......