【发布时间】:2015-03-18 23:43:23
【问题描述】:
我正在创建一个网页,其中包含一些只需要在特定时间滑入的屏幕外内容。为了实现这一点,我在html, body 上设置了overflow-x: hidden。这样用户就无法左右滚动来获取内容。
但是,在应用程序的某个时刻,我还需要用户向下滚动的数量。据我所知,window.pageYOffset 是最可靠的方法之一。
但是,当我设置 overflow-x 规则时。 window.pageYOffset 始终等于 0。
这些东西不应该彼此无关吗?我怎样才能解决这个问题?
我已经在 Safari、Firefox 和 Chrome 上对此进行了测试。
我尝试过document.documentElement.scrollTop,但这仅适用于 Firefox。
注意:
我无法通过一个非常简单的示例重现该问题。
我的应用程序的主要内容也包含在具有position: absolute 的容器中。如果我删除它,一切正常。
所以它似乎是body 上的overflow-x: hidden 和.content 上postion: absolute 的组合。
但是,我不能轻易摆脱位置绝对要求,因为
不同的.content 容器应该能够相互叠加。
编辑 2:
更奇怪的是:我在.content 上设置了一个transform: translate(0,0),以便以后能够转换为其他值。如果我删除它,一切正常!另一个看似无关的 css
干扰的财产。
【问题讨论】:
-
我发现我的问题是我在 html 和 body 上都有
overflow-x: hidden。如果我将它移到只是 html,那很好。但是,IE11 现在会忽略它,这意味着我必须向内部元素添加额外的overflow-x: hidden。另外需要注意的是,这是由于添加了 flex 和sticky footer 的东西导致了这个错误的表现。翻译和绝对位置可能也会影响它。
标签: javascript css scroll