BFC布局规则

内部的Box会在垂直方向,一个接一个地放置
Box垂直方向上的距离由 margin 决定,同属一个BFC的两个相邻Box的 margin 会发生重叠
每个元素的左外边缘(margin-left),与包含块的左边(contain box left)相接触(对于从左到右的格式化)。
即使存在浮动也是如此,除非这个元素自己形成一个新的BFC
BFC的区域不会与float box重叠
BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素
计算BFC的高度时,浮动元素也参与计算

BFC触发条件

1、float的值不为none
2、overflow的值不为visible
3、display的值为table-celltable-captioninline-block之一
4、position的值不为static或则releative中的任何一个

BFC举例

解决maring重叠

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. .p {
  8. width: 200px;
  9. height: 50px;
  10. margin: 50px 0;
  11. background-color: red;
  12. }
  13. .wrap {
  14. overflow: hidden;
  15. background: #00b48f;
  16. }
  17. </style>
  18. </head>
  19. <body>
  20. <div class="p"></div>
  21. <div class="p"></div>
  22. <div class="wrap">
  23. <div class="p"></div>
  24. </div>
  25. </body>
  26. </html>

两栏自适应布局

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. div {
  8. width: 300px;
  9. }
  10. .aside {
  11. width: 100px;
  12. height: 150px;
  13. float: left;
  14. background: #00a4ff;
  15. }
  16. .main {
  17. height: 200px;
  18. background-color: #7FFFD4;
  19. overflow: hidden;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <div class="aside"></div>
  25. <div class="main"></div>
  26. </body>
  27. </html>

清除内部浮动

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. .child {
  8. border: 1px solid red;
  9. height: 100px;
  10. width: 100px;
  11. float: left;
  12. }
  13. .parent {
  14. border: 1px solid black;
  15. width: 300px;
  16. overflow: hidden;
  17. }
  18. </style>
  19. </head>
  20. <body>
  21. <div class="parent">
  22. <div class="child"></div>
  23. </div>
  24. </body>
  25. </html>

IFC布局规则

  1. 内部的盒子会在水平方向,一个个地放置,起点是包含块的顶部;
  2. IFC的高度,由里面最高盒子的高度决定;
  3. 当一行不够放置的时候会自动切换到下一行;
  4. 水平方向上的margin border padding在框之间得到保留
  5. 在垂直方向上可以以不同的方式对齐:顶部或底部对齐,或者根据文字的基线对齐

    IFC触发条件

    font-sizeline-heightheightvertical-align

    IFC举例

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Title</title>
    6. <style>
    7. .box {
    8. width: 150px;
    9. height: 150px;
    10. display: inline-block;
    11. word-wrap: break-word;
    12. background: green
    13. }
    14. #inlineBox {
    15. vertical-align: top;
    16. }
    17. </style>
    18. </head>
    19. <body>
    20. <div class="box">34u324039284903840932jo43k2jlk4khjvhfkdjv897897897fd</div>
    21. <div class="box" id="inlineBox">adsdjjdjjdks</div>
    22. </body>
    23. </html>