当前位置: 首页 > 知识库问答 >
问题:

滚动时使div高度增大和减小(React)

南门意蕴
2023-03-14

基本上,我在我的网站顶部有一个div,上面有logo,最初logo有一个高度,div的大小将与logo的高度一致(笔中为200px)。

我想做的是,当我向下滚动时,使徽标变小,或者当我向上滚动时,使徽标变大,基本上,scrollY值需要以某种方式链接到图像高度(直到我向下滚动到一个点,我不想继续收缩标志)。

我尝试用一个状态设置高度css属性,并用一个事件监听器更新它,每次检测到滚动时都会更新状态。

这不起作用(但也许我编码错了)。

你知道我该怎么做吗?

这里是JS:

var Component = React.createClass({
    render: function() {
        return (
                    <div>
                        <div className="container">

                            <img src='https://www.import.io/wp-content/uploads/2017/10/React-logo-1.png' className='logo'/>

                        </div>
                        <br /><br />
                        <br /><br />
                        <br /><br />
                        <br /><br />
                        <br /><br />
                        <br /><br />
                        <br /><br />
                        <br /><br />
                        <br /><br />
                    </div>
                );
    }
});

ReactDOM.render(<Component/>, document.body);

以下是CSS:

@import "compass/css3";

body {
    font-family: 'Open Sans', sans-sarif;
    margin: 0;
}

.container {
    background-color: $color6;
    text-align: center;
    padding: 30px;
}

.logo {
    height: 200px;
}

这是笔:https://codepen.io/anon/pen/JqdjNO

共有1个答案

朱通
2023-03-14

您可以在滚动和更新样式上设置事件。见钢笔:https://codepen.io/anon/pen/dEoPxY?editors=0110

CSS:

@import "compass/css3";

body {
    font-family: 'Open Sans', sans-sarif;
    margin: 0;
}

.empty-space {
    height: 800px;
}

.container {
    background-color: $color6;
    text-align: center;
    padding: 30px;
    /*height: 200px;*/
    position: fixed;
    top: 0;
    width: 100%;
}

.logo {
    height: 100%;
}

Javascript:

var Component = React.createClass({
    getInitialState: function() {
        return {
            style: {
                logoHeight: 200
            }
        }
    },

    componentDidMount: function() {
        window.addEventListener('scroll', this.handleScroll);
    },

    componentWillUnmount: function() {
        window.removeEventListener('scroll', this.handleScroll);
    },

    handleScroll: function(event) {
        let scrollTop = window.scrollY,
                minHeight = 30,
                logoHeight = Math.max(minHeight, 200 - scrollTop);
        this.setState({
            style: {
                logoHeight: logoHeight
            }
        });
    },

    render: function() {
        return (
            <div>
                <div className="container" style={{height: this.state.style.logoHeight}}>
                    <img src='https://www.import.io/wp-content/uploads/2017/10/React-logo-1.png' className='logo'/>
                </div>
                <div className="empty-space">

                </div>
            </div>
        );
    }
});

ReactDOM.render(<Component/>, document.body);
 类似资料:
  • 我只想增加每一段的字体大小,当滚动靠近他们,并减少后,滚动是下降。 null null

  • 我们如何找到浏览器窗口(window)的宽度和高度呢?我们如何获得文档(document)的包括滚动部分在内的完整宽度和高度呢?我们如何使用 JavaScript 滚动页面? 对于此类信息,我们可以使用与 <html> 标签相对应的根文档元素 document.documentElement。但是还有其他方法和特性需要考虑。 窗口的 width/height 为了获取窗口(window)的宽度和高

  • 我正在尝试在我的应用程序中实现聊天。 我写了一个自动调整离子文本区域如下:视图 CSS 指令 除了滚动,一切都很好。 当我超过100px最大高度时,我无法在ion文本区域中滚动。。。因此,如果我想纠正文本中隐藏的部分,那是不可能的。此外,当我试图滚动它实际上滚动聊天(离子内容)。。。 知道我该怎么解决这个问题吗?

  • JavaScript 中有许多属性可让我们读取有关元素宽度、高度和其他几何特征的信息。 我们在 JavaScript 中移动或定位元素时,我们会经常需要它们。 示例元素 作为演示属性的示例元素,我们将使用下面给出的元素: <div id="example"> ...Text... </div> <style> #example { width: 300px; height:

  • 问题内容: 我有2个div并排。我不知道它们的高度,它根据内容而改变。有没有一种方法可以确保它们始终保持相同的高度,即使其中一个拉伸时也只能使用CSS? 我做了一个小提琴来展示。我希望红色和蓝色的div高度相同… 这是CSS: 问题答案: 您可以尝试使用float来代替使用float。但是,您可能会发现某些较旧的浏览器不了解此规则。见下文:

  • 我有HTML页面,其中我正在使用javascript语法更改字体大小 当我尝试更改字体大小时,HTML会根据字体的增加/减少上下移动文本,用户无法保持更改字体大小之前的相同文本。 我怎样才能让用户留在原来的地方?