首页 > 解决方案 > 如何创建水平滚动容器包含多行

问题描述

我试图制作一个数据网格,其中粘性导航栏可以与它下面的内容一起水平滚动。然而,行为在两个场景中发生了变化。

那么我应该怎么做才能让他们在这两种情况下都表现得正确。

我尝试过的其他解决方案:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .grid {
            height: 60px;
            width: 200px;
            overflow: auto;
        }
        .subgrid {

        }
        .nav {
            position: sticky;
            top: 0;
            background: #da1039;
        }
        .rows {
            display: flex;
            flex-direction: column;
            flex-wrap: nowrap;
            background: #00b89c;
        }
        .row {
            display: flex;
            flex-direction: row;
            flex-wrap: nowrap;
            justify-content: space-evenly;
        }
        .rowitem {
            border: 1px solid;
            min-width: 20px;
        }
    </style>
</head>
<body>
    <div class="grid">
        <div class="subgrid">
        <div class="nav">
            <div class="row">
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
            </div>
        </div>
        <div class="rows">
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
        </div>
        </div>
    </div>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .grid {
            height: 60px;
            width: 50px;
            overflow: auto;
        }
        .subgrid {

        }
        .nav {
            position: sticky;
            top: 0;
            background: #da1039;
        }
        .rows {
            display: flex;
            flex-direction: column;
            flex-wrap: nowrap;
            background: #00b89c;
        }
        .row {
            display: flex;
            flex-direction: row;
            flex-wrap: nowrap;
            justify-content: space-evenly;
        }
        .rowitem {
            border: 1px solid;
            min-width: 20px;
        }
    </style>
</head>
<body>
    <div class="grid">
        <div class="subgrid">
        <div class="nav">
            <div class="row">
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
            </div>
        </div>
        <div class="rows">
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
        </div>
        </div>
    </div>
</body>
</html>

标签: javascripthtmlcssflexbox

解决方案


您实际上可以将两者结合起来。

例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .grid-1 {
            height: 60px;
            width: 200px;
            overflow: auto;
        }

        .grid-2 {
            height: 60px;
            width: 900px;
            overflow: auto;
        }
        /* here */
        .nav {
            min-width: fit-content;
            max-width: 100%;
            position: sticky;
            top: 0;
            background: #da1039;
        }
        .rows {
            min-width: fit-content;
            max-width: 100%;
            display: flex;
            flex-direction: column;
            flex-wrap: nowrap;
            background: #00b89c;
        }
        .row {
            display: flex;
            flex-direction: row;
            flex-wrap: nowrap;
            justify-content: space-evenly;
        }
        .rowitem {
            border: 1px solid;
            min-width: 20px;
        }
    </style>
</head>
<body>
    <div class="grid-1">
        <div class="nav">
            <div class="row">
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
            </div>
        </div>
        <div class="rows">
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
        </div>
        </div>
    </div>
    <div style="height: 20px"></div>
    <div class="grid-2">
        <div class="nav">
            <div class="row">
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
                <div class="rowitem">HHH</div>
            </div>
        </div>
        <div class="rows">
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
            <div class="row">
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
                <div class="rowitem">AAA</div>
            </div>
        </div>
    </div>
</body>
</html>


推荐阅读