CSS实现三栏布局

CSS实现三栏布局的5中方式

用css实现一个三栏布局,左右固定300px,高度顶满,中间撑开顶满剩余位置

方案一:浮动

注意:middle盒子要放到最后,否则middle块元素会占据整行,无法实现效果

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>css实现一个三栏布局</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        height: 100%;
        overflow: hidden;
      }
      .left {
        width: 300px;
        background-color: green;
        float: left;
      }
      .right {
        width: 300px;
        background-color: green;
        float: right;
      }
      .middle {
        background-color: red;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <div class="left">left</div>
      <div class="right">right</div>
      <div class="middle">middle</div>
    </div>
  </body>
</html>

方案二:Flex布局

简单实用
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>css实现一个三栏布局</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        height: 100%;
        overflow: hidden;
      }
      .container {
        display: flex;
      }
      .left,
      .right {
        width: 300px;
        background-color: green;
      }
      .middle {
        flex: 1;
        background-color: red;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <div class="left">left</div>
      <div class="middle">middle</div>
      <div class="right">right</div>
    </div>
  </body>
</html>

方案三:绝对定位

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>css实现一个三栏布局</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        height: 100%;
        overflow: hidden;
      }
      .left,
      .right {
        position: absolute;
        width: 300px;
        background-color: green;
        top: 0;
      }
      .left {
        left: 0;
      }
      .right {
        right: 0;
      }
      .middle {
        background-color: red;
        margin: 0 300px;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <div class="left">left</div>
      <div class="middle">middle</div>
      <div class="right">right</div>
    </div>
  </body>
</html>

方案四:Grid网格布局

auto关键字:占据剩余位置,由浏览器决定长度
也可以使用fr关键字:代表网格容器中可用空间的一等份。如:grid-template-columns: 200px 1fr 2fr 表示第一个列宽设置为 200px,后面剩余的宽度分为两部分,宽度分别为剩余宽度的 1/3 和 2/3。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>css实现一个三栏布局</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        height: 100%;
        overflow: hidden;
      }
      .container {
        display: grid;
        grid-template-columns: 100px auto 100px;
      }
      /* .container {
        display: grid;
        grid-template-columns: 100px 1fr 100px;
      } */
      .left,
      .right {
        background-color: green;
      }
      .middle {
        background-color: red;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <div class="left">left</div>
      <div class="middle">middle</div>
      <div class="right">right</div>
    </div>
  </body>
</html>

方案五:Table布局

父元素设置display:table, 子元素设置display:table-cell

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>css实现一个三栏布局</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        height: 100%;
        overflow: hidden;
      }
      .container {
        display: table;
        width: 100%;
      }
      .left,
      .right {
        display: table-cell;
        background-color: green;
        width: 100px;
      }
      .middle {
        display: table-cell;
        background-color: red;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <div class="left">left</div>
      <div class="middle">middle</div>
      <div class="right">right</div>
    </div>
  </body>
</html>

以上方式都能实现如下效果
以上方式都能实现如图效果

  • 29
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值