html - 在移动设备上水平滚动仅针对某些容器而不是整个页面

标签 html css

我需要一些卡片水平滚动,但页面的其余部分对于移动设备垂直滚动(稍后将在移动应用程序中实现)。当我为移动版本使用开发工具时,一切似乎都有效。但是当我在手机上打开时,所有内容都水平滚动,而不仅仅是容器。这是示例: https://codepen.io/Ilima/pen/EdYYZP 我怎样才能做到这一点?

*{
  margin: 0;
  padding: 0;
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
}
.scroll {
  padding: 20px;
  height: 240px;
  width:calc(100% -5px);
  background-color: #fff;
  white-space: nowrap;
  overflow-y: hidden;
  overflow-x: scroll;
  -webkit-overflow-scrolling: touch;
}
.block {
  width: 200px;
  height: 200px;
  background: #ccc;
  display: inline-block;
  margin: 0 20px;
  box-shadow: 0px 3px 4px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(0, 0, 0, 0.2);
  
}
.test {
  background: #EEEEEE;
  height: 1000px;
  overflow-x: hidden;
  width: 100%;
}
.test p {
  display: block;
  margin: 40px;
}
<div class="scroll">
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
</div>

<div class="test">
  <p style="overflow-y: auto;">This should not scroll horizontally on mobile</p>
</div>

最佳答案

你是如此接近。滚动容器的宽度会影响移动端主体的整体宽度。因为 .scroll 有一个百分比宽度,这意味着它是相对于父宽度的。

您要做的是确保 html/body 的宽度不超过视口(viewport)宽度。

html,
body {
  width: 100vw;
}

添加它将确保正文不超过视口(viewport)的宽度,然后滚动应该如您在移动设备上所期望的那样工作。您还可以在 .scroll 容器上设置 width: 100vw;,它也会按预期工作。由于这是移动设备,您最好设置 html/body。

关于html - 在移动设备上水平滚动仅针对某些容器而不是整个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52525663/

相关文章:

javascript - 如何将我的 HTML 表单提交与我的 JavaScript 表单更新分开?

jquery - 在 jQuery 中访问相同 ID 的多个元素

html - 在我选择下一张之前,我的图像 slider 不显示第一张图片

javascript - 当您使用 javascript 或 jquery 将鼠标悬停在上方时,如何使图像或按钮发光?

改变CSS的Javascript

javascript - ionic 应用程序的图像不显示在设备中

css - 将 <div> 高度设置为 100% 在桌面上有效但在平板电脑上无效?

css - 防止在 JQuery Mobile 中的文本字段前后换行

javascript - 确定 DOM 元素可能增长到的最大宽度?

css - 样式化可放置在页面中任何位置的元素的最佳实践