Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将滚轮或滚动事件从一个元素转移到另一个元素?_Javascript_Html_Css_Reactjs - Fatal编程技术网

Javascript 如何将滚轮或滚动事件从一个元素转移到另一个元素?

Javascript 如何将滚轮或滚动事件从一个元素转移到另一个元素?,javascript,html,css,reactjs,Javascript,Html,Css,Reactjs,我有一个绝对定位的元素在我的网站的滚动区域。单击此元素将向下滚动页面;它是供那些使用Chromebook的学生使用的,Chromebook会隐藏滚动条,并且不会提供很好的触摸板滚动体验 但是,如果用户(在Chrome上)手动滚动,并且光标滑过绝对位置的按钮,页面将完全停止滚动。我想页面滚动“正常”,而光标悬停在按钮上 捕获控制盘事件,然后创建一个新的控制盘事件,并将其发送到可滚动内容,我认为这是行不通的,因为.isTrusted是错误的 作为一种解决方法,我正在捕获控制盘事件并手动调用可滚动元素

我有一个绝对定位的元素在我的网站的滚动区域。单击此元素将向下滚动页面;它是供那些使用Chromebook的学生使用的,Chromebook会隐藏滚动条,并且不会提供很好的触摸板滚动体验

但是,如果用户(在Chrome上)手动滚动,并且光标滑过绝对位置的按钮,页面将完全停止滚动。我想页面滚动“正常”,而光标悬停在按钮上

捕获控制盘事件,然后创建一个新的控制盘事件,并将其发送到可滚动内容,我认为这是行不通的,因为
.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;
}