reactjs 如何只滚动屏幕的一半,但可以滚动到任何地方?

ecr0jaav  于 2023-06-29  发布在  React
关注(0)|答案(1)|浏览(134)

我想做一个网站使用React只有一半的屏幕滚动,而其他屏幕保持固定。这本身就很容易。但是,我想使它即使用户在固定部分上滚动滚轮,滚动部分仍然向下滚动,我一直未能完成这一点。
到目前为止,我只有一个基本的react设置,如下所示:
App.js

class App extends React.Component {
  constructor(props) {
    super(props);
  }
  render() {
    return <div className="App">
      <FixedSection />
      <ScrollingSection />
    </div>
  };
}

FixedSection.js和ScrollingSection.js只是容器
FixedSection.css

.fixed-section {
    position: fixed;
    top: 0;
    left: 0;
    width: 50%;
    height: 100vh; 
  }

ScrollingSection.css

.scrolling-section {
    width: 50%;
    height: 100vh;
    margin-left: 50%;
    overflow-y: scroll;
  }

我尝试使用ref将scroll事件从应用程序转发到ScrollingSection,但不起作用。我将如何实现这一目标?谢谢你!

ruarlubt

ruarlubt1#

你应该尝试使用创建引用,下面的代码将有助于滚动轮上的固定部分
App.js

import React from 'react';
import FixedSection from './FixedSection';
import ScrollingSection from './ScrollingSection';

class App extends React.Component {
  constructor(props) {
    super(props);
    this.scrollingSectionRef = React.createRef();
  }

  handleFixedSectionScroll = (e) => {
    // Forward the scroll event to the scrolling section
    this.scrollingSectionRef.current.scrollTop += e.deltaY;
  };

  render() {
    return (
      <div className="App">
        <FixedSection onScroll={this.handleFixedSectionScroll} />
        <ScrollingSection ref={this.scrollingSectionRef} />
      </div>
    );
  }
}

export default App;

FixedSection.js

class FixedSection extends React.Component {
  render() {
    return (
      <div className="fixed-section" onWheel={this.props.onScroll}>
        {/* Content of the fixed section */}
      </div>
    );
  }
}

export default FixedSection;

ScrollingSection.js

class ScrollingSection extends React.Component {
  render() {
    return (
      <div className="scrolling-section" ref={this.props.forwardRef}>
        {/* Content of the scrolling section */}
      </div>
    );
  }
}

export default React.forwardRef((props, ref) => (
  <ScrollingSection forwardRef={ref} {...props} />
));

App.css

.fixed-section {
    position: fixed;
    top: 0;
    left: 0;
    width: 50%;
    height: 100vh;
    overflow: hidden;
  }

  .scrolling-section {
    width: 50%;
    height: 100vh;
    margin-left: 50%;
    overflow-y: scroll;
  }

相关问题