【常见的页面布局(两栏布局、三栏布局)】

两栏布局,左边定宽,右边自适应

列举以下案例,复制代码,看效果就完了

(1) 左边左浮动,右边添加一个oveflow:hidden;就变成BFC清除左侧浮动元素的影响

//html  
<div class="left">左边定宽</div>
<div class="right">右边自适应</div>

//样式
 .left{
    float: left;
    width: 200px;
    background: green;
}
.right{
    overflow: hidden;
    background: red;
}

三栏布局,圣杯布局、双飞翼布局

圣杯布局和双飞翼布局都是用来做三栏布局的,左右定宽,中间自适应

要是这两个布局的话首先需要具备:

  • 两侧宽度固定,中间宽度自适应
  • 中间部分在DOM结构上优先,以便先行渲染
  • 允许三列中的任意一列成为最高列
  • 只需要使用一个额外的<div >外层标签
圣杯布局

原理:

为了中间div内容不被遮挡,将中间div设置了左右padding-left和padding-right后,将左右两个div用相对布局position: relative并分别配合right和left属性,以便左右两栏div移动后不遮挡中间div

效果如下:
在这里插入图片描述
dom结构


<div class="HolyGrail">
    <header>#header</header>
    <div class="wrap">
      <nav class="left">left 宽度固定200px</nav>
      <main class="content">center 宽度自适应</main>
      <aside class="right">right 宽度固定200px</aside>
    </div>
    <footer>#footer</footer>
  </div>

css样式

  .HolyGrail {
    text-align: center;
    display: flex;
    min-height: 40vh;
    flex-direction: column;
  }
  .HolyGrail .wrap {
    display: flex;
    flex: 1;
  }
  .HolyGrail .content {
    background: #eee;
    flex: 1;
  }
  .HolyGrail .left,.HolyGrail .right {
    background:lightgreen;
    flex: 0 0 200px;
  }
  .HolyGrail header,.HolyGrail footer{
    background:#999;
    height: 50px;
    line-height: 50px;
  }
  .HolyGrail .left {
    background:salmon;
  }
双飞翼布局

效果图如下:
在这里插入图片描述

dom结构
<div>
        <div class="head">我是头部</div>
        <div class="middle_container">
            <div class="middle">我是中间</div>
        </div>
        <div class="left">我是左边栏</div>
        <div class="right">我是右边栏</div>
        <div class="footer">我是底部</div>
    </div>

css样式

   * {
            margin: 0;
            text-align: center;
        }

        .head,
        .footer {
            width: 100%;
            height: 100px;
        }

        .middle_container {
            width: 100%;
        }

        .head {
            background-color: aliceblue;
        }

        .footer {
            clear: both;
            background-color: antiquewhite;
        }

        .left,
        .right,
        .middle_container {
            float: left;
            height: 150px;
        }

        .left,
        .right {
            width: 100px;
        }

        .left {
            background-color: aqua;
            margin-left: -100%;
        }

        .right {
            background-color: brown;
            margin-left: -100px;
        }

        .middle {
            background-color: chartreuse;
            margin: 0 100px;
            height: inherit;
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值