window.pageYOffset 始终为 0,溢出 x: 隐藏
window.pageYOffset is always 0 with overflow-x: hidden
我正在创建一个网页,其中包含一些屏幕外内容,只需要在特定时间滑入。为了实现这一目标,我正在overflow-x: hidden
html, body
.这样,用户就无法向左或向右滚动以获取内容。
但是,在应用程序中的某个时候,我还需要用户向下滚动的数量。据我所知window.pageYOffset
这是最可靠的方法之一。
但是,当我设置overflow-x
规则时。 window.pageYOffset
总是等于 0
。
这些事情不应该彼此无关吗?我该如何解决这个问题?
我已经在Safari,Firefox和Chrome上对此进行了测试。
我已经尝试过document.documentElement.scrollTop
但这仅适用于火狐。
铌:
我无法用一个非常简单的例子重现这个问题。我的应用程序在具有position: absolute
的容器中也具有主要内容。如果我删除它,一切正常。
所以这似乎是body
上的overflow-x: hidden
和体内.content
上的postion: absolute
的结合。
但是,我不能轻易摆脱职位绝对要求,因为不同的.content
容器应该能够相互放置。
编辑 2:它变得更加奇怪:我有一个transform: translate(0,0)
设置.content
以便以后能够过渡到其他值。如果我删除它,一切正常!另一个看似无关的 css干扰的属性。
我遇到了完全相同的问题,经过长时间的搜索后我解决了它。
问题似乎来自身体内部的overflow-x: hidden
。所以为了解决这种奇怪的行为,我使用了这样的包装器:
<body>
<div class="myWrapper">
All your content here
</div>
</body>
然后我在包装器的 CSS 中移动了溢出属性,而不是让它在 html 中,正文:
html, body {
margin:0;
padding:0;
height: 100%;
}
.wrapper {
height: 100%;
overflow-x: hidden;
}
当我扫描现在位于包装器元素中的 srollTop 属性时,使用这个小技巧,结果不再是 0 而是实际值。没有它,它无法在 Chrome 上运行...
我有一个类似的问题,其中发生溢出的元素的父级具有overflow: hidden;
.这不是我可以删除的 CSS 属性。
我的解决方案是,不是window.pageYOffset
或document.documentElement.scrollTop
,而是在滚动发生时获得Event
对象。从Event
对象中,我们可以得到scrollTop
属性,例如e.srcElement.scrollTop
我的事件处理程序如下所示:
onScroll(e) {
if (e.srcElement.scrollTop > 8) {
// do something
}
}
然后,将此事件绑定到发生滚动的元素。
只需使用容器而不是窗口,并从该事件中获取scrollTop
。
const container = document.querySelector('.abc');
fromEvent(container,'scroll').pipe(
map ((event) => event.srcElement['scrollTop'])
)
为我工作
- javascriptexecutor-不能点击body样式标记为“”的元素;溢出:隐藏;
- 身体溢出-隐藏,点击
- MixItUp动画与'溢出:隐藏'父母亲
- 将两个图像合并为一个,并使用javascript进行溢出隐藏
- 如何使内部元素具有位置:绝对覆盖溢出:隐藏外部元素
- 'style=“;边界:无;溢出:隐藏;高度:80px”'到js对象
- 在移动设备领域,空白:nowrap;溢出:隐藏;文本溢出:省略号;有点不起作用
- CSS webkit溢出隐藏和HTML元素高度
- Iframe滚动溢出隐藏在css中不起作用
- window.pageYOffset 始终为 0,溢出 x: 隐藏
- jQuery可排序与溢出:隐藏;在两个列表之间
- 隐藏溢出隐藏的零件视图文本
- jQuery 可拖动包含溢出隐藏
- 溢出隐藏不会文本换行
- 溢出隐藏添加在删除滚动条的正文标签中
- 如何在 LI 中强制 DIV(带有溢出隐藏样式)仍然显示
- 溢出隐藏的问号将单词拆分为两行
- 检测溢出:隐藏页面中的滚动尝试
- 隐藏文本块的开头,溢出:隐藏
- 如何禁用滚动(溢出:隐藏除外)