【问题标题】:How to make sticky div respond to a floating (position: fixed) div?如何使粘性 div 响应浮动(位置:固定)div?
【发布时间】:2020-12-27 20:08:01
【问题描述】:

我正在使用 Material UI 的 <Appbar /> 组件,它编译为一个位置为:fixed; 的 div。这里的“滚动隐藏”效果使用visibility: hidden;和transform: translateY(-59px);隐藏栏。

现在,我想在 <Appbar /> 组件下添加一个粘性 div,但结果是粘性 div 不受 DOM 流中的 <Appbar /> 影响。因此,基本上,它只是向上滚动到顶部(在 <Appbar /> 下方或上方,取决于 z-index),然后像它应该的那样粘住。

我了解position: fixed; 会删除文档中的元素自然空间并使其“浮动”,所以我猜这就是粘性 div 不响应它的原因。

我想要的是粘性 div 将其保持在<Appbar /> 下方,当<Appbar /> 消失时,粘性 div 会相应地移动其在文档中的位置。谁能在这里给我小费?

在此处查看沙盒: https://codesandbox.io/s/quiet-fast-pb9fv?file=/src/HideAppBar.js

【问题讨论】:

标签: javascript css reactjs material-ui gatsby


【解决方案1】:

在这种情况下,您遵循“合气道原则”,不要为停止效果而挣扎,而是让它发生并利用它。我的意思是,如果它一直向上滑动,让它一直向上滑动,让它看起来没有。这可以通过多种方式实现。给它一个容器和一个padding-top(这样碰到边缘的部分将是透明的),或者给它一个margin-top(几乎相同)。如果它覆盖了下面的东西,您可以使用pointer-events:none 使其点击。

我相信您已经有了正确的想法,而无需展示您的代码。但是,是的,上面的评论是对的:如果我们看到您所看到的,我们可以提供更多帮助。

这篇文章实际上是一个评论,我只需要格式。

【讨论】:

  • 感谢您的建议,但不幸的是,这并没有解决我的问题。 'marginTop' 实际上最初只是将粘性 div 进一步向下推,然后当您滚动时 div 一直向上滑动(因为 'top: 0')。基本上我希望页面上的所有内容在显示栏时都停在顶部,所以我想我必须制作一个自定义应用栏,或者看看我是否可以覆盖其上的原生“位置:固定”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
  • 1970-01-01
  • 1970-01-01
  • 2016-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多