• 关于css盒子模型和BFC的理解


    CSS盒子模型

    包含元素内容(content)、内边距(padding)、边框(border)、外边距(margin

    一般元素总宽度 = element的width+padding的左右边距+margin左右边距值+border的左右宽度

    高度同理

    外边距合并

    上下外边距会合并一般发生在普通文档流中,行内框,浮动框或绝对定位之间外边距不会合并

    一般合并的外边距会取那个较大的值

    Box-sizing属性(content-box|border-box|inherit

    Content-box: 总宽度 = margin+border+padding+width

    Border-box:总宽度 = width+margin   其中盒子的width包含padding+border+element

    inherit:规定从父元素继承box-sizing的属性值

    实践中的问题

    • Margin越界(第一个子元素的margin-top和最后一个子元素的margin-bottom

          ->父元素没边框,设置第一个子元素的margin-top的值会加在父元素上,解决方法如下:  

    1. 给父元素加边框
    2. 给父元素设置padding
    3. 父元素添加overflow:hidden
    4. 父元素加前置内容生成(推荐)

      例子:.parent{

                  Width:500px;

                  Height:500px;

                  Background:red

    }

    .parent : before{

                  Content:””;

                  Display:table

    }

    .child{

                  Width:200px;

                  Height:200px;

                  Background:green;

                  Margin-top:50px

    }

      <div class=“parent”>

         <div class=“child”>

            </div>

    </div>

    浏览器间的盒子模型

    1. ul在MOzillz中默认有padding值,而在IE中只有margin
    2. 标准盒子模型与IE盒子模型之间差异,IE更像box-sizing:border-box,解决方法就是在HTML模板加上doctype

    盒子模型画三角形

    .triangle{

            Width:0;

            Height:0;

            Border:20px solid transparent;

            Border-top:20px solid red;

    }//向下的箭头

     

     

    BFC理解(块级格式化上下文,独立的渲染区域,规定了内部的BFC如何布局,并与这个区域的外部互不相干)

    BOX、Formatting Context的缩写

    Box:CSS布局的基本单位

    • box常用盒子:(根据display的你属性区分盒子)

         -> block-level box:display属性为 block,list-item,tabel的元 素,并且参与BFC

        -> inline-level box:display 属性为 inline,inline-block,inline-table,参与IFC

    • BFC布局规则

        -> 内部的Box会在垂直方向上,一个接一个放置

        -> Box垂直方向距离由Margin决定,属于同一个BFC的两个相邻的Box的Margin会发生重叠

        -> 每个子集元素的Margin Box的左边与包含他的父级元素的 border  box的左边相接触(对于从左往右的格式,反之相反);即使存在浮   动也是如此

        -> BFC的区域不会与Float Box重叠

        -> BFC在页面上就是一个隔离的独立的容器,容器里面的子元素不会影响外面的元素,反之一样

       -> 计算BFC高度的时候,浮动元素高度也参与计算

    • 哪些元素会生成BFC

        -> 根元素

        -> float 不为none

        -> position为absolute或fixed

        -> display为inline-block,table-cell,table-caption,flex,inline-flex

        -> overflow不为visible   

     

     

  • 相关阅读:
    ssh整合
    自定义Java集合
    java图形界面写个小桌面,内置简单小软件
    java简单日历
    javaSwing
    javaScript封装
    java解析xml文件
    缺省适配器
    适配器模式
    自定义SWT控件一之自定义单选下拉框
  • 原文地址:https://www.cnblogs.com/kingsnowcan/p/css_box_BFC.html
Copyright © 2020-2023  润新知