<div class="box">
  <header>
    <h2>圣杯布局</h2>
  </header>
  <div class="container">

    <div class="content col">
      content
      <p>1. 确保内容在最前面</p>
      <p>2. 三列都左浮动且相对定位,左右宽度已知且固定</p>
      <p>3. 给content设置width 100%</p>
      <p>4. 这时left被挤下去了,给maring-left: -100%。占比父级tag(container)的100%</p>
      <p>5. 这时content和left内容上重叠,从外层设置padding</p>
      <p>6. 这时relative该起作用了,设置left的left值为负的宽度值</p>
      <p>7. right怎么搞,给个负的右边距,值为left宽度。 这个地方为啥不能给负的左边距呢,因为会重叠,content和right的内容重叠。</p>
    </div>
    <div class="left col">
      left
    </div>
    <div class="right col">
      right
    </div>
  </div>
  <div class="footer">
    footer
  </div>
</div>
*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

.container{
  padding: 0 150px 0 200px;
  min-width: 600px;
}

.col{
  float: left;
  position: relative;
}

.content{
  border: 1px solid green;
  width: 100%;
}

.left{
  width: 200px;
  margin-left: -100%;
  left: -200px;
  border: 1px solid red;
}

.right{
  width: 150px;
  margin-right: -150px;
  
  border: 1px solid red;
}

.footer{
  clear:both;
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.