爲了使這項工作,你需要:
- 創建滾動您
scroll-content
元素頂端 功能
- 跟蹤滾動位置
scroll-content
- 使用
*ngIf
在您的滾動到頂部按鈕有條件地顯示後scroll-content
已達到一定的閾值。
滾動到頂部功能
我適於this SO answer應用到scroll-content
元件
scrollToTop(scrollDuration) {
let scrollStep = -this.ionScroll.scrollTop/(scrollDuration/15);
let scrollInterval = setInterval(() => {
if (this.ionScroll.scrollTop != 0) {
this.ionScroll.scrollTop = this.ionScroll.scrollTop + scrollStep;
} else {
clearInterval(scrollInterval);
}
}, 15);
軌道scroll-content
位置
這個例子使用了窗高爲閾值用於顯示滾動頂部按鈕像這樣:
this.ionScroll.addEventListener("scroll",() => {
if (this.ionScroll.scrollTop > window.innerHeight) {
this.showButton = true;
} else {
this.showButton = false;
}
});
按鈕的Html
<button *ngIf="showButton" (click)="scrollToTop(1000)">Scroll Top</button>
全部組件打字稿
import { NavController } from 'ionic-angular/index';
import { Component, OnInit, ElementRef } from "@angular/core";
@Component({
templateUrl:"home.html"
})
export class HomePage implements OnInit {
public ionScroll;
public showButton = false;
public contentData = [];
constructor(public myElement: ElementRef) {}
ngOnInit() {
// Ionic scroll element
this.ionScroll = this.myElement.nativeElement.children[1].firstChild;
// On scroll function
this.ionScroll.addEventListener("scroll",() => {
if (this.ionScroll.scrollTop > window.innerHeight) {
this.showButton = true;
} else {
this.showButton = false;
}
});
// Content data
for (let i = 0; i < 301; i++) {
this.contentData.push(i);
}
}
// Scroll to top function
// Adapted from https://stackoverflow.com/a/24559613/5357459
scrollToTop(scrollDuration) {
let scrollStep = -this.ionScroll.scrollTop/(scrollDuration/15);
let scrollInterval = setInterval(() => {
if (this.ionScroll.scrollTop != 0) {
this.ionScroll.scrollTop = this.ionScroll.scrollTop + scrollStep;
} else {
clearInterval(scrollInterval);
}
}, 15);
}
}
全部組件的HTML
<ion-navbar primary *navbar>
<ion-title>
Ionic 2
</ion-title>
<button *ngIf="showButton" (click)="scrollToTop(1000)">Scroll Top</button>
</ion-navbar>
<ion-content class="has-header" #testElement>
<div padding style="text-align: center;">
<h1>Ionic 2 Test</h1>
<div *ngFor="let item of contentData">
test content-{{item}}
</div>
</div>
</ion-content>
非常感謝你,我會嘗試它,當我下班回來;) – Michael
Ø khôngcóvấnđề,tôisẽhạnhphúcnếubỏnphiếu:p –