美文网首页
CSS 盒模型分析

CSS 盒模型分析

作者: 墨夜_caa3 | 来源:发表于2019-01-22 20:53 被阅读0次

基本概念

页面中的每个元素都可以看成一个盒子,盒子里面可以装其他盒子,层层嵌套。html 标签就是最外面的大盒子。每个盒子由内向外分别是 content, padding, border, margin 。

盒子模型

分类

盒模型有两种,标准盒模型IE盒模型 。主要区别是它们的 widthheight 不同

  • 标准盒模型


    标准盒模型

盒子宽高是 content(内容) 的宽高

  • IE盒模型


    IE盒模型

盒子宽高是 border + padding + content 的宽高

浏览器默认使用标准盒模型,在 ie8+ 中 可以通过设置 box-sizing 样式属性改变盒模型


box-sizing:

  • content-box ---> 标准盒模型(默认)
  • border-box ---> IE 盒模型

通过js获取盒子宽高

以下 domElement 是表示 HTML 元素的伪代码

  1. domElement.style.width/height

只能获取内联样式中的宽高

  1. domElement.currentStyle.width/height

获取的是浏览中渲染完成后元素的宽高,只有 IE 浏览器支持

  1. window.getComputedStyle(domElement).width/height

和方式2一样,但可以兼容更多浏览器

  1. domElement.offsetWidth/offsetHeight

不管使用的什么盒模型,获取的都是 IE盒模型 的宽高

外边距折叠问题

相邻元素在竖直方向上的外边距在相遇时会发生合并,合并后的外边距的高度等于两个外边距中较大的那个值。

兄弟元素间

外边距重合

父子元素间

外边距重合

外边距折叠解决方案(BFC)

Block Formatting Context (块级格式化上下文)

BFC 可以简单地理解为某个元素的一个 CSS 属性,只不过这个属性不能被开发者显式的修改,拥有这个属性的元素对内部元素和外部元素会表现出一些特性,这就是BFC。

怎样让元素创建 BFC

  • float 的值不为 none (浮动元素)
  • overflow 的值为 visible
  • display 的值为 inline-blocktable-captiontable-cellflexinline-flex
  • positon 的值为 absolutefixed
  • <html>(根元素)

BFC 的布局规则

  1. 内部的 box 会在垂直方向上一个接一个地放置 (平时说的块级元素一行行放)
  2. box 间垂直方向的距离由 margin 决定 。同一个BFC中的两个相邻的 box 还是会产生外边距重叠问题
  3. BFC 的区域不会与 浮动的 box 重叠
  4. BFC 是一个独立的容器,里面的元素不会影响外面的元素,反之亦然。
  5. 包含浮动元素,计算 BFC 的高度时,浮动的元素也会参与计算

BFC 的应用场景

  • 分属于不同 BFC 的元素可以防止垂直外边距折叠
  • 清除内部浮动(使浮动元素可以撑起父盒子)
  • 自适应两栏布局(BFC 区域不会与浮动元素重叠)
  • 防止元素被浮动元素覆盖

float + BFC 两栏布局:

<div class="parent">
    <div class="left">left</div>
    <div class="right">right</div>
</div>

<style>
    .left {
        float: left;
        width: 100px;
        background-color: blue;
    }
    .right {
        overflow: hidden; // 触发 BFC
        background-color: green;
    }
</style>

阅读原文


参考文章:
关于CSS-BFC深入理解
css 盒子模型理解

相关文章

  • 6.3盒模式

    盒模型 什么是CSS盒模型? CSS盒模型仅仅是一个形象的比喻, HTML中的标签都是盒模型 CSS盒模型指那些可...

  • 盒模型

    什么是CSS盒模型? CSS盒模型仅仅是一个形象的比喻, HTML中的标签都是盒模型 CSS盒模型指那些可以设置宽...

  • CSS盒模型

    盒模型主要分析块级元素,对应CSS属性box-sizing。盒模型分为两种: W3C标准模型 IE标准模型 怪异模...

  • CSS 盒模型分析

    基本概念 页面中的每个元素都可以看成一个盒子,盒子里面可以装其他盒子,层层嵌套。html 标签就是最外面的大盒子。...

  • CSS盒模型

    CSS盒模型的认识 标准模型 和 IE模型 CSS盒模型包括content,padding,border,marg...

  • Css盒模型以及Bfc的应用场景

    CSS盒模型: 一 基本概念: 分为标准模型+IE模型。 二 标准盒模型和IE盒模型的区别。CSS如何设置这两种盒...

  • CSS 盒模型总结

    概念 CSS盒模型 包含:content padding border margin 类型 CSS盒模型分为 标准...

  • HTML/CSS 04-css盒模型

    css盒模型的组成部分,css margin,css padding,css盒子的实际大小 目录: 一、盒模型的组...

  • html+css 12

    开篇十二章 1、css布局模型 清楚了CSS 盒模型的基本概念、 盒模型类型,...

  • 1.CSS盒模型

    css盒模型 css中,Box Model叫盒子模型;盒模型规定了 元素内容(content)、内边距(paddi...

网友评论

      本文标题:CSS 盒模型分析

      本文链接:https://www.haomeiwen.com/subject/ssgrjqtx.html