css - 让 Div 仅在页面滚动时出现

标签 css reactjs

我知道这个问题有点模糊,但我更想知道我所问的是否可能。我知道当用户点击网页上的特定点时触发事件相当容易,但我想知道是否可以仅显示 div 或者仅在页面主动滚动时应用一个类,然后取消应用一旦滚动停止,这一切都会发生。

一个例子是在页面顶部有一个固定的 div,它是蓝色的,但仅在没有发生滚动时才显示。当滚动发生时,div 会变成红色,然后一旦用户再次停止滚动,它就会变回蓝色。我可以看到如何使用 onScroll 在滚动开始后更改 div,但我不太确定如何恢复到初始状态/类/其他内容。谢谢。

最佳答案

这不是特定于 react 的,但您可以让滚动事件设置元素上的滚动状态,然后覆盖超时调用以取消设置。基本的 jquery 示例可能是这样的:

var killscroll = null;

$(window).on('scroll', function(){
    $('.element').addClass('scrolling');

    clearTimeout(killscroll);

    killscroll = setTimeout(function(){
        $('.element').removeClass('scrolling');
    }, 100);
});

由于滚动在滚动时会触发很多次,因此这将重新定义超时,直到滚动停止触发,然后 100 毫秒后您的类将被删除。根据需要调整时间。

使用jquery以方便阅读。如果您需要原始 js 示例,我可以更新。

Here's a codepen

我假设 React 具有与 gatsby 的 wrapRootComponent 等效的东西,因此您可以将最终代码放在设置事件监听器的位置。也许 componentDidMount

关于css - 让 Div 仅在页面滚动时出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50223772/

相关文章:

html - 修复 CSS 导航栏按钮 float 和方向

html - 如何使 table 标签和 div 标签的高度行为相同?

html - 将两个 div 放置在同一水平面上

html - 渐变叠加在按钮前面 - 不可点击

javascript - 无法在 reactJS App 中正确导入函数?

javascript - 如何在react js中设置 map 项的样式

javascript - 如何通过应用过滤器来渲染Reducer?

html - 如何仅使用 css(不使用 jQuery)淡化背景颜色?

reactjs - 在 AWS Amplify 上部署 React Web 应用程序时出现 403 ACCESS DENIED 错误

javascript - React JS Nuka轮播自定义箭头定位