html - 垂直滚动捕捉部分内的水平滚动捕捉部分,由于 ul 和 div 的原因,上方有空白空间

标签 html css list horizontal-scrolling scroll-snap

所以我有垂直滚动捕捉部分,它们都是 100vh 和 100vw。我正在寻找单独页面的外观。其中一个部分有一个水平滚动部分,与 100vh 和 100vw 部分的想法相同。好吧,在我添加 ul 标签之前,一切都很好。 div也是如此。然后水平部分的高度开始变化。它们仍然是页面宽度的 100%,但高度会有所不同。滚动捕捉仍然有效。继承人的代码:

HTML

<body>
  <main>
    <section class="v-child">
      <h1>Section 1</h1>
    </section>

    <section class="v-child h-sect">
      <div class="h-child">
        <h2>Horizontal Section 1</h2>
        <ul class="list">
          <li>Item 1</li>
          <li>Item 2</li>
        </ul>
      </div>

      <div class="h-child">
        <h2>Horizontal Section 2</h2>
        <ul class="list">
          <li>Thing 1</li>
          <li>Thing 2</li>
        </ul>
      </div>

      <div class="h-child">
        <h2>Horizontal Section 3</h2>
        <div class="list">
          <h3>Item 1</h3>
          <h3>Item 2</h3>
        </div>
      </div>
    </section>

    <section class="v-child">
      <h1>Section 3</h1>
    </section>
  </main>
</body>

CSS

顺便说一下,我将 scroll-snap-type: y mandatory; 定位到 html 容器的原因是,如果你定位到 body、main 或 a,它似乎不起作用专用的 div 容器。我认为这与当前问题无关,但我认为我会提及它,因为我认为这是一种奇怪的行为。

html{
  scroll-snap-type: y mandatory;
}
body{
  margin: 0;
}
.v-child{
  scroll-snap-align: start;
  background: green;
  height: 100vh;
  width: 100vw;
}
h1{
  margin: 0;
}
.h-sect{
  scroll-snap-type: x mandatory;
  overflow-x: scroll;
  overflow-y: hidden;
  white-space: nowrap;
}
.h-child{
  display: inline-block;
  scroll-snap-align: center;
  margin: 0;
  height: 100%;
  width: 100%;
  background: yellow;
}
.list{
  margin: 0;
}

我试着给列表 0 边距,我认为这并不重要,但看起来它并没有因为什么都没有改变。 ul 标签形式的列表和内部带有 h3 的 div 似乎都改变了 h-child 部分的高度。据我了解,div 在它们自己或类似的东西之后创建了一个空行。我不太明白。好吧,如果我将 div 更改为 font-size 0,则所有 h-child 部分的高度都相同,但是所有内容都是不可见的,因为所有 font-size 现在都是 0。

我还尝试将 .list 设置为 font-size 0 并且这也有效。所有部分的大小都合适。然后我将 16px 的字体大小添加到列表中的元素,而不是列表本身,并再次在每个部分的顶部添加空白区域。这让我感到困惑,这怎么可能。 .list 位于 h-child 部分内。为什么它会改变它的高度?!那应该不可能吧!我几乎对这种布局失去了所有希望。我想不通。

最佳答案

问题代码好像是这部分。 <h3>有属性(property)display:block这会导致您的页面出现奇怪的高度。您是否必须为允许您使用不同标签的中间部分重新设计布局容器。或者您可以简单地更改 <h3>标记给其他人,例如 <span>并为其分配文本字体和粗体

  <h3>Item 1</h3>
  <h3>Item 2</h3>

关于html - 垂直滚动捕捉部分内的水平滚动捕捉部分,由于 ul 和 div 的原因,上方有空白空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59203354/

相关文章:

css - 调整没有初始值的div

html - 将 div 并排放置,生成自己的宽度以填充父 div

html - 将 Google 字体导入 HTML 服务

html - CSS 单独的背景统计

javascript - 在 JQuery 中引用 ASP.NET 元素

list - 是否可以使 sencha touch 2.0 列表组件的项目可扩展?

css - 切换 div 下推其他 div

php - 如何使用 MySQL 制作 PHP/HTML 表单?

python - 如何在 Python 中使用循环反转列表的一部分?

python - python 中大型列表操作的性能更高