Я пытаюсь скрыть элемент в моем ионном приложении, когда приложение прокручивается вниз, и отображать, когда приложение прокручивается вверх.
Я делаю это через компонент, чтобы я мог просто размещать теги вокруглюбые элементы, для которых я хочу эту функцию.
Я думал, что смогу получить значение window.PageYOffset
, когда событие прокрутки срабатывает, но значение window.PageYOffset
всегда равно 0. Я думал, что это значение будет относиться кколичество пикселей, по которым документ прокручивается по оси Y, но я явно что-то неправильно понимаю.
в моем hide-on-scroll
компоненте у меня есть
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
};
, который срабатывает при каждом движении прокрутки
мой 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?
В моем событии прокрутки как я могу получить значение, чтобы проверить, прокручивается ли страница вниз или вверх?
Обновление
ionic is autoгенерирует теги <html>
и <body>
и устанавливает в них значение height:100%
.Джоэл Джозеф упомянул в комментариях, что это проблема при попытке получить window.PageYOffset
.Есть ли обходной путь для этого?