reactjs CSS网格使页面自动滚动

n3schb8v  于 5个月前  发布在  React
关注(0)|答案(1)|浏览(60)

我一直在论坛上寻找解决这个问题的方法,我能找到的最接近的方法是this
我有一个CSS网格grid-template-columns: repeat(auto-fill,minmax(70px,1fr));,它的父元素有一个max-height: 350px; overflow-y: auto;。当我“选择”网格中的项目时,一切都很好,直到我向下滚动足够远并选择一个项目,然后向下滚动整个页面。检查元素,网格中的项目似乎继续滚动到页面的顶部(当然是隐藏的),但是一旦这些项目到达页面的顶部,它就会自动滚动整个页面。
我试图在这里做一个工作演示,但它不复制,不知道这是因为它在一个Iframe或没有?这里是一个链接到我正在做的:https://fathomless-brook-11892.herokuapp.com/product/64e6566b3ec4190ccdecb5ba
如果你检查它,在CSS中找到“*”,取消选中max-height: -webkit-fill-available;,然后开始向下滚动并选择一个不同的面料。你会注意到页面突然向下滚动。有了这个,似乎是我能让它按预期工作的唯一方法。但我相信这是错误的方法吗?
任何帮助都非常感谢!

5fjcxozz

5fjcxozz1#

我复制了您的问题,但无法找出问题所在。据我所知,您的脚本可能有一部分试图手动向下滚动到该位置。

  • 或者,您应该尝试调试它,方法是检查单击该项时发生的情况,方法是检查onclickonchange调用了哪些函数,以查看滚动位置是否发生了变化
  • 如果你因为某种原因不能这么做(可能是因为第三方脚本原因),你有一些其他的脏选项来覆盖它。你可以通过使用scrollIntoView()(可能像element.scrollIntoView({ behavior: "instant"}))来滚动回视图。或者你可以在单击操作之前保存scrollY(像var scrollTop = window.scrollY;),然后在scrollTo()(像window.scrollTo(0, scrollTop);)中使用它来返回到那个准确的位置。

不管怎样,我觉得这都不像是css或浏览器错误,可能是JavaScript代码造成的。

相关问题