两栏布局、三栏布局

270 阅读1分钟

两栏布局

核心是:一侧固定,另一侧自适应

1 浮动方法 float

给固定的一侧设置浮动

1.1 左侧固定,右侧自适应

<style type="text/css">
   #left{
      width:200px;
      border:1px solid red;
      float: left;
    }
    #right{
      margin-left: 201px;
      border:1px solid blue;
      height:400px;
    }
  </style>

  <body>
    <div id="left">左侧固定</div>
    <div id="right">右侧自适应</div>
  </body>

1.2 右侧固定,左侧自适应

<style type="text/css">
    #right{
      width:200px;
      border:1px solid red;
      float: right;
    }
    #left{
      margin-right: 201px;
      border:1px solid blue;
      height:400px;
    }
  </style>

  <body>
    <div id="right">右侧固定</div>
    <div id="left">左侧自适应</div>
  </body>

2 定位 position

左侧固定 右侧自适应,给父级position: relative;给固定宽度的一方position: absolute;

<style type="text/css">
    .box {
      position: relative;
    }
    #left{
      position: absolute;
      top: 0;
      left: 0;
      width:200px;
      border:1px solid red;
    }
    #right{
      margin-left: 201px;
      border:1px solid blue;
      height:400px;
    }
</style>

<div class="box">
  <div id="left">左侧固定</div>
  <div id="right">右侧自适应</div>
</div>

3 弹性布局 flex

父级设置display,固定其中一个,另一个flex:1

 <style type="text/css">
    .box {
      display: flex;
    }
    #left{
      width:200px;
      border:1px solid red;
    }
    #right{
      border:1px solid blue;
      height:400px;
      flex: 1;
    }
</style>
<div class="box">
  <div id="left">左侧固定</div>
  <div id="right">右侧自适应</div>
</div>

三栏布局

核心是:两侧固定,中间自适应

1 浮动方法 float

两侧固定,且设置float,中间部分设置margin自适应

 <style type="text/css">
    #left{
      width:200px;
      border:1px solid red;
      float: left;
    }
    #middle {
      border:1px solid yellow;
      margin: 0 200px;
    }
    #right{
      width: 200px;
      border:1px solid blue;
      float: right;
    }
  </style>

  <div class="box">
    <div id="left">固定</div>
    <div id="right">固定</div>
    <div id="middle">自适应</div>
  </div>

2 定位 position

父级设置position:relative 两侧固定设置position:absolute 中间部分设置margin自适应

<style type="text/css">
    .box {
      position: relative;
    }
    #left{
      position: absolute;
      width:200px;
      border:1px solid red;
      top: 0;
      left: 0;
    }
    #middle {
      border:1px solid yellow;
      margin: 0 200px;
    }
    #right{
      position: absolute;
      top: 0;
      right: 0;
      width: 200px;
      border:1px solid blue;
    }
  </style>
  <div class="box">
    <div id="left">固定</div>
    <div id="right">固定</div>
    <div id="middle">自适应</div>
  </div>

3 弹性布局 flex

<style type="text/css">
  .box {
    display: flex;
  }
  #left{
    width:200px;
    border:1px solid red;
  }
  #middle {
    border:1px solid yellow;
    flex: 1;
  }
  #right{
    width: 200px;
    border:1px solid blue;
  }
</style>

<div class="box">
  <div id="left">固定</div>
  <div id="middle">自适应</div>
  <div id="right">固定</div>
</div>

4 calc 函数

<style type="text/css">
    #left{
      width:200px;
      border:1px solid red;
    }
    #middle {
      border:1px solid yellow;
      width: calc(100% - 400px)
    }
    #right{
      width: 200px;
      border:1px solid blue;
    }
  </style>

  <div id="left">固定</div>
  <div id="middle">自适应</div>
  <div id="right">固定</div>