在父元素的一个子元素上水平滚动

Horizontal scroll on one child element in parent

我有一个包含多个部分的页面(参见代码片段或 JSFiddle example)。

用户应该只能在页面上垂直滚动。

现在,除此之外,我只想水平滚动浏览一个部分:项目(不影响页面的其余部分)。这意味着,除了项目部分,其余部分将不得不保持不变。

如何实现这种局部水平滚动?

.container {
  width: 500px;
  height: 100%;
  overflow-x: scroll;
  background-color: lightgrey;
  padding: 20px;
}

.projects {
  width: 960px;
}

.project {
  display: inline-block;
  float: left;
  width: 300px;
  margin: 0 20px 20px 0;
  background-color: grey;
}
<div class="container">
    <h1>Page</h1>
    <div class="main">
        <h2>Main</h2>
        <p>Lorem ipsum dolor sit amet.</p>
    </div>
    <div class="projects">
        <h2>Projects</h2>
        <div class="project">
            <p>Project</p>
        </div>
        <div class="project">
            <p>Project</p>
        </div>
        <div class="project">
            <p>Project</p>
        </div>
    </div>
</div>

试试这个。

.projects .project-inwrap  {
  width: 100%;
  white-space: nowrap;
  overflow: auto;
}

.container {
  width: 500px;
  height: 100%;
  overflow-x: scroll;
  background-color: lightgrey;
  padding: 20px;
}

.projects .project-inwrap {
  width: 100%;
  white-space: nowrap;
  overflow: auto;
}

.project {
  display: inline-block;
  width: 300px;
  margin: 0 20px 20px 0;
  background-color: grey;
}
<div class="container">
  <h1>Page</h1>
  <div class="main">
    <h2>Main</h2>
    <p>Lorem ipsum dolor sit amet.</p>
  </div>
  <div class="projects">
    <h2>Projects</h2>
    <div class="project-inwrap">
      <div class="project">
        <p>Project</p>
      </div>
      <div class="project">
        <p>Project</p>
      </div>
      <div class="project">
        <p>Project</p>
      </div>
    </div>
  </div>
</div>

试试这个

*{
  box-sizing: border-box;
}
body{
  overflow: hidden;
}

.container {
  width: 500px;
  height: 100vh;
  overflow-x: hidden;
  background-color: lightgrey;
  padding: 20px;
}

.projects {
  width: 100%;
  white-space: nowrap;
  overflow: auto;
}

.project {
  display: inline-block;
  width: 300px;
  margin: 0 20px 20px 0;
  background-color: grey;
}
<div class="container">
    <h1>Page</h1>
    <div class="main">
        <h2>Main</h2>
        <p>Lorem ipsum dolor sit amet.</p>
    </div>
    <div class="projects">
        <h2>Projects</h2>
        <div class="project">
            <p>Project</p>
        </div>
        <div class="project">
            <p>Project</p>
        </div>
        <div class="project">
            <p>Project</p>
        </div>
    </div>
</div>