触发BFC的条件

  • body根元素
  • 定位是position、fixed
  • overflow不是visible
  • float不是none

浮动三栏

<div class="wrap>
    <div class="left">left</div>
    <div class="right">right</div>
    <div class="content">content</div>
</div>
.wrap{
    overflow:hidden;//触发BFC清除浮动
    height:200px
}
.left{
    float:left;
    width:200px;
    height:200px;
    background-color:red
}
.right{
    float:right;
    width:200px;
    height:200px;
    background-color:blue;
}
.content{
    height:200px;
    margin:0 200px;
    background-color:yellow
}

left right content三者的位置不能改变,导致content最后才渲染

定位三栏

<div class="wrapper">
    <div class="content">content</div>
     <div class="left">left</div>
    <div class="right">right</div>
</div>
.wrapper {
  width: 100%;
  line-height: 200px;
  color: #fffdef;
  text-align: center;
  position: relative;
}

.content {
  margin: 0 200px;
  background-color: lime;
  height: 200px;
}

.left {
  position: absolute;
  top: 0;
  left: 0;
  width: 200px;
  height: 200px;
  background-color: red;
}

.right {
  position: absolute;
  top: 0;
  right: 0;
  width: 200px;
  height: 200px;
  background-color: blue;
}

圣杯布局

    <div class="main">
        <div class="content">content</div>
        <div class="sidebar-left">left</div>
        <div class="sidebar-right">right</div>
    </div>
    <style>
        .main {
            padding: 0 200px 0 150px;
        }

        body {
            color: #fff;
            font-size: 40px;
            background-color: #666;
            font-family: Arial;
            text-align: center;
        }

        .content,
        .sidebar-left,
        .sidebar-right {
            float: left;
            position: relative;
            height: 400px;
            line-height: 400px;
        }

        .content {
            width: 100%;
            background-color: #f5c531;
        }

        .sidebar-left {
            width: 150px;
            background-color: #a0c263;
            margin-left: -100%;
            left: -150px;
        }

        .sidebar-right {
            background-color: #a0c263;
            width: 200px;
            margin-right: -200px;
        }
    </style>

双飞翼布局

<div class="main">
    <div class="content-wrapper">
        <div class="content">content</div>
    </div>
    <div class="sidebar-left">left</div>
    <div class="sidebar-right">right</div>
</div>
.sidebar-left,
.sidebar-right {
  float: left;
  height: 400px;
  line-height: 400px;
}

.content-wrapper {
  width: 100%;
  float: left;
}

.content {
  margin: 0 200px 0 150px;
  background-color: #f5c531;
  height: 400px;
  line-height: 400px;
}

.sidebar-left {
  width: 150px;
  background-color: #a0c263;
  margin-left: -100%;
}

.sidebar-right {
  background-color: #a0c263;
  width: 200px;
  margin-left: -200px;
}