javascript - Divs 在 react.js 中使用 translateY() 反向滚动

标签 javascript css reactjs

我正在尝试使用 React.js 创建一种像这样的滚动:http://spassky-fischer.fr/ ,其中两个 div 以相反的方向滚动。他们正在使用 transform: translateY(),我也尝试实现它,但我不知道我哪里错了。这是元素的架构。当前版本也在这里:http://noiseless-tendency.surge.sh/

App.js:

ComponentDidMount(){
    window.addEventListener("scroll", this.scrollHandler);
} 

...

scrollHandler = () => {
    this.setState({
      scrollPositionY: window.scrollY
    })
}

...

render() {
    return (
      <div className="App">
          <MainItemsContainer {...this.state} />
      </div>
    );
  }

MainItemsContainer.js:

render() {

    let style_first = {
      transform: `translateY(${this.props.scrollPositionY})`,
      overflow: "hidden"
    }

    let style_second = {
      transform: `translateY(-${this.props.scrollPositionY})`,
      overflow: "hidden"
    }


    return (
      <div className="main_items_container">
        <section
        style={style_first}
        className="main_items_container_child">
          <ItemsContainer {...this.props}/>
        </section>
        <section 
          style={style_second}
          className="main_items_container_child">
          <ItemsContainer {...this.props}/>
        </section>
      </div>
    );
  }

App.css:

.main_items_container {
  width: 100vw;
  display: flex;
  align-items: center;
  justify-content: center;
  position: fixed;
}

.main_items_container .main_items_container_child{
  width: 50%;
  height: 100vh;
  overflow: scroll;
}

最佳答案

您链接的示例站点实际上使用了 wheel 事件而不是 scroll 事件。看起来他们使用这个库来完成它:https://swiperjs.com/demos/ .我的理解是 scroll 事件只有在有滚动条时才会触发,这就是您的事件处理程序没有触发的原因。

我创建了一个 Code Sandbox在 React 中产生你想要的效果。它确实依靠 jQuery 来计算整个元素的高度,并为左半部分设置初始转换。然而,这些只是方便的方法,如果您不想将 jQuery 作为依赖项,您可以很容易地找到解决方法。

关于javascript - Divs 在 react.js 中使用 translateY() 反向滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59166407/

相关文章:

reactjs - 如何在带有 MDXJS 的 MDX/Markdown 文件中使用 i18next/react-i18next?

javascript - d3.js 中的 d3.max() 与 math.max() 有什么区别?

javascript - 打开新窗口

html - 使用 Bootstrap 将 Div 定位在容器内

javascript - jquery消息框保留区bug

reactjs - 是否可以在 React Hooks 中对 useReducer 的调度进行回调?

javascript - create-react-app 构建不接受样式

javascript - Opera 用户-JS : how do I get the raw server response?

javascript - 如何使用 JQuery 从按钮单击中获取 Extreme DIV 的 ID、名称和类?

javascript - :nth-child content replacement 更优雅的解决方案