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
    评论
实现flex实现布局,可以按照以下步骤进行操作: 1. 首先,创建一个外层容器,可以使用`<div>`元素,并为其设置`display: flex;`来启用flex布局。[2] 2. 在外层容器中创建三个子元素,代表三布局的左、中、右。 3. 对左、右设置一个固定的宽度,例如`width: 300px;`。对中间不设置特定的宽度。 4. 对三个子元素设置`flex: 1 1 auto;`,这将使它们平分剩余空间。这意味着中间的宽度将自适应。 5. 可以根据需要为三个子元素添加其他样式,比如背景色、边框等。 以下是一个使用flex实现布局的示例代码: ``` <div class="container"> <div class="left"></div> <div class="middle"></div> <div class="right"></div> </div> ``` ``` .container { display: flex; } .left, .right { width: 300px; } .middle { flex: 1 1 auto; } ``` 通过设置外层容器的`display: flex;`和子元素的相应样式,就可以实现使用flex布局的三等分布局。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [flex实现等分布局](https://blog.csdn.net/az44yao/article/details/117676640)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [css3弹性盒子flex实现布局实现](https://download.csdn.net/download/weixin_38726441/14919543)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值