【发布时间】:2021-08-10 05:01:42
【问题描述】:
我制作了一个滑块,如果鼠标在其上垂直滚动,它会水平滚动。
// move slider horizontally on vertical scroll
const target = document.querySelector('.slider')
target.addEventListener('wheel', event => {
const toLeft = event.deltaY < 0 && target.scrollLeft > 0
const toRight = event.deltaY > 0 && target.scrollLeft < target.scrollWidth - target.clientWidth
if (toLeft || toRight) {
event.preventDefault()
target.scrollLeft += event.deltaY
}
})
.box {
background: #ccc;
height: 800px;
}
.slider {
border: 5px solid black;
background: #fff;
overflow-x: scroll;
}
.item-wrap {
height: 1000px;
display: flex;
}
.item {
min-width: 240px;
height: 240px;
font-size: 140px;
border: 2px solid #d1d1d1;
border-radius: 5px;
padding: 5px;
margin: 5px;
line-height: 1.6;
text-align: center;
}
/* add classes */
.test {
position: fixed;
}
<div class="box"></div>
<div class="slider">
<div class="item-wrap">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
</div>
</div>
<div class="box"></div>
当从页面顶部向下滚动到滑块顶部时,我希望滑块保持固定,直到所有元素都滚动。当最后一项滚动时(在本例中为 9),我希望窗口继续滚动到页面底部。
然后当用户从页面底部滚动到滑块底部时,我希望滑块保持固定,直到所有元素都滚动。当最后一项滚动时(在本例中为 1),我希望窗口继续滚动到页面顶部。
在this link 上滚动到页面底部显示我正在尝试模仿的内容。
我注意到他们一直在监听窗口滚动,直到滑块的顶部碰到视口的顶部。然后滑块的位置为fixed。当用户从页面底部滚动到滚动条底部时的概念相同。
但我不确定如何实现动态fixed位置。
【问题讨论】:
-
也许这支笔能帮到你codepen.io/chriscoyier/pen/WmyKWO
标签: javascript html css