所以我的垂直滚动捕捉部分都是 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 或专用 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 部分内。为什么它的高度变了?!那应该是不可能的!我几乎对这种布局失去了所有希望。我想不明白。
有关此操作的示例,您可以在项目部分查看我的投资组合网站kudlanov.com(这是一项正在进行的工作)。我在那里有更多的元素和样式,但我在上面的代码上进行了测试以查明问题,它似乎与.lists有关。