Например в плей маркете при скролле вниз прячется панель:
При скролле вверх она плавно выдвигается:
1. Как сделал я.
Использовал два события ionScrollStart и ionScroll
<ion-content class="contentupdate" (ionScrollStart)="list.scrollStart($event)" (ionScroll)="list.scrollHandler($event)">
typescript
scrollHandler(event){
if(this.zone == null){
alert('Подключите зону в конструкторе!');
return;
}
let me=this;
this.zone.run(()=>{
me.scrolltoplast=event.scrollTop;
if(event.directionY == 'down'){
console.log('down');
if(me.scrollAmount <= -25){
me.header.style.top = '2.5rem';
}else{
me.scrollAmount--;
}
}
else{
console.log('up');
if(me.scrollAmount >= 0){
me.header.style.top= '0rem';
}else{
me.scrollAmount++;
}
}
me.header.style.top= (me.scrollAmount/10) +'rem';
});
}
typescript
scrollStart(event){
if(this.zone == null){
alert('Подключите зону в конструкторе!');
return;
}
let me=this;
this.zone.run(()=>{
if(me.header == null)
me.header=<HTMLElement>document.getElementsByClassName('toolbar_mytasks')[0];
console.log(me.header.style.top);
me.scrollAmount = Number(me.header.style.top.split('rem')[0])*10;
console.log(me.scrollAmount+'init');
});
}
Проблема в том что если быстро скролить, то блок выезжает совсем немного. То есть событие ionScroll вызывается недостаточно много раз.
Как правильно реализовать эту задачу?