小程序顶部tabbar,随着内容左右滑动tabbar进行联动
2017-12-06 15:39
351 查看
自学小程序时看到京东app上的效果,突发奇想做出来的。 如下图展示,左右滑动的时候顶部tabbar可以进行联动,参考了该文章,进行了改进http://blog.csdn.net/qq_31383345/article/details/52900835。
直接上代码:
WXML:
<view
class="swiper-tab">
<view
class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}"data-current="0"bindtap="swichNav">1111</view>
<view
class="swiper-tab-list {{currentTab==1 ? 'on' : ''}}"data-current="1"bindtap="swichNav">2222</view>
<view
class="swiper-tab-list {{currentTab==2 ? 'on' : ''}}"data-current="2"bindtap="swichNav">3333</view>
<view
class="swiper-tab-list {{currentTab==3 ? 'on' : ''}}"data-current="3"bindtap="swichNav">4444</view>
<view
class="swiper-tab-list {{currentTab==4 ? 'on' : ''}}"data-current="4 "bindtap="swichNav">5555</view>
<view
class="swiper-tab-list {{currentTab==5 ? 'on' : ''}}"data-current="5"bindtap="swichNav">6666</view>
<view
class="swiper-tab-list {{currentTab==6 ? 'on' : ''}}"data-current="5"bindtap="swichNav">7777</view>
<view
class="swiper-tab-list {{currentTab==7 ? 'on' : ''}}"data-current="5"bindtap="swichNav">8888</view>
</view>
</scroll-view>
<swipercurrent="{{currentTab}} "class="swiper-box
"duration="300 "style="height:{{winHeight - 31}}px "bindchange="bindChange">
<!-- 我是哈哈 -->
<swiper-item>
<view>11111</view>
</swiper-item>
<!-- 我是呵呵 -->
<swiper-item>
<view>22222</view>
</swiper-item>
<!-- 我是嘿嘿 -->
<swiper-item>
<view>33333</view>
</swiper-item>
<swiper-item>
<view>44444</view>
</swiper-item>
<swiper-item>
<view>55555</view>
</swiper-item>
<swiper-item>
<view>66666</view>
</swiper-item>
<swiper-item>
<view>77777</view>
</swiper-item>
<swiper-item>
<view>88888</view>
</swiper-item>
</swiper>
WXSS:
.swiper-tab{
text-align: center;
line-height:
80rpx;}
.swiper-tab-list{
font-size: 30rpx;
display: inline-block;
width: 20%;
color: #777777;
}
.on{ color:#da7c0c;
border-bottom:
5rpx solid#da7c0c;}
.swiper-box{
display: block;
height: 100%;
width: 100%;
overflow: hidden; }
.swiper-box view{
text-align: center;
}
JS:
//获取应用实例
var app = getApp()
Page({
data: {
// tabbar
winWidth: 0,
winHeight: 0,
// tab切换
currentTab: 0,
scrollLeft: 0,
},
onLoad: function () {
var that = this;
/**
* 获取系统信息
*/
wx.getSystemInfo({
success: function (res) {
that.setData({
winWidth: res.windowWidth,
winHeight: res.windowHeight
});
}
});
},
/**
* 滑动切换tab
*/
bindChange: function (e) {
var that = this;
that.setData({ currentTab: e.detail.current });
// 内容与tabbar的联动
//这里的 2 75 是根据顶部tabbar的个数来决定的,我定义的是5个,2是索引,也就是说超过三页才会改变
if (e.detail.current >
2) {
var a = e.detail.current
var query = wx.createSelectorQuery()
query.select('.scrollBox').boundingClientRect(function (res) {
var b = res.width
that.setData({
scrollLeft: (a - 2) *
75
})
})
query.selectViewport().scrollOffset()
query.exec(function (res) {
})
} else {
var a = e.detail.current
this.setData({
scrollLeft: 0
})
}
},
/**
* 点击tab切换
*/
swichNav: function (e) {
var that = this;
console.log(e.target)
if (this.data.currentTab === e.target.dataset.current) {
return false;
} else {
that.setData({
currentTab: e.target.dataset.current
})
}
},
})
第一次写,请多多见谅
直接上代码:
WXML:
<view
class="swiper-tab">
<view
class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}"data-current="0"bindtap="swichNav">1111</view>
<view
class="swiper-tab-list {{currentTab==1 ? 'on' : ''}}"data-current="1"bindtap="swichNav">2222</view>
<view
class="swiper-tab-list {{currentTab==2 ? 'on' : ''}}"data-current="2"bindtap="swichNav">3333</view>
<view
class="swiper-tab-list {{currentTab==3 ? 'on' : ''}}"data-current="3"bindtap="swichNav">4444</view>
<view
class="swiper-tab-list {{currentTab==4 ? 'on' : ''}}"data-current="4 "bindtap="swichNav">5555</view>
<view
class="swiper-tab-list {{currentTab==5 ? 'on' : ''}}"data-current="5"bindtap="swichNav">6666</view>
<view
class="swiper-tab-list {{currentTab==6 ? 'on' : ''}}"data-current="5"bindtap="swichNav">7777</view>
<view
class="swiper-tab-list {{currentTab==7 ? 'on' : ''}}"data-current="5"bindtap="swichNav">8888</view>
</view>
</scroll-view>
<swipercurrent="{{currentTab}} "class="swiper-box
"duration="300 "style="height:{{winHeight - 31}}px "bindchange="bindChange">
<!-- 我是哈哈 -->
<swiper-item>
<view>11111</view>
</swiper-item>
<!-- 我是呵呵 -->
<swiper-item>
<view>22222</view>
</swiper-item>
<!-- 我是嘿嘿 -->
<swiper-item>
<view>33333</view>
</swiper-item>
<swiper-item>
<view>44444</view>
</swiper-item>
<swiper-item>
<view>55555</view>
</swiper-item>
<swiper-item>
<view>66666</view>
</swiper-item>
<swiper-item>
<view>77777</view>
</swiper-item>
<swiper-item>
<view>88888</view>
</swiper-item>
</swiper>
WXSS:
.swiper-tab{
text-align: center;
line-height:
80rpx;}
.swiper-tab-list{
font-size: 30rpx;
display: inline-block;
width: 20%;
color: #777777;
}
.on{ color:#da7c0c;
border-bottom:
5rpx solid#da7c0c;}
.swiper-box{
display: block;
height: 100%;
width: 100%;
overflow: hidden; }
.swiper-box view{
text-align: center;
}
JS:
//获取应用实例
var app = getApp()
Page({
data: {
// tabbar
winWidth: 0,
winHeight: 0,
// tab切换
currentTab: 0,
scrollLeft: 0,
},
onLoad: function () {
var that = this;
/**
* 获取系统信息
*/
wx.getSystemInfo({
success: function (res) {
that.setData({
winWidth: res.windowWidth,
winHeight: res.windowHeight
});
}
});
},
/**
* 滑动切换tab
*/
bindChange: function (e) {
var that = this;
that.setData({ currentTab: e.detail.current });
// 内容与tabbar的联动
//这里的 2 75 是根据顶部tabbar的个数来决定的,我定义的是5个,2是索引,也就是说超过三页才会改变
if (e.detail.current >
2) {
var a = e.detail.current
var query = wx.createSelectorQuery()
query.select('.scrollBox').boundingClientRect(function (res) {
var b = res.width
that.setData({
scrollLeft: (a - 2) *
75
})
})
query.selectViewport().scrollOffset()
query.exec(function (res) {
})
} else {
var a = e.detail.current
this.setData({
scrollLeft: 0
})
}
},
/**
* 点击tab切换
*/
swichNav: function (e) {
var that = this;
console.log(e.target)
if (this.data.currentTab === e.target.dataset.current) {
return false;
} else {
that.setData({
currentTab: e.target.dataset.current
})
}
},
})
第一次写,请多多见谅
相关文章推荐
- 微信小程序开发— 菜单内容左右联动 & MD5加密
- 微信小程序实现顶部、底部滑动联动
- 微信小程序开发— 菜单内容左右联动 & MD5加密
- Android实现导航菜单随着ListView联动,当导航菜单遇到顶部菜单时停止在哪里,并且listview仍能滑动
- 单行文本,在内容较多的时候,实现左右滑动的方案
- 微信小程序textarea的内容随着屏幕上下移动的问题
- 编写程序通过栈的方式将任意输入的字符串内容进行逆序输出。
- 微信小程序开发之选项卡(窗口顶部/底部TabBar)页面切换
- android listview左右滑动分页(viewpager嵌套listview进行分页),焦点图带圆焦点
- Tabhost页面实现左右滑动进行页面切换
- 移动端手指左右滑动切换内容demo
- NET简单的一个画图程序 使用简单 自己可以相关自己的内容进行配置就可以使用了
- 外部程序对SharePoint 站点上的内容进行读写
- 微信小程序图片横向左右滑动案例
- 微信小程序实现左右联动的实战记录
- 进行左右滑动操作后显示出指定控件
- 编写程序通过栈的方式将任意输入的字符串内容进行逆序输出。
- Android导航菜单横向左右滑动并和下方的控件实现联动
- Android之新闻客服端顶部导航栏Tab点击和左右滑动实现切换界面
- 栏目标题栏与listbox内容栏左右滑动时保持同步