三品合一网站建设案例,一起做网店官网,网站建设技术架构和语言,做网站环境配置遇到的问题1、BFC是什么#xff1f; 在页面布局时#xff0c;经常会出现以下几种情况#xff1a; 这个元素高度怎末没了#xff1f; 这两栏布局怎末没法自适应#xff1f; 这两个元素的间距怎末有点奇怪的样子#xff1f; … 原因就是元素之间互相影响#xff0c;导致了意料之外的…1、BFC是什么 在页面布局时经常会出现以下几种情况 这个元素高度怎末没了 这两栏布局怎末没法自适应 这两个元素的间距怎末有点奇怪的样子 … 原因就是元素之间互相影响导致了意料之外的情况这里就涉及到了BFC的概念。 BFCBlock Formatting Context即块级格式化上下文它是页面的一块渲染区域并且有自己的一套属于自己的渲染规则 内部的盒子会在垂直方向上一个接一个的放置。 对于同一个BFC的两个相邻的盒子的margin会发成重叠与方向无关。 每个元素的左外边距与包含块的左边界相接触从左到右即使浮动元素也是如此。 BFC的区域不会与float的元素区域重叠 计算BFC的高度时浮动子元素也参与计算。 BFC就是页面的一个隔离的独立容器容器里面的子元素不会影响到外面的元素反之亦然。 BFC目的是形成一个相对于外界完全独立的空间让内部的子元素不会影响到外部的元素。
2、触发元素 触发BFC的条件包含但不限于 根元素即HTML元素 浮动元素float值为left、right overflow值不为visible为autoscrollhidden display的值为inline-blockinltable-celltable-captiontableinline-tableflexinline-flexgrid、inline-grid position的值为absolute或fixed
3、应用场景 利用BFC的特性我们将BFC应用在以下场景 3.1、防止margin重叠塌陷 两个p元素之间的距离为100px发生了margin重叠塌陷以最大的为准如果第一个p的margin为80的话两个p之间的距离是100以最大的为准。 前面讲到同一个BFC的两个相邻的盒子的margin会发生重叠。 可以在p外面包裹一层容器并触发这个容器生成一个BFC那么两个p就不属于同一个BFC则不会出现margin重叠 这个时候边距则不会重叠 清楚内部浮动 而BFC在计算高度时浮动元素也会参与所以可以触发.par元素生成BFC则内部浮动元素计算高度时候也会计算。 实现效果如下 自适应多栏布局 效果如下 前面讲到每个元素的左外边距与包含块的左边界相接触。 因为虽然.aslide为浮动元素但是main的左边依然会与包含块的左边相接触。 而BFC的区域不会与浮动盒子重叠。 所以可以通过触发main生成BFC以此适应两栏布局。 这时候新的BFC不会与浮动的.aside元素重叠因此会根据包含块的宽度和.aside的宽度自动变窄。效果如下