首页 技术 正文
技术 2022年11月16日
0 收藏 630 点赞 2,869 浏览 1651 个字

盒模型

CSS盒模型分成W3C标准盒模型和IE模型

  • W3C标准盒模型(默认):box-sizing: content-box

    • paddingborder都会撑开盒子,改变盒子的宽度高度
    • 总宽度:width + 左右border宽度 + 左右padding宽度 + 左右margin宽度
    • 内盒宽度:width + 左右border宽度 + 左右padding宽度
  • IE盒模型:box-sizing: border-box

    • paddingborder都不会撑开盒子,不会改变盒子的宽度,盒子的内容会相应缩小

    • 总宽度:width + 左右margin宽度

    • 内盒宽度: width

盒子模型布局稳定性

我们根据稳定性来分,建议如下:

按照 优先使用宽度,其次使用内边距,再次外边距。 即:width > padding > margin

原因:

(1)margin 会有外边距合并

(2)padding 会影响盒子大小,需要进行加减计算(麻烦) 其次使用

(3)width 没有问题我们经常使用宽度剩余法来做

padding margin 百分比

marginpadding的值设置为百分比时,是相对于最近的块级或内联块父元素width(非总宽度)的相应百分比的值。

即使是margin-topmargin-bottompadding-toppadding-bottom,设置为百分比时也是以最近块级父元素的width(非总宽度)为基准,而非height

margin塌陷问题

  • 相邻块元素垂直外边距的合并

    当上下相邻的两个块元素相遇时,如果上面的元素有下外边距margin-bottom,下面的元素有上外边距margin-top,则他们之间的垂直间距不是margin-bottommargin-top之和,而是两者中的较大者。这种现象被称为相邻块元素垂直外边距的合并(也称外边距塌陷)。

    解决方法:

    • 将其放在不同的 BFC 父容器中

      <div class="container">
      <div class="child"></div>
      </div>
      <div class="container">
      <div class="child"></div>
      </div>.container {
      overflow: hidden;
      }
      .child {
      width: 100px;
      height: 100px;
      background: #f0;
      margin: 100px;
      }
  • 嵌套块元素垂直外边距的合并

    对于两个嵌套关系的块元素,必须是block元素。如果父元素没有上内边距padding、没有上边框border、没有内容,则父元素的上外边距会与子元素的上外边距发生合并,合并后的外边距取其较大者。即使父元素的上外边距为0,也会发生合并。

    解决方法:

    • 给父元素加 overflow:hidden,相当于给父元素添加了一个BFC

    • 给父元素加上内边距 或 上边框

BFC

BFC 全称为块格式化上下文 (Block Formatting Context) 。它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用

BFC触发条件:

  • overflow:除 visible 以外的值 (hiddenautoscroll)

  • float:除 none 以外的值

  • display inline-blockflex

  • positionabsolutefixed

BFC作用:

  1. BFC解决margin塌陷问题

  2. BFC解决浮动元素引起父元素高度塌陷问题

    在通常情况下父元素的高度会被子元素撑开,而如果父元素没有设置高度,其子元素均为浮动元素,此时父元素会发生了高度坍塌,上下边界重合,即浮动元素无法撑起父元素。这时就可以用BFC来清除浮动了,将父元素整体设置为BFC环境

  3. BFC解决元素被浮动元素覆盖问题

    如果有两个相邻元素,第一个元素左浮动,第二个元素不设置浮动,这时候第二个元素会有部分被浮动元素所覆盖(但是文本信息不会被浮动元素所覆盖)。 如果想避免元素被覆盖,可触发第二个元素的 BFC 特性,在第二个元素中加入 overflow: hidden即可

参考文档

10 分钟理解 BFC 原理

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,082
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,556
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,405
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,179
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,815
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,898