一直在玩滚动捕捉,看起来用 JS 编写功能可以省去很多麻烦。
这是一个挑战,有没有人找到一种方法来选择性地选择要捕捉的孩子和自由滚动的孩子?
我认为这对于包含无法从滚动捕捉中受益的部分的内容丰富的页面很有用。
这是问题的一个例子: https ://codepen.io/nodelondon/pen/YzxWqLG
html {
background: #f2f2f2;
}
.scroll-container,
.scroll-area-none,
.scroll-area {
max-width: 850px;
height: 600px;
font-size: 60px;
}
.scroll-area-none {
scroll-snap-align: none;
background-color: black;
}
.scroll-container {
overflow: auto;
scroll-snap-type: y mandatory;
}
.scroll-area {
scroll-snap-align: start;
}
.scroll-container,
.scroll-area-none,
.scroll-area {
margin: 0 auto;
}
.scroll-area-none,
.scroll-area {
display: flex;
align-items: center;
justify-content: center;
color: white;
}
.scroll-area:nth-of-type(4n+1) {
background: #49b293;
}
.scroll-area:nth-of-type(4n+2) {
background: #c94e4b;
}
.scroll-area:nth-of-type(4n+3) {
background: #4cc1be;
}
.scroll-area:nth-of-type(4n+4) {
background: #8360A6;
}
<div class="support-scrollsnap"></div>
<div class="scroll-container">
<div class="scroll-area-none">-1</div>
<div class="scroll-area-none">0</div>
<div class="scroll-area">1</div>
<div class="scroll-area">2</div>
<div class="scroll-area">3</div>
<div class="scroll-area">4</div>
<div class="scroll-area-none">5</div>
<div class="scroll-area-none">6</div>
</div>
理想情况下,带有 -1,0,5 和 6 的框应该能够自由滚动,但它们之间的强制框会一直拉你回来。
如果您正在考虑建议将其更改为接近,这是一个很好的建议,但是,对于 IOS Safari(对我来说也是在 OSX Safari 上),不幸的是,它仍然会强制滚动对齐设置为的框上的滚动对齐无论您在页面上的哪个位置开始。