微信小程序实现tab左右切换效果


Posted in Javascript onNovember 15, 2020

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

分析

1、设置data-current属性用于:点击当前项时,通过点击事件swichNav中处理e.dataset.current取到点击的目标值。

2、swiper组件的current组件用于控制当前显示哪一页

3、swiper组件绑定change事件switchTab,通过e.detail.current拿到当前页

wxml:

<view class="record-box">
 <view class="nav">
  <scroll-view scroll-x="true" class="navbar-box" srcoll-left="{{navScrollLeft}}"
   srcoll-width-animation="{{true}}">
   <block wx:for="{{recordMain}}" wx:for-index="idx" wx:for-item="navItem" wx:key="idx">
    <view class="nav-item {{currentTab == idx ? 'text' : ''}}" data-current="{{idx}}" 
     bindtap="switchNav">
     <label>{{navItem.text}}</label>
    </view>
   </block>
  </scroll-view>
 </view>
</view>
------------------------------------------------
<view class="record-ft">
 <swiper class="tab-box" current="{{currentTab}}" duration="300" bindchange="switchTab">
  <swiper-item wx:for="{{[0,1,2,3]}}" wx:for-item="tabItem" wx:for-index="idx" wx:key="idx"
    class="tab-cnetent">
    <block wx:for="{{tabContent}}" wx:for-item="tabItem" wx:key=" ">
     <view class="padding-box" bindtap="navigateUrl" data-url="/pages/index/index">
      <view class="weui-list-box weui-main">
       <view class="weui-list-bd">
        <view class="img-box">
         <image src="{{tabItem}}" class="img" mode="widthFix"></image>
        </view>
       </view>
       <view class="weui-list-ft">
        <view class="weui-title">
         <view class="text-flow clamp-xs font-sm">{{tabItem.title}}</view>
         <view class="text">
          <laber>{{tabItem.text}}</laber>
          <laber>{{tabItem.text}}</laber>
         </view>
        </view>
        <view class="weui-cost">
         <view>¥<laber>{{tanItem.cost}}</laber></view>
        </view>
       </view>
      </view>
     </view>
    </block>
  </swiper-item>
 </swiper>
</view>

JS

Page ({
 const app = getApp()
 data: {
  recordMian: [
   {
    title: "插画艺术"
   },
   {
    title: "工艺作品"
   },
   {
    title: "服装艺术"
   },
   {
    title: "三维建模"
   },
  ],
  tabContent: [
   {
    title: "台灯卧室床头 简约现代书房 北欧宜家创意装饰个性圆球台灯床头灯",
    text: "台灯",
    cost: "1255",
    imgUrl: "http://img.weiye.me/zcimgdir/album/file_59b8f7b66ba7f.jpg",
   },
   {
    title: "雪域冰雪天地8寸牛乳芝士蛋糕",
    text: "蛋糕",
    cost: "15",
    imgUrl: "http://img.weiye.me/zcimgdir/album/file_59b8f7b66ba7f.jpg",
   },
  ],
  currentTab: 0,
  navScrollLeft: 0
 },
 // 事件处理函数
 onLoad: function() {
  // 控制record-box随鼠标切换调整位置
  if (app.globalData.userInfo) {
   this.setData({
    userInfo: app.globalData.userInfo,
    hasUserInfo: true
   })
   } else if (this.data.canIUse) {
    app.userInfoReadyCallback = res => {
     this.setData({
      userInfo: res.userInfo,
      hasUserInfo: true
     })
    }
   }
  else {
   wx.getUserInfo({
    success: res => {
     app.globalData.userInfo = res.userInfo
     this.setData({
      userInfo: res.userInfo,
      hasUserInfo: true
     })
    }
   })
  }
  wx.getSystemInfo({
   success: (res) => {
    this.setData({
     pixelRatio: res.pixelRatio,
     windowHeight: res.windowHeight,
     windowWidth: res.windowWidth
    })
   }
  })
 },
 // 滑动事件
 // 点击标题切换当前页时改变样式
 switchNav(event) {
  var cur = event.currentTarget.dataset.current;
  if (this.data.currentTab == cur) {
   return false;
  } else {
   this.setData({
    currentTab: cur
   })
  }
 },
 // 滚动切换标签样式 
 switchTab(event) {
  var cur = evnet.detail.current;
  var singeNavWidth = this.data.windowWidth / 5;
  this.setData({
   currentTab: cur,
   navScrollLeft: (cur - 2) * singleNavWidth
  });
 }
})

效果图:

微信小程序实现tab左右切换效果

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

Javascript 相关文章推荐
JavaScript window.setTimeout() 的详细用法
Nov 04 Javascript
Juqery Html(),append()等方法的Bug解决方法
Dec 13 Javascript
js String对象中常用方法小结(字符串操作)
Jan 27 Javascript
js实现简单锁屏功能实例
May 27 Javascript
javascript实现根据时间段显示问候语的方法
Jun 18 Javascript
JavaScript数组方法大全(推荐)
Jul 05 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
Nov 24 Javascript
react中使用swiper的具体方法
May 15 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
Jul 26 Javascript
element-ui 设置菜单栏展开的方法
Aug 22 Javascript
vue.js父子组件通信动态绑定的实例
Sep 28 Javascript
antd table按表格里的日期去排序操作
Nov 17 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
Sep 11 #Javascript
vue项目中使用tinymce编辑器的步骤详解
Sep 11 #Javascript
VUE 实现滚动监听 导航栏置顶的方法
Sep 11 #Javascript
vue中的watch监听数据变化及watch中各属性的详解
Sep 11 #Javascript
vue axios数据请求get、post方法及实例详解
Sep 11 #Javascript
js监听html页面的上下滚动事件方法
Sep 11 #Javascript
vue 使用html2canvas将DOM转化为图片的方法
Sep 11 #Javascript
You might like
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
php递归调用删除数组空值元素的方法
2015/04/28 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
2019/10/17 PHP
学习YUI.Ext 第七天--关于View&amp;JSONView
2007/03/10 Javascript
javascript 贪吃蛇实现代码
2008/11/22 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
jquery 学习之二 属性(html()与html(val))
2010/11/25 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
javascript中数组的concat()方法使用介绍
2013/12/18 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
2014/04/17 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
jQuery实现自定义事件的方法
2015/04/17 Javascript
Bootstrap下拉菜单效果实例代码分享
2016/06/30 Javascript
node.js实现的装饰者模式示例
2017/09/06 Javascript
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
浅析vue中的provide / inject 有什么用处
2019/11/10 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
2020/06/17 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
Python多进程分块读取超大文件的方法
2016/04/13 Python
Python Paramiko模块的使用实际案例
2018/02/01 Python
python matplotlib库直方图绘制详解
2019/08/10 Python
Python多线程获取返回值代码实例
2020/02/17 Python
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
生物制药毕业生自荐信
2013/10/16 职场文书
专科应届生求职信
2013/11/24 职场文书
初中班主任评语
2014/04/24 职场文书
法人身份证明书
2015/06/18 职场文书
详解Nginx启动失败的几种错误处理
2021/04/01 Servers
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS
Rust 连接 PostgreSQL 数据库的详细过程
2022/01/22 PostgreSQL
python+opencv实现目标跟踪过程
2022/06/21 Python