基础三栏布局

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>三栏布局</title>
        <style>
            .cup:after,
            .fly:after {
                content: '';
                display: block;
                clear: both;
            }
            .cup,
            .fly,
            .middle,
            .left,
            .right {
                height: 200px;
            }
            .middle,
            .left,
            .right {
                position: relative;
                float: left;
            }
            .middle {
                background: skyblue;
            }
            .left {
                background: red;
            }
            .right {
                background: tomato;
            }
            .cup {
                padding: 0 250px 0 150px;
            }
            .cup .middle {
                width: 100%;
                min-width: 400px;
            }
            .cup .left {
                width: 150px;
                margin-left: -100%;
                left: -150px;
            }
            .cup .right {
                width: 250px;
                margin-left: -250px;
                right: -250px;
            }
            .fly .middle {
                width: 100%;
            }
            .fly .left {
                width: 150px;
                margin-left: -100%;
            }
            .fly .right {
                width: 250px;
                margin-left: -250px;
            }
            .fly .middle-wrap {
                margin: 0 250px 0 150px;
            }
            .flex {
                display: flex;
            }
            .flex .left {
                order: -1;
                width: 150px;
            }
            .flex .middle {
                width: calc(100% - 400px);
            }
            .flex .right {
                width: 250px;
            }
            .grid {
                display: grid;
                grid-template-columns: 150px auto 250px;
                grid-template-areas: 'a b c';
            }
            /* 以下三种方式都可以排序,order 方式是偶然发现的 */
            .grid .middle {
                /* grid-column-start: 2; */
                /* grid-area: b; */
            }
            .grid .left {
                /* grid-column-start: 1;
                grid-row-start: 1; */
                /* grid-area: a; */
                order: -1;
            }
            .grid .right {
                /* grid-column-start: 3;
                grid-row-start: 1; */
                /* grid-area: c; */
            }
        </style>
    </head>
    <body>
        <div>
            <p>圣杯</p>
            <div class="cup">
                <div class="middle">middle</div>
                <div class="left">left</div>
                <div class="right">right</div>
            </div>
        </div>
        <div>
            <p>双飞翼</p>
            <div class="fly">
                <div class="middle">
                    <div class="middle-wrap">middle</div>
                </div>
                <div class="left">left</div>
                <div class="right">right</div>
            </div>
        </div>
        <div>
            <p>flex</p>
            <div class="flex">
                <div class="middle">middle</div>
                <div class="left">left</div>
                <div class="right">right</div>
            </div>
        </div>
        <div>
            <p>grid</p>
            <div class="grid">
                <div class="middle">middle</div>
                <div class="left">left</div>
                <div class="right">right</div>
            </div>
        </div>
    </body>
</html>
Last Updated:
Contributors: af, zhangfei