scroll-snap-type не работает, когда он назначен элементу body. Вы можете исправить это, назначив вместо этого тег html:
html {
scroll-snap-type: y mandatory;
}
body{
font-family: Verdana, Geneva, Tahoma, sans-serif;
display: flex;
flex-direction: column;
align-items: center;
margin: 0;
padding: 0;
width: 80%;
margin: auto;
}
Но есть проблема: раньше она работала нормально, но странно себя ведет в Chrome после недавнего обновления до версии 81 (для меня проблемы начались вчера).
Другой подход состоит в том, чтобы обернуть все в элементе контейнера и назначить для него тип scroll-snap-type:
.body {
margin: 0; /* prevents a double scroll bar */
}
.scrollsnap-container {
max-height: 100vh;
overflow-y: scroll;
scroll-snap-type: mandatory; /* for older browsers */
scroll-snap-points-y: repeat(100vh); /* for older browsers */
scroll-snap-type: y mandatory;
}
.scrollsnap-section {
height: 100vh;
scroll-snap-align: start;
position: relative;
}
<div class="scrollsnap-container">
<section id="slide-1" class="scrollsnap-section">
<h2>slide 1</h2>
</section>
<section id="slide-2" class="scrollsnap-section">
<h2>slide 2</h2>
</section>
<section id="slide-3" class="scrollsnap-section">
<h2>slide 3</h2>
</section>
<section id="slide-4" class="scrollsnap-section">
<h2>slide 4</h2>
</section>
<section id="slide-5" class="scrollsnap-section">
<h2>slide 5</h2>
</section>
</div>
Это кажется работать лучше для меня.