Angular 为什么window.pageYOffset总是0?我怎样才能得到一个值来检查页面是否被向下或向上滚动?
我试图在我的ionic应用程序向下滚动时隐藏一个元素,并在向上滚动时显示 我是通过一个组件来实现这一点的,所以我可以在我想要这个功能的任何元素周围放置标签 我原以为可以在启动滚动事件时获得Angular 为什么window.pageYOffset总是0?我怎样才能得到一个值来检查页面是否被向下或向上滚动?,angular,ionic-framework,ionic3,angular5,Angular,Ionic Framework,Ionic3,Angular5,我试图在我的ionic应用程序向下滚动时隐藏一个元素,并在向上滚动时显示 我是通过一个组件来实现这一点的,所以我可以在我想要这个功能的任何元素周围放置标签 我原以为可以在启动滚动事件时获得window.PageYOffset的值,但window.PageYOffset的值始终为0。我以为这个值与文档在Y轴上滚动的像素数有关,但我显然误解了什么 在我的hide on scrollcomponenet中,我有 private eventOptions: boolean|{capture?: bool
window.PageYOffset
的值,但window.PageYOffset
的值始终为0。我以为这个值与文档在Y轴上滚动的像素数有关,但我显然误解了什么
在我的hide on scroll
componenet中,我有
private eventOptions: boolean|{capture?: boolean, passive?: boolean};
ngAfterViewInit(){
//removed where I set eventOptions
this.ngZone.runOutsideAngular(() => {
window.addEventListener('scroll', this.scroll, <any>this.eventOptions);
});
}
scroll = (event: any): void => {
var a = window.pageYOffset; //value is always 0
};
private eventOptions:boolean |{capture?:boolean,被动?:boolean};
ngAfterViewInit(){
//删除了我设置eventOptions的位置
此.ngZone.runOutsideAngular(()=>{
window.addEventListener('scroll',this.scroll,this.eventOptions);
});
}
滚动=(事件:任意):无效=>{
var a=window.pageYOffset;//值始终为0
};
这会在每个滚动动作中触发
我的HTML
<ion-header>
<hide-on-scroll>
<h1>Test</h1>
</hide-on-scroll>
</ion-header>
<ion-content class="page-background">
<div *ngIf="margins">
<div *ngFor="let val of margins.ByZone">
<div style="height:500px; margin-top:20px">
<h1>dummy content</h1>
</div>
</div>
</div>
</ion-content>
试验
虚构的内容
两个问题
为什么window.pageYOffset总是0
在my scroll事件中,如何获取值来检查页面是否向下或向上滚动
更新
爱奥尼亚正在自动生成
和
标签,并在标签中设置高度:100%
值。Joel Joseph在评论中提到,在尝试获取window.PageYOffset
时,这是一个问题。是否有解决方法?问题在于使用了window.pageYOffset
和带有离子内容的滚动事件。您将需要使用作为其一部分的滚动事件
虚构的内容
结束(事件){
console.log(事件)
}
请确保也使用scrollEvents
打开滚动事件
至于在使用ion content时获得YOffset
我希望我知道,我也在努力寻找一个很好的解决方案这可能会帮助你:嗨@JoelJoseph谢谢你的链接,它非常清晰,信息丰富,但它不能帮助我理解为什么window.pageYOffset代码>在我的尝试中始终为0检查是否overflow-x:hidden
在身体内部或与设置height:100%
相关的东西在我写这篇文章时出现了一个奇怪的问题我没有设置overflow-x
,但我尝试将它和overflow-y
设置到每一个组合,但没有成功与我所知不同的是,您不应该将overflow-x:hidden
设置在身体内部,也不应该将高度设置为100%
。这就是解决我问题的方法。您是否检查了chrome控制台中的文档元素以查看其是否已设置,如果已设置,则应将其删除
<ion-content class="page-background" [scrollEvents]="true" (ionScrollStart)="onIonScrollEnd($event)">
<div *ngIf="margins">
<div *ngFor="let val of margins.ByZone">
<div style="height:500px; margin-top:20px">
<h1>dummy content</h1>
</div>
</div>
</div>
</ion-content>
onIonScrollEnd(event) {
console.log(event)
}