圣杯布局、双飞翼布局以及Flex

圣杯布局

实现方法

1、HTML 结构中,中间内容区域优先渲染。
2、使用 float 使三列浮动。
3、对左右两列使用负边距,使其上浮到中间列的两侧。
4、使用相对定位调整左右两列的位置。
<!DOCTYPE html>
<html lang="zh">
  <head>
    <meta charset="UTF-8" />
    <title>圣杯布局示例</title>
    <style>
      body {
        min-width: 550px;
      }
      #container {
        padding-left: 200px;
        padding-right: 150px;
      }
      #container .column {
        float: left;
      }
      #center {
        width: 100%;
      }
      #left {
        width: 200px;
        margin-left: -100%;
        position: relative;
        right: 200px;
      }
      #right {
        width: 150px;
        margin-right: -150px;
      }
      #footer {
        clear: both;
      }
    </style>
  </head>
  <body>
    <div id="header">Header</div>
    <div id="container">
      <div id="center" class="column">Center</div>
      <div id="left" class="column">Left</div>
      <div id="right" class="column">Right</div>
    </div>
    <div id="footer">Footer</div>
  </body>
</html>

双飞翼布局

实现方法

1、HTML 结构中,中间内容区域优先渲染,并包含一个内部容器。
2、使用 float 使三列浮动。
3、对左右两列使用负边距,使其上浮到中间列的两侧。
4、使用内部容器的 margin 为左右两列腾出空间。
<!DOCTYPE html>
<html lang="zh">
  <head>
    <meta charset="UTF-8" />
    <title>双飞翼布局示例</title>
    <style>
      body {
        min-width: 550px;
      }
      .column {
        float: left;
      }
      #main {
        width: 100%;
      }
      #main-wrap {
        margin: 0 190px 0 190px;
      }
      #left {
        width: 190px;
        margin-left: -100%;
      }
      #right {
        width: 190px;
        margin-left: -190px;
      }
    </style>
  </head>
  <body>
    <div id="header">Header</div>
    <div id="main" class="column">
      <div id="main-wrap">Center</div>
    </div>
    <div id="left" class="column">Left</div>
    <div id="right" class="column">Right</div>
    <div id="footer">Footer</div>
  </body>
</html>

Flex 布局

<!DOCTYPE html>
<html lang="zh">
  <head>
    <meta charset="UTF-8" />
    <title>Flex 三栏布局示例</title>
    <style>
      body {
        display: flex;
        flex-direction: column;
        min-height: 100vh;
        margin: 0;
      }
      #header,
      #footer {
        background-color: #f0f0f0;
        padding: 20px;
      }
      #content {
        display: flex;
        flex: 1;
      }
      #left,
      #right {
        background-color: #e0e0e0;
        width: 200px;
      }
      #left {
        order: -1;
      }
      #center {
        flex: 1;
        background-color: #d0d0d0;
        padding: 20px;
      }
    </style>
  </head>
  <body>
    <div id="header">Header</div>
    <div id="content">
      <div id="center">Center</div>
      <div id="left">Left</div>
      <div id="right">Right</div>
    </div>
    <div id="footer">Footer</div>
  </body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值