前端CSS经典三列布局

84 阅读1分钟
  1. 普通布局

    .wrap{
        overflow: hidden;
    }
    .left,
    .middle,
    .right {
        float: left;
    }
    
    .left,
    .right {
        width: 200px;
        height: 200px;
        background-color: aqua;
    }
    
    .middle {
        width: calc(100% - (200px * 2));
        height: 300px;
        background-color: antiquewhite;
    }
    
    <div class="wrap">
        <div class="left"></div>
        <div class="middle"></div>
        <div class="right"></div>
    </div>
    
  2. 圣杯布局

    :root {
        --width: 200px;
    }
    
    .wrap {
        overflow: hidden;
        padding: 0 200px;
    }
    
    .left,
    .middle,
    .right {
        float: left;
    }
    
    .left,
    .right {
        position: relative;
        top: 0;
        width: var(--width);
        height: 200px;
        background-color: aqua;
    }
    
    .middle {
        width: 100%;
        height: 300px;
        background-color: antiquewhite;
    }
    
    .left {
        left: calc(0% - var(--width));
        margin-left: -100%;
    }
    
    .right {
        right: calc(0% - var(--width));
        margin-left: calc(0% - var(--width));
    }
    
    <div class="wrap">
        <div class="middle"></div>
        <div class="left"></div>
        <div class="right"></div>
    </div>
    
  3. 双飞翼布局

    :root{
        --width: 200px;
    }
    
    .wrap {
        overflow: hidden;
    }
    
    .left,
    .middle,
    .right {
        float: left;
    }
    
    .left,
    .right {
        width: var(--width);
        height: 200px;
        background-color: aqua;
    }
    
    .middle {
        width: 100%;
    }
    .content{
        margin: 0 var(--width);
        height: 300px;
        background-color: antiquewhite;
    }
    .left{
        margin-left: -100%;
    }
    .right{
        margin-left: calc(0% - var(--width));
    }
    
    <div class="wrap">
        <div class="middle">
            <div class="content"></div>
        </div>
        <div class="left"></div>
        <div class="right"></div>
    </div>
    
  4. 弹性布局

    * {
        margin: 0;
        padding: 0;
    }
    
    .app {
        display: flex;
    }
    
    .left,
    .right {
        flex-shrink: 0;
        width: 260px;
    }
    
    .left .inner,
    .right .inner {
        height: 200px;
        background-color: aqua;
    }
    
    .middle {
        flex: 1;
        order: 1;
        min-width: 1100px;
    }
    
    .middle .inner {
        height: 300px;
        background-color: bisque;
    }
    
    .right {
        order: 2;
    }
    
    <div class="app">
        <div class="wrap middle">
            <div class="inner"></div>
        </div>
        <div class="wrap left">
            <div class="inner"></div>
        </div>
        <div class="wrap right">
            <div class="inner"></div>
        </div>
    </div>
    
  5. 网格布局

    * {
        margin: 0;
        padding: 0;
    }
    
    .app {
        overflow: hidden;
        display: grid;
        grid-template-columns: 260px 1fr 260px;
        grid-template-areas: "left middle right";
    }
    
    .left .inner,
    .right .inner {
        height: 200px;
        background-color: aqua;
    }
    
    .middle {
        grid-area: middle;
    }
    
    .middle .inner {
        height: 300px;
        background-color: bisque;
    }
    
    .left {
        grid-area: left;
    }
    
    .right {
        grid-area: right;
    }
    
    <div class="app">
        <div class="middle">
            <div class="inner"></div>
        </div>
        <div class="left">
            <div class="inner"></div>
        </div>
        <div class="right">
            <div class="inner"></div>
        </div>
    </div>