javascript - react-scroll-parallax <ParallaxProvider/> 到一个 div

标签 javascript html css reactjs parallax

我正在尝试使用此模块使 react-scroll-parallax 在 div 上工作:https://www.npmjs.com/package/react-scroll-parallax

我正在尝试将视差提供程序设置为不仅指向主体,而且指向特定的 div。我正在尝试引用元素(即 scrollContainer)。

挑战在于我在页脚和页眉之间使用“滚动 div”,因此在 上设置视差是行不通的。

我尝试创建一个 ref 并在没有成功的情况下引用它。

文档说将元素作为 ScrollContainer 的选项进行引用: scrollContainer Element:可选地设置溢出的容器并将包含视差元素。默认为 HTML 正文

 constructor(props) {
    super(props);
    this.myScrollDiv = React.createRef();
  }

/////////////////



<ParallaxProvider scrollContainer={this.myScrollDiv.current}>
     <div className="page-scroller site-wrapper pb-5" ref={this.myScrollDiv}>
               ///Content
     </div>
</ParallaxProvider>

I would love for the .page-scroller div to handle parallax.

最佳答案

免责声明:我从未使用过react-scroll-parallax 库。答案是基于源代码。

欢迎来到 Stack Overflow,@stephanesng 👋

当我查看源代码时,我发现了一个 Storybook code snippet .

看起来您需要传递 ref 变量本身,而不是 ref.current

export default class ScrollContainer extends React.Component {
    static defaultProps = {
        scrollAxis: 'vertical',
    };

    constructor() {
        super();
        this.state = {
            scrollContainer: null,
        };
        this.scrollContainer = React.createRef();
    }

    componentDidMount() {
        this.setState({ scrollContainer: this.scrollContainer.current });
    }

    render() {
        return (
            // ............ You pass the `ref` not `ref.current` 👇                       
            <div className="scroll-container" ref={this.scrollContainer}>
                <ParallaxProvider
                    scrollContainer={this.state.scrollContainer}
                    scrollAxis={this.props.scrollAxis}
                >
                    {this.props.children}
                </ParallaxProvider>
            </div>
        );
    }
}

这意味着,您需要将 this.myScrollDiv 而不是 this.myScrollDiv.current 传递给 scrollContainer 属性。

此外,您的 ref 需要在 ParallaxProvider 之外。

<div className="page-scroller site-wrapper pb-5" ref={this.myScrollDiv}>
    <ParallaxProvider scrollContainer={this.myScrollDiv}>
               ///Content
    </ParallaxProvider>
</div>

如果我错了,我会删除答案。

关于javascript - react-scroll-parallax <ParallaxProvider/> 到一个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57367574/

相关文章:

javascript - 单击按钮后显示警报

javascript - 如何使用 Javascript 或 Jquery 遍历表中的每个 TD 和 TR?

javascript - IE 8中通过jquery访问svg

html - 如何在 svg 路径元素的 'd' 属性中使用 Angular 表达式

javascript - dataTables 标题对齐问题

javascript - 在 AngularJS 模板中增加一个变量

javascript - 如何通过 Javascript 将 div 中的某些 HTML 代码替换为另一个新的 HTML 代码

css - 模式不使用动态追加 HTML 元素

html - CSS 设置默认滚动位置

css - Bootstrap 侧边栏在不应该折叠的时候折叠,在应该折叠的时候不折叠