html - 无法将水平滚动捕捉更改为垂直滚动捕捉

标签 html css scroll-snap

我找到了这个codepen ,但它是水平的。当我试图使其垂直时,它不起作用。

Pen我在以下位置找到了代码:

// None!
/* Hide the scroll bars */

body {
  overflow-y: hidden;
}

.slides {
  /* We set the scroll snapping */
  scroll-snap-type: x mandatory;
  /* Necessary for mobile scrolling */
  -webkit-overflow-scrolling: touch;
  /* For layout purposes */
  display: flex;
  /* To allow horizontal scrolling */
  overflow-x: scroll;
}

section {
  /* For styling purposes */
  height: 100vh;
  min-width: 100vw;
  display: flex;
  align-items: center;
  justify-content: center;
  background-repeat: no-repeat;
  background-size: cover;
  /* Set where the snapping should happen */
  scroll-snap-align: start;
}


/* Styling for the sections */

section h2 {
  font-family: system-ui, sans-serif;
  font-size: 2rem;
  color: #1a1a1a;
  font-weight: 100;
}

section h3 {
  font-family: system-ui, sans-serif;
  font-size: 2rem;
  color: #ffffff;
  font-weight: 100;
}

.section-1 {
  background-image: url('https://images.unsplash.com/photo-1524260855046-f743b3cdad07?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1401&q=80')
}

.section-2 {
  background-image: url('https://images.unsplash.com/34/BA1yLjNnQCI1yisIZGEi_2013-07-16_1922_IMG_9873.jpg?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1351&q=80')
}

.section-3 {
  background-image: url('https://images.unsplash.com/photo-1500964757637-c85e8a162699?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1378&q=80')
}

.section-4 {
  background-image: url('https://images.unsplash.com/photo-1501791330673-603715379ded?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80')
}
<main class="slides">
  <section class="section-1">
    <h2>Scroll right to see it in action 👉</h2>
  </section>
  <section class="section-2">
    <h3>Woah! That's a cool effect!</h3>
  </section>
  <section class="section-3">
    <h2>And no Javascript! 🤓</h2>
  </section>
  <section class="section-4">
    <h3>How cool is that?</h3>
  </section>
</main>

我尝试将水平滚动捕捉更改为垂直滚动捕捉:

// None!
/* Hide the scroll bars */

body {
  overflow-x: hidden;
}

.slides {
  /* We set the scroll snapping */
  scroll-snap-type: y mandatory;
  /* Necessary for mobile scrolling */
  -webkit-overflow-scrolling: touch;
}

section {
  /* For styling purposes */
  height: 100vh;
  min-width: 100vw;
  align-items: center;
  justify-content: center;
  background-repeat: no-repeat;
  background-size: cover;
  /* Set where the snapping should happen */
  scroll-snap-align: start;
}


/* Styling for the sections */

section h2 {
  font-family: system-ui, sans-serif;
  font-size: 2rem;
  color: #1a1a1a;
  font-weight: 100;
}

section h3 {
  font-family: system-ui, sans-serif;
  font-size: 2rem;
  color: #ffffff;
  font-weight: 100;
}

.section-1 {
  background-image: url('https://images.unsplash.com/photo-1524260855046-f743b3cdad07?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1401&q=80')
}

.section-2 {
  background-image: url('https://images.unsplash.com/34/BA1yLjNnQCI1yisIZGEi_2013-07-16_1922_IMG_9873.jpg?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1351&q=80')
}

.section-3 {
  background-image: url('https://images.unsplash.com/photo-1500964757637-c85e8a162699?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1378&q=80')
}

.section-4 {
  background-image: url('https://images.unsplash.com/photo-1501791330673-603715379ded?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80')
}
<main class="slides">
  <section class="section-1">
    <h2>Scroll down to see it in action 👉</h2>
  </section>
  <section class="section-2">
    <h3>Woah! That's a cool effect!</h3>
  </section>
  <section class="section-3">
    <h2>And no Javascript! 🤓</h2>
  </section>
  <section class="section-4">
    <h3>How cool is that?</h3>
  </section>
</main>
我尝试将所有 x 更改为 y,将所有 y 更改为 x,以及不同的组合,但我仍然找不到解决方案。

最佳答案

您的父元素没有固定的高度,并且会扩展以适合子元素。除此之外,您还需要为父元素设置 overflow-y:scroll; :

// None!
/* Hide the scroll bars */

body {
  margin: 0;
  padding: 0;
  overflow-x: hidden;
}

.slides {
  /* We set the scroll snapping */
  scroll-snap-type: y mandatory;
  /* Necessary for mobile scrolling */
  -webkit-overflow-scrolling: touch;
  display: flex;
  flex-flow: column;
  /* hide horizontal overflow */
  overflow-x: hidden;
  /* allow vertical overflow */
  overflow-y: scroll;
  /* set the height for parent, overwise it will expand to fit children */
  height: 100vh;
}

section {
  /* For styling purposes */
  display: flex;
  min-height: 100vh;
  width: 100vw;
  align-items: center;
  justify-content: center;
  background-repeat: no-repeat;
  background-size: cover;
  /* Set where the snapping should happen */
  scroll-snap-align: start;
}


/* Styling for the sections */

section h2 {
  font-family: system-ui, sans-serif;
  font-size: 2rem;
  color: #1a1a1a;
  font-weight: 100;
}

section h3 {
  font-family: system-ui, sans-serif;
  font-size: 2rem;
  color: #ffffff;
  font-weight: 100;
}

.section-1 {
  background-image: url('https://images.unsplash.com/photo-1524260855046-f743b3cdad07?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1401&q=80')
}

.section-2 {
  background-image: url('https://images.unsplash.com/34/BA1yLjNnQCI1yisIZGEi_2013-07-16_1922_IMG_9873.jpg?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1351&q=80')
}

.section-3 {
  background-image: url('https://images.unsplash.com/photo-1500964757637-c85e8a162699?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1378&q=80')
}

.section-4 {
  background-image: url('https://images.unsplash.com/photo-1501791330673-603715379ded?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80')
}
<main class="slides">
  <section class="section-1">
    <h2>Scroll down to see it in action 👉</h2>
  </section>
  <section class="section-2">
    <h3>Woah! That's a cool effect!</h3>
  </section>
  <section class="section-3">
    <h2>And no Javascript! 🤓</h2>
  </section>
  <section class="section-4">
    <h3>How cool is that?</h3>
  </section>
</main>

添加其他 CSS 属性只是为了美观,请随意忽略。

关于html - 无法将水平滚动捕捉更改为垂直滚动捕捉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67180281/

相关文章:

javascript - Scroll Snap for div 看起来像 HTML 中的 iPhone

javascript - 确定 snap-scroll 元素的 snap 滚动事件是否完成

javascript - kinetic.js 绝对线位置而不是相对位置

asp.net - 在 asp 和 aspx 页面中升级 css 类的最佳方法

jquery - 更改已检查的元素(父元素未共享)

html - 如何让div随内容增长?

html - 在移动设备上有趣的网站

javascript - 使用 JavaScript,如何从句子 X 中获取 Y 字母计数?

css - 如何将待处理的空白行填满整页