1. 程式人生 > >兩邊寬度已知,如何讓中間自適應

兩邊寬度已知,如何讓中間自適應

語法 -c class title enter ces layout style margin

共有五種布局方式:

1.浮動布局

2.絕對定位布局

3.flexbox布局

4.表格(table)布局

5.網格 (grid)布局

1.浮動布局

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>頁面布局/兩邊寬度已知,如何讓中間自適應</title>
    <style type="text/css">
    html * {
        padding: 0;
        margin
: 0; } .layout { margin-top: 20px; } .layout div { min-height: 100px; } .layout .left, .layout .right { width: 300px; } .layout .left { background: pink; } .layout .right { background: orange; }
.layout .center { background: #3FE5F0; } </style> </head> <body> <!-- 浮動布局 --> <section class="layout float"> <style type="text/css" media="screen"> .layout.float .left { float: left; } .layout.float .right
{ float: right; } </style> <article class="left-right-center"> <div class="left"></div> <div class="right"></div> <div class="center"> <h1>浮動解決方案</h1> 1.這是一個三欄浮動布局的中間部分 2.這是一個三欄浮動布局的中間部分 3.這是一個三欄浮動布局的中間部分 </div> </article> </section> </body> </html>

2.絕對定位布局

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>頁面布局/兩邊寬度已知,如何讓中間自適應</title>
    <style type="text/css">
    html * {
        padding: 0;
        margin: 0;
    }

    .layout {
        margin-top: 20px;
    }

    .layout div {
        min-height: 100px;
    }

    .layout .left,
    .layout .right {
        width: 300px;
    }

    .layout .left {
        background: pink;
    }

    .layout .right {
        background: orange;
    }

    .layout .center {
        background: #3FE5F0;
    }
    </style>
</head>

<body>
    <!-- 絕對定位解決方案 -->
    <section class="layout absolute">
        <style type="text/css" media="screen">
        .layout.absolute .left-center-right>div {
            position: absolute;
        }

        .layout.absolute .left {
            left: 0;
        }

        .layout.absolute .right {
            right: 0;
        }

        .layout.absolute .center {
            left: 300px;
            right: 300px;
        }
        </style>
        <article class="left-center-right">
            <div class="left"></div>
            <div class="center">
                <h1>絕對定位解決方案</h1> 1.這是一個三欄絕對定位布局中間部分 2.這是一個三欄絕對定位布局中間部分 3.這是一個三欄絕對定位布局中間部分
            </div>
            <div class="right"></div>
        </article>
    </section>
</body>

</html>

3.flexbox布局

flexbox布局教程:Flex 布局教程:語法篇 、Flex 布局教程:實例篇。

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>頁面布局/兩邊寬度已知,如何讓中間自適應</title>
    <style type="text/css">
    html * {
        padding: 0;
        margin: 0;
    }

    .layout {
        margin-top: 20px;
    }

    .layout div {
        min-height: 100px;
    }

    .layout .left,
    .layout .right {
        width: 300px;
    }

    .layout .left {
        background: pink;
    }

    .layout .right {
        background: orange;
    }

    .layout .center {
        background: #3FE5F0;
    }
    </style>
</head>

<body>
    <!-- flexbox 解決方案 -->
    <section class="layout flexbox">
        <style type="text/css" media="screen">
        .layout.flexbox {
            margin-top: 20px;
        }

        .layout.flexbox .left-center-right {
            display: flex;
        }

        .layout.flexbox .left-center-right .center {
            flex: 1;
        }
        </style>
        <article class="left-center-right">
            <div class="left"></div>
            <div class="center">
                <h1>flexbox解決方案</h1> 1.這是一個三欄flexbox布局中間部分 2.這是一個三欄flexbox布局中間部分 3.這是一個三欄flexbox布局中間部分
            </div>
            <div class="right"></div>
        </article>
    </section>
</body>

</html>

4.表格(table)布局

基於CSS屬性display:table的表格布局的使用

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>頁面布局/兩邊寬度已知,如何讓中間自適應</title>
    <style type="text/css">
    html * {
        padding: 0;
        margin: 0;
    }

    .layout {
        margin-top: 20px;
    }

    .layout div {
        min-height: 100px;
    }

    .layout .left,
    .layout .right {
        width: 300px;
    }

    .layout .left {
        background: pink;
    }

    .layout .right {
        background: orange;
    }

    .layout .center {
        background: #3FE5F0;
    }
    </style>
</head>

<body>
    <!-- 表格解決方案 -->
    <section class="layout table">
        <style type="text/css" media="screen">
        .layout.table .left-center-right {
            width: 100%;
            display: table;
            height: 100px;
        }

        .layout.table .left-center-right>div {
            display: table-cell;
        }
        </style>
        <article class="left-center-right">
            <div class="left"></div>
            <div class="center">
                <h1>表格解決方案</h1> 1.這是一個三欄表格布局中間部分 2.這是一個三欄表格布局中間部分 3.這是一個三欄表格布局中間部分
            </div>
            <div class="right"></div>
        </article>
    </section>
</body>

</html>

5.網格 (grid)布局

CSS Grid布局指南

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>頁面布局/兩邊寬度已知,如何讓中間自適應</title>
    <style type="text/css">
    html * {
        padding: 0;
        margin: 0;
    }

    .layout {
        margin-top: 20px;
    }

    .layout div {
        min-height: 100px;
    }

    .layout .left,
    .layout .right {
        width: 300px;
    }

    .layout .left {
        background: pink;
    }

    .layout .right {
        background: orange;
    }

    .layout .center {
        background: #3FE5F0;
    }
    </style>
</head>

<body>
    <!-- 網格布局 -->
    <section class="layout grid">
        <style type="text/css" media="screen">
        .layout.grid .left-center-right {
            display: grid;
            width: 100%;
            grid-template-rows: 100px;
            /* 行高 */
            grid-template-columns: 300px auto 300px;
            /* 我們需要三列,左右兩列各300px,中間自適應 */
        }
        </style>
        <article class="left-center-right">
            <div class="left"></div>
            <div class="center">
                <h1>網格布局解決方案</h1> 1.這是一個三欄網格布局中間部分 2.這是一個三欄網格布局中間部分 3.這是一個三欄網格布局中間部分
            </div>
            <div class="right"></div>
        </article>
    </section>
</body>

</html>

兩邊寬度已知,如何讓中間自適應