ionic2 使用tabs+slides实现滑动切换页面效果
2017-08-29 17:18
741 查看
说明
在一个页面内嵌入多一个tab栏(我是在HomePage中),实现在此页面中多页面的滑动切换页面此案例也可以用于最外层的tab栏,具体如何实现自己尝试一下就知道了
实现方法
1.创建一个空的页面,即使tab跳转一个空页面;@Component({ template: `<ion-content class="blank"></ion-content>` }) export class BlankPage {}
2.关联tab与slide的索引值;
onTabsChange(tab: Tab) { this.tabIndex = this.tabs.getIndex(tab);//获取当前tab的index console.log(); if(this.tabIndex != this.slideIndex){ this.slider.slideTo(this.tabIndex);//slide切换 } this.change(this.tabIndex); } onSlideChanged() { this.slideIndex = this.slider.getActiveIndex();//获取当今slide的index if(this.tabIndex != this.slideIndex){ this.tabs.select(this.slideIndex);//切换tab } this.change(this.slideIndex); }
3.tab的个数要与slides个数相同。
效果图
主要代码
home.tsimport {Component, ElementRef, ViewChild} from '@angular/core';
import {NavController, Slides, Tab, Tabs} from 'ionic-angular';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
iel:any;
blank: any = BlankPage;
tabIndex: number = 0;
slideIndex: number = 0;
@ViewChild('mySlider') slider: Slides;
@ViewChild('myTabs') tabs: Tabs;
constructor(public navCtrl: NavController,
public el: ElementRef) {
}
onTabsChange(tab: Tab) { this.tabIndex = this.tabs.getIndex(tab);//获取当前tab的index console.log(); if(this.tabIndex != this.slideIndex){ this.slider.slideTo(this.tabIndex);//slide切换 } this.change(this.tabIndex); } onSlideChanged() { this.slideIndex = this.slider.getActiveIndex();//获取当今slide的index if(this.tabIndex != this.slideIndex){ this.tabs.select(this.slideIndex);//切换tab } this.change(this.slideIndex); }
//滑动条
change(index) {
if (index != 0) {
this.iel.style.left = '50%';
}else {
this.iel.style.left = '0';
}
}
ngOnInit() {
this.iel = this.el.nativeElement.querySelector('.navs-slider-bar');
this.iel.style.left = '0';
}
}
//创建一个空界面
@Component({ template: `<ion-content class="blank"></ion-content>` }) export class BlankPage {}
home.html
<ion-content> <div class="navs-slider"> <ion-tabs #myTabs tabsPlacement="top" (ionChange)="onTabsChange($event)"> <ion-tab [root]="blank" tabTitle="page1"></ion-tab> <ion-tab [root]="blank" tabTitle="page2"></ion-tab> </ion-tabs> <span class="navs-slider-bar"></span> </div> //给margin-top是因为slides占满页面会挡住tabs <ion-slides #mySlider (ionSlideDidChange)="onSlideChanged()" style="margin-top: 41px;"> <ion-slide> <not-deal></not-deal> </ion-slide> <ion-slide> <deal></deal> </ion-slide> </ion-slides> </ion-content>
home.scss
.navs-slider{ .navs-slider-bar { position: absolute; width: 30%; background: #0f88eb; height: 2px; top: 40px; left: 0; margin: 0 10%; transition: left .15s ease-in; -webkit-transition: left .15s ease-in; } }
相关文章推荐
- Android使用TabLayou+fragment+viewpager实现滑动切换页面效果
- Android中使用ViewPager和PagerTabStrip实现页面滑动效果
- Android 左右滑动切换页面或Activity的效果实现
- ViewPager使用1-ViewPager多页面滑动切换以及动画效果(ViewPager+Layout+PagerAdapter )
- ViewPager的使用方法(实现左右滑动切换页面)
- Windows Phone使用sliverlight toolkit实现页面切换动画效果
- Widget中使用js实现页面的滑动效果
- 使用ViewPager多页面滑动切换以及动画效果
- Android App中使用ViewPager+Fragment实现滑动切换效果
- ViewPager实现多页面滑动切换和动画效果
- android-使用ViewGroup实现左右滑动切换界面的效果
- Android-使用ViewGroup实现左右滑动切换界面以及界面裂开的效果
- Android中使用ViewPager和PagerTabStrip实现页面滑动效果
- 使用复杂的view加上listview实现页面整体滑动效果
- 【Android界面实现】使用ScrollingTabsView实现有滑动标签的ViewPager效果
- 使用js实现滑动页面效果,很漂亮
- 使用viewpager嵌套实现上下左右滑动切换图片(IOS双向滚动翻页效果相同)
- android:ViewPager实现Tabs滑动切换效果
- Android编程实现ViewPager多页面滑动切换及动画效果的方法
- 使用Jquery实现顶部导航栏在页面滑动到自身所在位置之后固定在顶部的效果