微信小程序实现滴滴导航tab切换效果


Posted in Javascript onJuly 24, 2018

本文实例为大家分享了微信小程序实现tab切换效果的具体代码,供大家参考,具体内容如下

效果图如下: (请自动忽视底部tab.....)

 微信小程序实现滴滴导航tab切换效果

简单介绍一下:顶部导航使用 scroll-view 组件 中间的内容部分使用 swiper 组件

实现的逻辑就是: 先这样在这样,这样然后那样。(此处省略200个字)。

代码如下,复制可用

wxml

<view class="contain">
 <!-- 导航栏 -->
 <scroll-view class="tab" scroll-x scroll-left="{{tabScroll}}" scroll-with-animation="true">
 <block wx:for="{{menuList}}" wx:key="index">
  <view class="tab-item {{currentTab == index ? 'active' : ''}}" data-current="{{index}}" bindtap='clickMenu'>{{item.name}}</view>
 </block>
 </scroll-view>
 <!-- 页面 -->
 <swiper class="content" style='height: {{height}}px' duration="1000" current="{{currentTab}}" bindchange="changeContent">
 <swiper-item class="content-item" wx:for="{{menuList}}" wx:key="index">这里是{{item.name}}</swiper-item>
 </swiper>
</view>

js

Page({
 data: {
 menuList: [{
  name: "快车"
 }, {
  name: "顺风车"
 }, {
  name: "外卖"
 }, {
  name: "单车"
 }, {
  name: "礼橙专车"
 }, {
  name: "出租车"
 }, {
  name: "公交"
 }, {
  name: "代驾"
 }, {
  name: "豪华车"
 }, {
  name: "自驾租车"
 }, {
  name: "拼车"
 }, {
  name: "二手车"
 }],
 tabScroll: 0,
 currentTab: 0,
 windowHeight: '',
 windowWidth: ''
 },
 onLoad: function() { 
 wx.getSystemInfo({  // 获取当前设备的宽高,文档有
  success: (res) => { 
  this.setData({
   windowHeight: res.windowHeight,
   windowWidth: res.windowWidth
  })
  },
 })
 },
 onReady: function() {
 wx.setNavigationBarTitle({ //修改标题文字
  title: ''
 })
 },
 clickMenu: function(e) {
 var current = e.currentTarget.dataset.current //获取当前tab的index
 var tabWidth = this.data.windowWidth / 5 // 导航tab共5个,获取一个的宽度
 this.setData({
  tabScroll: (current - 2) * tabWidth //使点击的tab始终在居中位置
 }) 
 if (this.data.currentTab == current) {
  return false
 } else {
  this.setData({currentTab: current })
 }
 },
 changeContent: function(e) {
 var current = e.detail.current // 获取当前内容所在index,文档有
 var tabWidth = this.data.windowWidth / 5 
 this.setData({
  currentTab: current,
  tabScroll: (current - 2) * tabWidth
 })
 }
})

css 

.contain{
 width: 100%;
 height: 100%;
}
.tab{
 width: 100%;
 height: 100rpx;
 position: fixed;
 top: 0;
 left: 0;
 z-index: 100;
 white-space: nowrap;
 box-sizing: border-box;
 overflow: hidden;
 line-height: 100rpx;
 
}
.tab-item{
 display: inline-block;
 width: 20%;
 text-align: center;
 font-size: 14px;
 color: #8f9193;
}
.active{
 color: #ff502c
}
.content{
 padding-top: 100rpx;
 box-sizing: border-box;
 text-align: center;
 font-size: 14px;
}
.content-item{
 overflow-y: scroll
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS实现点击图片在当前页面放大并可关闭的漂亮效果
Oct 18 Javascript
jQuery插件Validate实现自定义校验结果样式
Jan 18 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
Aug 05 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
Dec 14 Javascript
浅谈js script标签中的预解析
Dec 30 Javascript
js实现手机发送验证码功能
Mar 13 Javascript
关于jquery form表单序列化的注意事项详解
Aug 01 jQuery
node.js+captchapng+jsonwebtoken实现登录验证示例
Aug 17 Javascript
集合Bootstrap自定义confirm提示效果
Sep 19 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
Oct 31 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
Apr 14 Javascript
uniapp微信小程序:key失效的解决方法
Jan 20 Javascript
JavaScript引用类型Array实例分析
Jul 24 #Javascript
详解微信小程序调起键盘性能优化
Jul 24 #Javascript
原生JavaScript实现remove()和recover()功能示例
Jul 24 #Javascript
js+canvas实现验证码功能
Sep 21 #Javascript
微信小程序网络请求封装示例
Jul 24 #Javascript
js实现敏感词过滤算法及实现逻辑
Jul 24 #Javascript
jQuery实现导航样式布局操作示例【可自定义样式布局】
Jul 24 #jQuery
You might like
解析thinkphp基本配置 convention.php
2013/06/18 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
XENON基于JSON变种
2010/07/27 Javascript
JS获取整个页面文档的实现代码
2011/12/15 Javascript
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
2013/07/09 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
2013/08/23 Javascript
jquery 模板的应用示例
2013/11/12 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
2015/11/07 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
nodejs 终端打印进度条实例代码
2017/04/22 NodeJs
详解Angular5/Angular6项目如何添加热更新(HMR)功能
2018/10/10 Javascript
微信小程序错误this.setData报错及解决过程
2019/09/18 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
2019/12/10 Javascript
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
Python自动发邮件脚本
2017/03/31 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
利用Python如何生成便签图片详解
2018/07/09 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
python接入支付宝的实例操作
2020/07/20 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
实现CSS3中的border-radius(边框圆角)示例代码
2013/07/19 HTML / CSS
迪拜航空官方网站:flydubai
2017/04/20 全球购物
Move Free官方海外旗舰店:美国骨关节健康专业品牌
2017/12/06 全球购物
通信生自我鉴定
2014/01/18 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
护士个人总结范文
2015/02/13 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
jquery插件实现搜索历史
2021/04/24 jQuery
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle