Javascript 如何将滚轮或滚动事件从一个元素转移到另一个元素?
我有一个绝对定位的元素在我的网站的滚动区域。单击此元素将向下滚动页面;它是供那些使用Chromebook的学生使用的,Chromebook会隐藏滚动条,并且不会提供很好的触摸板滚动体验 但是,如果用户(在Chrome上)手动滚动,并且光标滑过绝对位置的按钮,页面将完全停止滚动。我想页面滚动“正常”,而光标悬停在按钮上 捕获控制盘事件,然后创建一个新的控制盘事件,并将其发送到可滚动内容,我认为这是行不通的,因为Javascript 如何将滚轮或滚动事件从一个元素转移到另一个元素?,javascript,html,css,reactjs,Javascript,Html,Css,Reactjs,我有一个绝对定位的元素在我的网站的滚动区域。单击此元素将向下滚动页面;它是供那些使用Chromebook的学生使用的,Chromebook会隐藏滚动条,并且不会提供很好的触摸板滚动体验 但是,如果用户(在Chrome上)手动滚动,并且光标滑过绝对位置的按钮,页面将完全停止滚动。我想页面滚动“正常”,而光标悬停在按钮上 捕获控制盘事件,然后创建一个新的控制盘事件,并将其发送到可滚动内容,我认为这是行不通的,因为.isTrusted是错误的 作为一种解决方法,我正在捕获控制盘事件并手动调用可滚动元素
.isTrusted
是错误的
作为一种解决方法,我正在捕获控制盘事件并手动调用可滚动元素上的.scrollBy
。但是,这不会将页面滚动相同的距离,而且还会导致不平稳、结巴的滚动
elemScrollImg.addEventListener('wheel', (e) => {
console.log("Img scroll: ", e)
let deltaY = e.deltaY
// Wanted to make a new WheelEvent to pass to the container
// but isTrusted is false for "fake" events, and the page
// apparently just ignores them :-/
// https://stackoverflow.com/a/44462125
elemContent.scrollBy({
top: deltaY,
left: 0,
// smooth scrolling apparently just makes it all worse,
// esp. on touchpad scrolling.
// behavior: 'smooth',
})
有没有推荐的方法来实现这一点?我最后使用
位置:sticky
将按钮放置在可滚动的容器中,这样可以使控制盘事件正常冒泡。这并没有回答我的问题,但它确实解决了我的问题
.arrowWrapper {
position: sticky;
bottom: 15px;
padding: 6px;
padding-bottom: 15px;
width: 200px;
margin-left: auto;
margin-right: auto;
cursor: pointer;
background: #f00;
}