盒模型与BFC的深入讲解

本篇文章给大家分享的内容是关于盒模型以及BFC,有需要的朋友可以参考一下,希望可以帮助到有需要的朋友

标准盒模型与IE盒模型

开发者们都知道,由于历史遗留问题与既定标准的发展,存在着两个css盒模型。即W3C的标准盒模型以及IE的怪异盒模型。在css中,可以用box-sizing去定义元素的盒模型。

比较这两个盒模型的差异之前,我们先来看一张图:

1367336290-55cf27554e5e4_articlex.png

先不讨论宽高,我们把一个元素的组成分为:content、padding、border、margin。

标准盒模型(box-sizing: content-box),即W3C标准中默认的盒模型。它规定,一个元素的宽高并不包含padding和border,那么它在渲染时的宽高计算公式如下:

width = content width;height = content height;

IE盒模型(box-sizing: border-box),则恰恰相反,它的宽高实际上是包含padding和border的,所以

width = content width + padding + border;height = content height + padding + border;

24990183-5beb00a42c895_articlex.jpg

至此,两种盒模型的区别应该挺明白的了吧。接下来我们讲讲有关BFC的东西。

什么是BFC

BFC,即 Block Formatting Context 直译为 “块级格式化上下文”。MDN上的定义为:

A block formatting context is a part of a visual CSS rendering of a Web page. It is the region in which the layout of block boxes occurs and in which floats interact with other elements.

其是Web页面的可视化CSS渲染的一部分,是布局过程中生成块级盒子的区域,也是浮动元素与其他元素的交互限定区域

深入了解 BFC 之前,我们看看,什么是 “外边距重叠”。

外边距重叠(Collapsing margins),指的是毗邻的两个或多个外边距 (包括父子元素) 会合并成一个外边距。其中所说的 margin 毗邻,可以归结为以下两点:

这两个或多个外边距没有被非空内容、padding、border 或 clear 分隔开

这些 margin 都处于普通流中。

BFC原理

浮动定位和清除浮动时只会应用于同一个BFC内的元素

浮动不会影响其它BFC中元素的布局,而清除浮动只能清除同一BFC中在它前面的元素的浮动

外边距折叠也只会发生在属于同一BFC的块级元素之间

因此,我们常常通过建立BFC来防止外边距重叠的发生。

建立BFC

通过以下方式可以使元素成为一个BFC:

浮动(float的值不为none)

绝对定位元素(position的值为absolute或fixed)

行内块(display为inline-block)

表格单元(display为table、table-cell、table-caption等HTML表格相关属性)

弹性盒(display为flex或inline-flex)

overflow不为visible

984218723-5beb00a3dafe7_articlex.png

BFC其他应用场景

1、由于BFC在计算高度时,其所包含的所有元素,包括浮动元素都是参与计算的。所以甚至可以使用BFC来达到清除浮动的效果。

2326640383-5beb00a3d282f_articlex.png

创建BFC之后:

2405935527-5beb00a3d5e4c_articlex.png

2、由于BFC与float元素是不会发生重叠的,根据这个特性,可以做到自适应两栏布局。由于左边元素浮动,造成右边元素的背景沾满了整个容器。

376697016-5beb00a3d844a_articlex.png

将右边元素改成BFC之后:

1087506809-5beb00a3d8689_articlex.png

以上就是盒模型与BFC的深入讲解的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1613344.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 03:33:38
下一篇 2025年12月24日 03:33:50

相关推荐

  • css中定位的简单介绍(代码示例)

    本篇文章给大家带来的内容是关于css中定位的简单介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 一、相对定位 position: relative 相对默认的布局位置进行定位,也就是相对自己应该在的位置来定位。 .avatar { top: 3px; //从上到下偏…

    2025年12月24日 好文分享
    000
  • CSS中常见的布局有哪些?5种常见的布局介绍

    本篇文章给大家带来的内容是css中常见的布局有哪些?5种常见的布局介绍。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 本文将介绍如下5种常见的布局: 单列布局 两列自适应布局 圣飞布局和双飞翼布局 立即学习“前端免费学习笔记(深入)”; 伪等高布局 粘连布局 一、单列布局 1、常…

    2025年12月24日 好文分享
    000
  • CSS+JS如何实现浪漫流星雨动画效果?(代码示例)

    本篇文章给大家带来的内容是介绍css+js如何实现浪漫流星雨动画效果?(代码示例)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 首先我们来看看效果图: 下面我们来看看如何实现: HTML代码: CSS代码: 立即学习“前端免费学习笔记(深入)”; /* – – – – – – …

    2025年12月24日
    000
  • CSS修改placeholder样式的方法介绍(代码示例)

    本篇文章给大家带来的内容是css修改placeholder样式的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 项目用经常遇到修改input的placeholder的颜色的需求,这里来看一下placeholder如何用css设置: 首先来看一下chrome默认的input…

    2025年12月24日 好文分享
    000
  • 纯CSS如何实现表头固定?表头固定的实现

    本篇文章给大家带来的内容是介绍纯css如何实现表头固定?表头固定的实现。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 纯CSS实现表头固定之所以难,主要在两点: 1、占有最大市场份额的IE6不支持position:fixed。 2、人们想破头都想在一起表格中实现这种效果。 不过外…

    好文分享 2025年12月24日
    000
  • 纯CSS如何实现柱形图效果?(代码示例)

    本篇文章给大家带来的内容是介绍如何用纯css实现柱形图效果?(代码示例)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 我们都知道,CSS在处理排版之强大,没有做不到,只有想不到。下面我们将一同实现一个柱状图。 先打好一个具体的框架。我们利用无序列表做整体,里面的东西我们根本选择…

    2025年12月24日 好文分享
    000
  • CSS如何绘制一只萌萌哒的大熊猫?(代码示例)

    本篇文章给大家带来的内容是介绍css绘制一只萌萌哒的大熊猫的方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 黑眼圈的大熊猫可谓非常可爱,今天就用CSS实现以下萌萌哒的大熊猫一枚(效果如下): 代码在这儿:https://codepen.io/woshilyy/p……

    2025年12月24日
    000
  • CSS3如何实现聊天气泡效果?(代码示例)

    本篇文章给大家带来的内容是介绍css3巧妙实现聊天气泡效果的方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 前一阵子敢玩的 Mobile 页改版完成了,就之前的页面风格更加扁平化,从暗色系为主背景转到亮色背景,去掉更多的阴影,给用户简约的体验风格,哈哈我不是设计师不过多评价啦…

    2025年12月24日 好文分享
    000
  • ::before有什么作用?::before与:before的区别是什么?

    ::before是什么?有什么作用?本篇文章就给大家::before有什么用,让大家了解::before的简单使用,以及::before与:before的异同点。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 一、::before是什么?有什么作用? 在css中,::before …

    2025年12月24日
    000
  • CSS打印时更改屏幕设计和样式(代码示例)

    本篇文章我们将介绍在打印过程中使用css更改屏幕设计和样式的代码,要在印刷时改变样式,可以在文件中进行样式表的链接的link标签指定media属性,或者在css文件中使用媒体查询。 使用链接标记指定媒体属性时 代码 这是使用链接标记指定media属性的代码。 index.html 立即学习“前端免费…

    2025年12月24日
    200
  • 是什么?有什么用?

    是什么?有什么用?本篇文章给大家介绍在css中是什么,作用有哪些,让大家了解的使用。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 一、的基本介绍 1、是什么? 是一种表现基础图形的CSS数据类型,作用于clip-path 与 shape-outside 属性中。【相关视频教程推荐…

    2025年12月24日
    000
  • css使用相对单位进行媒体查询(示例介绍)

    本篇文章给大家带来的内容是css使用相对单位进行媒体查询(示例介绍),让大家了解为什么可以使用相对单位进行媒体查询,有什么好处。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 使用相对单位进行媒体查询 媒体查询中定义的宽度被称为断点。这个点是由你选择的内容以最适合可用空间的方式调整…

    2025年12月24日
    000
  • CSS实现透明度变化的动画 (淡入淡出效果)

    本文我们将使用css来实现透明度发生变化的动画,可以获得淡入和淡出效果。 要实现CSS中透明度更改的动画,需要使用的是transition属性。由于transition属性是CSS3中的新增属性,因此有必要在一些可支持的浏览器上运行时加上前缀。 像是Chrom,Safari编写为“-webkit-t…

    2025年12月24日
    000
  • css的属性选择器是什么?属性选择器的使用

    css的属性选择器是什么?本篇文章就和大家谈谈css的属性选择器,让大家了解属性选择器的作用是什么,如何使用。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 css 属性选择器是什么?有什么用? 在HTML中的元素都可以具有属性,这些属性是显示或修改其行为的附加值。html中包含许…

    好文分享 2025年12月24日
    000
  • css如何实现图片的旋转展示效果(代码示例)

    本篇文章给大家带来内容是通过代码示例介绍使用css+js实现图片的旋转展示,制作一个手动操作的“无限”照片轮播图。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 下面我们就开始介绍如何实现效果。 1、构建图像轮播框架 首先是HTML。它有点难以阅读,因为我们删除了元素之间的任何空格…

    2025年12月24日
    000
  • css如何实现无限轮播图动画(代码示例)

    本篇文章给大家带来的内容是如何实现自动无限播放的轮播图动画效果,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 在之前的文章【css如何实现图片的旋转展示效果】中介绍了手动无限轮播图的制作,本篇我们来看看自动无限轮播图动画的制作。下面我们就来看看动画效果是如何实现的。 1、设置动画…

    2025年12月24日
    000
  • css实现三面立体旋转无限轮播图动画(代码示例)

    本篇文章给大家介绍css实现三面立体旋转无限轮播图动画(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 在之前的文章【css如何实现无限轮播图动画】里介绍横向播放的无限轮播图动画(如下图),本文我们将在之前的基础上进行修改,实现不一样的轮播图动画。 三面立体旋转的轮播图…

    2025年12月24日
    000
  • 如何使用CSS3的渐变来实现文字颜色的渐变?

    在最近的网页设计中,我觉得包含渐变的设计越来越多。这一次,我们将来介绍如何将css3的渐变应用于文本,并介绍一下如何将图像填充到文本上。 在文本上加上颜色渐变 这是一种将渐变色设置为文本的背景颜色。目前支持的浏览器是Google Chrome,Safari,Opera。(推荐课程:CSS3视频教程)…

    2025年12月24日 好文分享
    000
  • css中媒体查询是什么?怎么使用?

    本篇文章给介绍媒体查询是什么?怎么使用?让大家了解媒体查询的使用方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 媒体查询是什么?有什么用? 媒体查询限制CSS样式的范围,以便仅在满足某些媒体条件时才适用。 简单来说:媒体查询可以让我们根据设备显示器的特性(如视口宽度、屏幕比例…

    2025年12月24日
    000
  • css如何使用媒体查询进行响应式设计?(示例详解)

    本篇文章给大家带来的内容是介绍css如何使用媒体查询进行响应式设计?(示例详解),通过简单的示例来看看最小宽度和最大宽度的使用。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 响应式设计背后的理念是使用相同的代码库在各种设备上提供出色的体验。这意味着我们编写的代码应该与设备无关。执…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信