微信小程序实现滴滴导航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 相关文章推荐
DOM节点深度克隆函数cloneNode()用法实例
Jan 12 Javascript
jQuery基于图层模仿五星星评价功能的方法
May 07 Javascript
简单学习JavaScript中的for语句循环结构
Nov 10 Javascript
js实现上传图片及时预览
May 07 Javascript
jQuery Dialog对话框事件用法实例分析
May 10 Javascript
JavaScript事件详细讲解
Jun 27 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
Aug 05 Javascript
vue.js如何将echarts封装为组件一键使用详解
Oct 10 Javascript
JavaScript判断变量名是否存在数组中的实例
Dec 28 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
Apr 19 jQuery
微信小程序去除左上角返回键的实现方法
Mar 06 Javascript
js实现tab栏切换效果
Aug 02 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
php json_encode奇怪问题说明
2011/09/27 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
2017/05/20 PHP
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
JSONP和批量操作功能的实现方法
2016/08/21 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
jquery实现回车键触发事件(实例讲解)
2017/11/21 jQuery
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
nodejs 日志模块winston的使用方法
2018/05/02 NodeJs
微信小程序开发之改变data中数组或对象的某一属性值
2018/07/05 Javascript
在vue-cli中引入lodash.js并使用详解
2019/11/13 Javascript
JS手写一个自定义Promise操作示例
2020/03/16 Javascript
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
Python写的PHPMyAdmin暴力破解工具代码
2014/08/06 Python
Python爬取APP下载链接的实现方法
2016/09/30 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
python爬虫之自动登录与验证码识别
2020/06/15 Python
Python 中Django验证码功能的实现代码
2019/06/20 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
New Balance波兰官方商城:始于1906年,百年慢跑品牌
2017/08/15 全球购物
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
国际旅客访问北美最大的汽车租赁提供商:Alamo Rent A Car
2018/06/13 全球购物
意大利值得信赖的在线超级药房:PillolaStore
2020/02/05 全球购物
傲盾软件面试题
2015/08/17 面试题
会计专业推荐信
2013/10/29 职场文书
刚毕业大学生自荐信范文
2014/02/20 职场文书
2014迎国庆演讲稿
2014/09/19 职场文书
医院岗前培训心得体会
2016/01/08 职场文书