导航栏

作者:beatzcs
       链接:https://www.jianshu.com/p/c681007a6287

这个导航虽然已经很完善了,不过还是要根据自己的来进行修改的

tabs.wxml

  1. <!-- 顶部TabList -->
  2. <view wx:if="{{tab_config.fixed}}" class="tab-bar">
  3. <view wx:for="{{tab_config.tabs}}" wx:key="unique" data-index="{{index}}" bindtap="handlerTabTap" class="tab {{tab_config.active_tab==index?'tab-active':''}} " style="width: {{tab_config.item_width}}px;">
  4. <text>{{item}}</text>
  5. </view>
  6. <view style="width: {{tab_config.item_width-tab_config.underline.margins}}px; left: {{tab_config.underline.offset}}px;" class="under-line withAnimate"></view>
  7. </view>
  8. <scroll-view wx:else class="tab-bar" scroll-x="true" bindscroll="onScroll" style="width: 100%;" scroll-left="{{tab_config.tab_left}}">
  9. <view wx:for="{{tab_config.tabs}}" wx:key="unique" data-index="{{index}}" bindtap="handlerTabTap" class="tab {{tab_config.active_tab==index?'tab-active':''}} " style="width: {{tab_config.item_width}}px;">
  10. <text>{{item}}</text>
  11. </view>
  12. <view style="width: {{tab_config.item_width-tab_config.underline.margins}}px; left: {{tab_config.underline.offset+10}}px;" class="under-line withAnimate"></view>
  13. </scroll-view>
  14.  
  15. <!-- 滑动页面 -->
  16. <swiper class='swiper' bindchange='bindChange' current='{{swipe_config.current}}' indicator-dots='{{swipe_config.indicator_dots}}' autoplay='{{swipe_config.autoplay}}'>
  17. <block wx:for="{{orderList}}" wx:for-item='orders'>
  18. <swiper-item class='swiper-item'>
  19. <!-- 页面内容 -->
  20. </swiper-item>
  21. </block>
  22. </swiper>

tabs.wxss

  1. /* 顶部TabList */
  2.  
  3. .withAnimate {
  4. transition: all 200ms ease-out;
  5. -webkit-transform: translate3d(0, 0, 0);
  6. -moz-transform: translate3d(0, 0, 0);
  7. -ms-transform: translate3d(0, 0, 0);
  8. transform: translate3d(0, 0, 0);
  9. -webkit-backface-visibility: hidden;
  10. -moz-backface-visibility: hidden;
  11. -ms-backface-visibility: hidden;
  12. backface-visibility: hidden;
  13. -webkit-perspective:;
  14. -moz-perspective:;
  15. -ms-perspective:;
  16. perspective:;
  17. }
  18.  
  19. .tab-bar {
  20. position: relative;
  21. white-space: nowrap;
  22. display: block;
  23. font-size: 11pt;
  24. color: #666;
  25. height: 40px;
  26. background: #fff;
  27. }
  28.  
  29. .tab-bar .tab {
  30. display: inline-block;
  31. line-height: 40px;
  32. text-align: center;
  33. }
  34.  
  35. .tab-bar .tab-active {
  36. color: #e64340;
  37. }
  38.  
  39. .tab-bar .under-line {
  40. position: absolute;
  41. height: 2px;
  42. top: 38px;
  43. background-color: #e64340;
  44. }
    .
.swiper {
  margin-top: 20rpx;
  height: 500rpx;
}

tabs.js

  1. data: {
  2. tabTouch: false, //tab点击会触发swiper的滚动,会导致调用两次相同的服务,使用此tag来阻止swiper调用服务,只是切换page
  3. window_width: wx.getSystemInfoSync().windowWidth || 375,// 单位是px
  4. tab_config: {
  5. tabs: ['全部', '待付款', '待发货', '待收货', '已完成', '已退款', '已取消'],// tabs
  6. fixed: false, // tabbar是否固定宽度
  7. active_tab: 0, //当前激活的tab
  8. item_width: 70,// 单位是px
  9. tab_left: 0, // 如果tabbar不是固定宽度,则目前左移的位置
  10. underline: {
  11. offset: 0, //下划线的位移
  12. margins: 20, //下划线的左右间距
  13. }
  14. },
  15. swipe_config: {
  16. indicator_dots: false, // 不显示小圆点
  17. autoplay: false,// 自动切换
  18. interval: 2000,// 自动切换频率
  19. duration: 500, // 切换时间
  20. current: 0 // 当前激活的panel
  21. }
  22. //...
  23. },
  24.  
  25. /**
  26. * 更换页面到指定page ,从0开始
  27. */
  28. updateSelectedPage(page) {
  29. let that = this;
  30. //console.log("========== updateSelectedPage" + page);
  31. let { window_width, tab_config, swipe_config } = this.data;
  32. let underline_offset = tab_config.item_width * page;
  33.  
  34. tab_config.active_tab = page;
  35. swipe_config.current = page;
  36. tab_config.underline.offset = underline_offset;
  37. if (!tab_config.fixed) {
  38. // 如果tab不是固定的 就要 检测tab是否被遮挡
  39. let show_item_num = Math.round(window_width / tab_config.item_width); // 一个界面完整显示的tab item个数
  40. let min_left_item = tab_config.item_width * (page - show_item_num + 1); // 最小scroll-left
  41. let max_left_item = tab_config.item_width * page; // 最大scroll-left
  42. if (tab_config.tab_left < min_left_item || tab_config.tab_left > max_left_item) {
  43. // 如果被遮挡,则要移到当前元素居中位置
  44. tab_config.tab_left = max_left_item - (window_width - tab_config.item_width) / 2;
  45. }
  46. }
  47. that.setData({
  48. "tab_config": tab_config,
  49. "swipe_config": swipe_config
  50. });
  51. //调用页面的接口更新页面
  52. that.loadOrderList(page);
  53. },
  54.  
  55. /**
  56. * tab的点击事件
  57. */
  58. handlerTabTap(e) {
  59. this.setData({
  60. tabTouch: true
  61. })
  62. this.updateSelectedPage(e.currentTarget.dataset.index);
  63. },
  64.  
  65. /**
  66. * swiper的滑动事件
  67. */
  68. bindChange(e) {
  69. if (!this.data.tabTouch) {
  70. // console.log("===== swiperChange " + e.detail.current);
  71. this.updateSelectedPage(e.detail.current);
  72. }
  73. }

微信小程序——代码片段汇集的更多相关文章

  1. 微信小程序代码片段

    微信小程序代码片段是一种可分享的小项目,可用于分享小程序和小游戏的开发经验.展示组件和 API 的使用.复现开发问题等等.分享代码片段会得到一个链接,所有拥有此分享链接的人可以在工具中导入此代码片段. ...

  2. [RN] React Native代码转换成微信小程序代码的转换引擎工具

    React Native代码转换成微信小程序代码的转换引擎工具 https://github.com/areslabs/alita

  3. 微信小程序代码构成

    一.小程序代码 app.json 是当前小程序的全局配置,包括了小程序的所有页面路径.界面表现.网络超时时间.底部tab等. { "pages":[ "pages/ind ...

  4. 微信小程序代码大全 - 小程序开发福利

    小程序QQ交流群:131894955 小程序开发文档(Wepy) 小程序商城源码下载(weixin-app-shop) 小程序官网源码下载(weixin-app-cms) 微信管家平台JAVA版开源下 ...

  5. webstorm开发微信小程序代码提醒(webstorm开发工具)

    使用了微信提供的开发工具是真心难用,卡顿厉害.中英文切写注释换相当不爽.还没办法多开窗口,相信大家也遇到过这种现象. 下边我们介绍下webstorm来开发微信小程序的一些配置: File---sett ...

  6. 微信小程序代码开源啦

    想学习如何使用mpvue开发微信小程序吗? 想知道微信消息推送如何实现吗? 想知道如何用springboot开发小程序后台吗? 看这里就全都有了.耗时一个月打造的微信小程序:PSN折扣助手前后端所有源 ...

  7. 史上最全的微信小程序代码大全

    --------------------- 本文来自 fenxiangjun 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/fenxiangjun/article/d ...

  8. 如何减小微信小程序代码包大小

    原作于:https://captnotes.com/how_to_reduce_package_size_of_weapp 这两天被小程序代码包大小暴涨的问题困扰了挺久.简单说说怎么回事吧,就是之前好 ...

  9. 微信小程序--代码构成---JSON 配置

    在上一章中,我们通过开发者工具快速创建了一个 QuickStart 项目.你可以留意到这个项目里边生成了不同类型的文件: .json 后缀的 JSON 配置文件 .wxml 后缀的 WXML 模板文件 ...

随机推荐

  1. 剑指Offer-- 二叉搜索树中和为某一值的路径

    输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 本身题目不是很难,但是因为刚接触pyhon,对一些对象的传 ...

  2. Python中IO概述

    Python中的io模块是用来处理各种类型的I/O操作流.主要有三种类型的I/O类型:文本I/O(Text I/O),二进制I/O(Binary I/O)和原始I/O(Raw I/O).它们都是通用类 ...

  3. C. Polycarp Restores Permutation

    链接 [https://codeforces.com/contest/1141/problem/C] 题意 qi=pi+1−pi.给你qi让你恢复pi 每个pi都不一样 分析 就是数学吧 a1 +(a ...

  4. pip3 升级失败的解决方法!亲测有效

    pip3 --default-timeout=10000 install -U pip 注意:由于防火长城的存在,会导致更新失败,如果你加上--default-timeout=10000  这个就ok ...

  5. centos 7 network.service control process exited

    一.service network restart 出错 问题描述: vmware 12 下centos 7 网络模式,NAT 昨晚作者打算更新自己虚拟机python,发现没网络ping www.ba ...

  6. VO和DO转换(二) BeanUtils

    VO和DO转换(一) 工具汇总 VO和DO转换(二) BeanUtils VO和DO转换(三) Dozer VO和DO转换(四) MapStruct BeanUtils是Spring提供的,通常项目都 ...

  7. Servlet 快速概览

    目录 生命周期 web.xml 获取表单数据(设置请求的编码格式) 返回响应内容(设置响应的编码格式) 结合前两点,总结基本模板 获取请求协议头部信息 设置响应头部信息 使用过滤器 在web.xml中 ...

  8. text-decoration、text-decoration-color、text-decoration-line、text-decoration-style属性

    text-decoration:over-line  定义上划线 text-decoration:line-through  定义删除线 text-decoration:underline  定义下划 ...

  9. MyBatis映射文件2(不支持自增的数据库解决方案/参数处理[单参、多参、命名参数])

    针对Oracle不支持自增的解决方案 Oracle不支持自增,但是它使用序列来模拟自增,每次插入数据的主键是从序列中拿到的值,那么如何获取这个值呢? <insert id="addEm ...

  10. python爬虫之线程池和进程池

    一.需求 最近准备爬取某电商网站的数据,先不考虑代理.分布式,先说效率问题(当然你要是请求的太快就会被封掉,亲测,400个请求过去,服务器直接拒绝连接,心碎),步入正题.一般情况下小白的我们第一个想到 ...