代码之家  ›  专栏  ›  技术社区  ›  Searene

使用flex时在div上滚动而不是整个页面

  •  1
  • Searene  · 技术社区  · 6 年前

    我想在 content div而不是整页,我该怎么做?

    <html>
    <head>
    </head>
    <body>
    <div>
      <div style="display: flex">
        <div style="margin-right: 50px">Sidebar</div>
        <div>
          <div>Header</div>
          <div id="content" style="overflow-x: auto; white-space: nowrap">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
            magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
            consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
            pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
            laborum.
          </div>
        </div>
      </div>
    </div>
    </body>
    </html>
    2 回复  |  直到 6 年前
        1
  •  2
  •   Michael Guild    6 年前

    有两个片段:一个是滚动所有内容,另一个是固定标题。

    这是非常简单和干净的没有固定的宽度或css黑客。

    <html>
    <head>
    </head>
    <body>
    <div>
      <div style="display: flex;flex-direction: row;border: solid 10px">
        <div style="margin-right: 50px; background:red">Sidebar</div>
        <div style="background:blue; overflow-x:auto;">
          <div>Header</div>
          <div style="white-space: nowrap;">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
            magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
            consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
            pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
            laborum.
          </div>
        </div>
      </div>
    </div>
    </body>
    </html>

    在这个代码片段中,标题保持不变,只有内容滚动。

    <html>
    <head>
    </head>
    <body>
    <div>
      <div style="display: flex;flex-direction: row;border: solid 10px">
        <div style="margin-right: 50px; background:red">Sidebar</div>
        <div style="background:blue; overflow:hidden">
          <div>Header stays in place</div>
          <div id="content" style="white-space: nowrap; overflow:auto">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
            magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
            consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
            pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
            laborum.
          </div>
        </div>
      </div>
    </div>
    </body>
    </html>
        2
  •  -1
  •   Searene    6 年前

    我终于放弃了 flex 使用 float 来解决这个问题。

    <html>
    <head>
    </head>
    <body style="margin: 0">
    <div style="margin-right: 50px; width: 50px; float: left">Sidebar</div>
    <div style="float: left; width: calc(100% - 100px)">
      <div>Header</div>
      <div id="content" style="overflow-x: auto; white-space: nowrap">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
        magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
        consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
        pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
        laborum.
      </div>
    </div>
    </body>
    </html>