css盒模型-BFC

BFC(边距重叠解决方案)

1、BFC的基本概念:块级格式化上下文

2、BFC的原理(说白了就是BFC的渲染规则):

这个规则是什么呢?我觉得大家能说出4点就够了

第一个就是BFC可以解决这个元素的垂直的边距发生重叠的情况
第二个是BFC的区域不会与浮动元素的box重叠,这个肯定是用来清除浮动的。
第三个是BFC在页面上是一个独立的容器,外面的元素不会影响它里面的元素,反过来,里面的元素也不会影响到外面的元素。
第四个就是计算BFC高度的时候,浮动元素也会参与计算,现在比较抽象,等会通过代码演示

3、怎么创建BFC

刚才给父元素加了一个 overflow:hidden就创建了一个BFC,那么除了overflow:hidden,还有哪些写法能创建BFC呢?

第一个是float的值不为none,因为css的float值默认是none,只要设置了浮动就创建了BFC
第二个是position的值不是static或者relative,也就是创建了一个bfc,比如设置成absolute,fixed
第三个是display属性是inline-box或者table-cell,跟table相关的这几个,就创建了BFC
第四个是overflow,overflow为auto,hidden,都可以创建BFC

4、BFC的使用场景有哪些?

第一部分,解决边距的问题

<!--bfc垂直方向边距重叠-->
<section id="margin">
  <style>
    #margin{
      background: pink;
      overflow: hidden;
    }
    #margin>p{
      margin: 5px auto 25px;
      background: red;
    }
  </style>
  <p>1</p>
  <p>2</p>
  <p>3</p>
</section>

父级元素是创建了bfc的,如图,我们发现上边距是5px,1和2和3之间的间隔是25px,因为1的下边距和2的上边距发生了重叠,重叠的时候根据取最大值的原则。如果我不想让它重叠,就给子元素增加一个父元素,给这个父元素创建一个bfc就能解决这个问题

<!--bfc垂直方向边距重叠-->
<section id="margin">
  <style>
    #margin{
      background: pink;
      overflow: hidden;
    }
    p{
      margin: 5px auto 25px;
      background: red;
    }
  </style>
  <p>1</p>
  <div style="overflow:hidden">
    <p>2</p>
  </div>
  <p>3</p>
</section>

如图,这样我们发现1和2,2和3之间的间隔变大了,没有重叠

bfc的原理之一BFC可以解决这个元素的垂直的边距发生重叠的情况 && overflow为auto,hidden,可以创建BFC

第二部分,解决布局的问题

<!--跟布局相关的bfc-->
<section id="layout">
  <style>
    #layout{
      background: red;
    }
    #layout .left{
      float: left;
      width: 100px;
      height: 100px;
      background: pink;
    }
    #layout .right{
      height: 110px;
      background: #ccc
    }
  </style>
  <div class="left"></div>
  <div class="right"></div>
</section>

如图,我们发现,灰色的部分高度增高的时候,下面的部分侵入了左侧的占位,这个是float的一个特性,当左侧没有float元素的时候,依然会往左侵染,显然,这不符合我们布局的目的,那么就需要给右侧的元素创建一个bfc,bfc的原理之一是bfc的元素不会与float元素相互重叠,现在是重叠的,那么创建bfc以后就不会与float重叠了

<!--跟布局相关的bfc-->
<section id="layout">
  <style>
    #layout{
      background: red;
    }
    #layout .left{
      float: left;
      width: 100px;
      height: 100px;
      background: pink;
    }
    #layout .right{
      height: 110px;
      background: #ccc;
      overflow: auto;
    }
  </style>
  <div class="left"></div>
  <div class="right"></div>
</section>

给right元素加一个overflow,创建一个bfc,如图,情况就变了,不会与左侧元素重叠

bfc的原理之一,BFC的区域不会与浮动元素的box重叠 && overflow为auto,hidden,可以创建BFC

第三部分,计算高度

<!--浮动元素-->
<section id="float">
  <style>
    #float{
      background:red
    }
    #float .float{
      float: left;
    }
  </style>
  <div class="float">我是浮动元素</div>
</section>

如图,浮动元素的父元素高度为0,没有了背景色。这个就是子元素遇到浮动的时候,它的高度计算没有包含进来,如果当这个父元素设置为bfc的时候,子元素的高度也会参与到父元素的高度计算中来

<!--浮动元素-->
<section id="float">
  <style>
    #float{
      background:red;
      /* overflow: auto; */
      float: left;
    }
    #float .float{
      float: left;
    }
  </style>
  <div class="float">我是浮动元素</div>
</section>

给父元素加个overflow或者float创建了bfc,那么就计算子元素高度,就算子元素是float,也会计算

bfc原理之一计算BFC高度的时候,浮动元素也会参与计算 && float的值不为none,设置了浮动就创建了BFC

原文地址:https://www.cnblogs.com/wzndkj/p/10134959.html

时间: 2024-08-05 02:37:27

css盒模型-BFC的相关文章

css盒模型与bfc与布局与垂直水平居中与css设计模式等

一.css盒子与布局相关 盒子内部的布局 盒子之间的布局visual formatting 脱离正常流normal flow的盒子的布局 absolute布局上下文下的布局 float布局上下文下的布局 flow下的盒子的布局 BFC布局上下文下的布局 IFC布局上下文下的布局 FFC布局上下文下的布局 table布局上下文下的布局 css grid布局上下文下的布局 1.css盒模型 页面上显示的每个元素(包括内联元素)都可以看作一个盒子,即盒模型( box model ) 盒模型有4部分组成

css盒模型

css盒子模型是为了让我们充分理解div+css模型的定位功能,盒子模型在学习div+css布局方式中必须要学习的一个模型. 那什么是css盒模型呢? 网页设计中常听到的属性名:内容(content).填充(padding).边框(border).边界(margin).css盒模型都具备这些属性.这些属性和日常生活中盒子的属性是一样的.内容就是盒子里面装的东西,而填充就是像盒子里装的一些反震的材料,边框就是箱子的本身,边界呢就像盒子之间的空隙. 盒子的模型有2种,分别是IE盒子模型和标准盒子模型

CSS盒模型的介绍

CSS盒模型的概念与分类      CSS盒模型就是一个盒子,封装周围的HTML元素,它包括内容content.边框border.内边距padding.外边距margin. CSS盒模型分为标准模型和IE模型: 标准模型和IE模型的区别       标准模型的width是内容content 的宽度:                                                   设置方式: box-sizing:content-box;        IE模型的width是内

第16章 CSS盒模型下

第 16章 CSS盒模型[下]学习要点:1.元素可见性2.元素盒类型3.元素的浮动 本章主要探讨 HTML5中 CSS盒模型,学习怎样了解元素的外观配置以及文档的整体布局. 一.元素可见性使用visibility属性可以实现元素的可见性,这种样式一般可以配合 JavaScript来实现效果.样式表如下:属性 visibility 值 说明 CSS版本visible 默认值,元素在页面上可见 2hidden 元素不可见,但会占据空间. 2collapse 元素不可见,隐藏表格的行与列. 2 如果不

CSS 盒模型

CSS盒模型也叫框模型,具备内容(content).内边距(padding).边框(border).外边距(margin)这些属性.在CSS中,每一个元素都被视为一个框,而每个框都有三个属性: border:元素的边框(可能不可见),用于将框的边缘与其他框分开: margin:外边距,表示框的边缘与相邻框之间的距离: padding:内边距,表示框内容和边框之间的空间. 盒模型的结构如下图所示: 由上图可以看出,width和height指的是内容区域的宽度和高度.增加内边距.边框和外边距不会影响

css盒模型和块级、行内元素深入理解

一.CSS盒模型 盒模型概述 盒模型是CSS的核心知识点之一,它指定元素如何显示以及如何相互交互.页面上的每个元素都被看成一个矩形框,这个框由元素的内容.内边距.边框和外边距组成.如下图所示: 内边距出现在内容区域的周围.如果在元素上添加背景,那么背景应用于元素的内容和内边距组成的区域.因此可以用内边距在内容周围创建一个隔离带,使内容不与背景混合在一起.添加边框会在内边距区域外边增加一条线.这些线可以有不同的样式和宽度,如实线.虚线.点画线.在边框外边的是外边距,外边距是透明的,一般使用它控制元

CSS盒模型(Box Model)

阅读目录 1. 什么是CSS盒模型 2. IE盒模型和W3C盒模型 3. CSS3属性box-sizing 4. 关于盒模型的使用 在最初接触CSS的时候,对于CSS盒模型的不了解,撞了很多次的南墙呀.盒模型是网页布局的基础,它制定了元素如何在页面中显示,如果足够地掌握,那使用CSS布局那将会容易得多. 1. 什么是CSS盒模型 盒模型,顾名思义,就是一个盒子.生活中的盒子,有长宽高,盒子本身也有厚度,可以用来装东西.页面上的盒模型我们可以理解为,从盒子顶部俯视所得的一个平面图,盒子里装的东西,

尖刀出鞘的display常用属性及css盒模型深入研究

一:diplay:inline-block 含义:指元素创建了一个行级的块级元素,该元素内部(内容)被格式化成一个块级元素,同时元素本身则被格式化成一个行内元素.更简单的说就是说inline-block后的元素具有block元素可以设置宽高特性,同时又具有inline元素默认不换行的特性. 其实display:inline-block这个属性现在浏览器都支持,其实IE从5.5开始就已经支持了,但是IE6,7支持的还不够完善,我们可以先来做demo测试下就可以明白.为了做demo,所以我们现在需要

7.css盒模型

所谓的盒模型,其实就是把元素当成盒子,元素里的文本就是盒子里的东西. 而根据元素的特效,其盒模型的特效也不同,下面是一些总结: 1.块级元素(区块) 所谓块级元素,就是能够设置元素尺寸.有隔离其他元素功能的元素.比如<div>.<p>等分组元素 2.行内元素(内联) 所谓行内元素,是不能够设置元素尺寸的,它只能自适应内容.无法隔离其他元素,其他元素会紧跟其后.比如<span>.<b>等文本元素. 3.行内-块元素(内联块) 所谓行内-块元素,可以设置元素尺寸

第 16 章 CSS 盒模型[下]

学习要点: 1.元素可见性 2.元素盒类型 3.元素的浮动 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 盒模型,学习怎样了解元素的外观配置以及文档的整体布局. 一.元素可见性 使用 visibility 属性可以实现元素的可见性,这种样式一般可以配合 JavaScript 来实现效果.样式表如下: 属性 值 说明 CSS 版本 visible 默认值,元素在页面上可见. 2 visibility hidden 元素不可见,但会占据空间. 2 collapse 元素不可见,隐藏表格的行