首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使旋转木马滚动仅当光标在它上,而不是在窗口上的任何地方?

如何使旋转木马滚动仅当光标在它上,而不是在窗口上的任何地方?
EN

Stack Overflow用户
提问于 2022-03-02 07:53:45
回答 1查看 652关注 0票数 0

我在应用程序中使用反应弹性旋转木马在四个组件之间垂直滚动,每个组件在滚动时都有一些信息可以显示。我想要做的是,只有当光标在旋转木马上时,滚动功能才会出现,而不是像现在这样出现在页面上的任何地方。我怎么能让你有什么建议呢?非常感谢。

以下是我迄今所做的工作:

codesandbox.io/s/compassionate-leftpad-zzueys?file=/src/App.js

News.js:

代码语言:javascript
复制
    import React, {useEffect, useRef } from "react";
    import Carousel from "react-elastic-carousel";
    import "./ news.css";
    import {
      Center,
      Areas,
      Place,
      Others,
    } from "./Contents";
    
    const News = () => {
    
      useEffect(() => {
        document.title = "News";
      });
    
      const prevItemObject = "prev";
      const nextItemObject = "next";
    
      const slider = useRef(null);
    
      function scroll(e) {
        if (slider === null) return 0;
    
        e.wheelDelta > 0
          ? slider.current.onNextStart(prevItemObject, nextItemObject)
          : slider.current.onPrevStart();
      }
    
      useEffect(() => {
        window.addEventListener("wheel", scroll, true);
    
        return () => {
          window.removeEventListener("wheel", scroll, false);
        };
      }, []);
    
      return (
        <div className="container">
          <Carousel
            onScroll={scroll}
            verticalMode
            itemsToShow={1}
            enableSwipe={true}
            ref={slider}
          >
            <Relevant />
            <SearchByAreas />
            <FindAPlaceToLive />
            <FindTheRightRoomie />
          </Carousel>
        </div>
      );
    };
    
    export default News;

App.js:

代码语言:javascript
复制
import React from "react";
import News from "./News";

const App = () => {
  return (
    <div>
      <News />
    </div>
  );
};
export default App;
EN

回答 1

Stack Overflow用户

发布于 2022-03-02 08:36:15

您的车轮事件监听器现在处于窗口中,它将侦听窗口上的所有车轮事件。也许您可以将侦听器添加到滑块引用中,如下所示:

代码语言:javascript
复制
slider.current.addEventListener("wheel", scroll, true);

你能提供一个密码样本吗?它将更容易测试;)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71319152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档