【发布时间】:2021-03-02 13:47:33
【问题描述】:
我正在使用:
html {
scroll-behavior: smooth;
}
启用平滑滚动到 html 锚标记。我还在 css 中使用 scroll-snap-type 和 scroll-snap-align 启用垂直滚动捕捉,如下面的代码所示。问题是我无法让这两种行为都起作用。要启用滚动捕捉,我需要在包含 div 上设置一个高度。这似乎禁用了平滑滚动到 html 锚标记。您可以在下面的 sn-p 中全屏进行试验。如果您在下面的 sn-p 中删除 height: 100vh;,页面将平滑滚动到锚点,但不会滚动捕捉。如果包含它,页面将滚动快照,但会跳转到锚点而不是平滑滚动。
html {
scroll-behavior: smooth;
}
main {
height: 100vh;
overflow: scroll;
scroll-snap-type: y mandatory;
}
section {
height: 400px;
scroll-snap-align: start;
}
nav {
position: fixed;
top: 0;
color: white;
width: 100%;
}
li {
display: inline-block;
list-style-type: none;
}
a:visited {
color: white;
}
.one {
background-color: red;
}
.two {
background-color: blue;
}
.three {
background-color: grey;
}
.four {
background-color: green;
}
<nav>
<ul>
<li><a href="#section-2">section 2</a></li>
<li><a href="#section-3">section 3</a></li>
<li><a href="#section-4">section 4</a></li>
</ul>
</nav>
<main>
<section id="section-1" class="one">
</section>
<section id="section-2" class="two">
</section>
<section id="section-3" class="three">
</section>
<section id="section-4" class="four">
</section>
</main>
【问题讨论】: