嘿伙计们,我需要你的帮助,
开始使用Ionic 2 App。我的导航并不复杂。我有一个菜单,如果我点击一个项目另一个菜单打开一个子菜单,如果我点击子菜单中的项目,第三页应该在它上面呈现,这工作得很好。现在第三个活动应该是一个非常长的滚动网站,有很多部分(这些部分在彼此的顶部)。每个部分都应该有一个带有一个后退按钮的工具栏,可以返回到子菜单,还有两个箭头键可以返回上一个或下一个部分。
这是一张小图片
现在我的问题:
我如何实现磁性部件?我认为是这样的:酒吧位于页面顶部和内容之上。当我滚动内容下面,我可以滚动到最后。当iam结束时,一切都应该停止,当我进一步拉动时,下一个Section Bar会跳到我网站的顶部。
我希望你能帮助我,谢谢你;)
答案 0 :(得分:0)
要完成这项工作,您需要:
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;
}
});
<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);
}
}
<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>