导航栏

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

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

tabs.wxml

 <!--  顶部TabList  -->
<view wx:if="{{tab_config.fixed}}" class="tab-bar">
<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;">
<text>{{item}}</text>
</view>
<view style="width: {{tab_config.item_width-tab_config.underline.margins}}px; left: {{tab_config.underline.offset}}px;" class="under-line withAnimate"></view>
</view>
<scroll-view wx:else class="tab-bar" scroll-x="true" bindscroll="onScroll" style="width: 100%;" scroll-left="{{tab_config.tab_left}}">
<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;">
<text>{{item}}</text>
</view>
<view style="width: {{tab_config.item_width-tab_config.underline.margins}}px; left: {{tab_config.underline.offset+10}}px;" class="under-line withAnimate"></view>
</scroll-view> <!-- 滑动页面 -->
<swiper class='swiper' bindchange='bindChange' current='{{swipe_config.current}}' indicator-dots='{{swipe_config.indicator_dots}}' autoplay='{{swipe_config.autoplay}}'>
<block wx:for="{{orderList}}" wx:for-item='orders'>
<swiper-item class='swiper-item'>
<!-- 页面内容 -->
</swiper-item>
</block>
</swiper>

tabs.wxss

/*  顶部TabList  */

.withAnimate {
transition: all 200ms ease-out;
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
-ms-backface-visibility: hidden;
backface-visibility: hidden;
-webkit-perspective:;
-moz-perspective:;
-ms-perspective:;
perspective:;
} .tab-bar {
position: relative;
white-space: nowrap;
display: block;
font-size: 11pt;
color: #666;
height: 40px;
background: #fff;
} .tab-bar .tab {
display: inline-block;
line-height: 40px;
text-align: center;
} .tab-bar .tab-active {
color: #e64340;
} .tab-bar .under-line {
position: absolute;
height: 2px;
top: 38px;
background-color: #e64340;
}
.
.swiper {
  margin-top: 20rpx;
  height: 500rpx;
}

tabs.js

data: {
tabTouch: false, //tab点击会触发swiper的滚动,会导致调用两次相同的服务,使用此tag来阻止swiper调用服务,只是切换page
window_width: wx.getSystemInfoSync().windowWidth || 375,// 单位是px
tab_config: {
tabs: ['全部', '待付款', '待发货', '待收货', '已完成', '已退款', '已取消'],// tabs
fixed: false, // tabbar是否固定宽度
active_tab: 0, //当前激活的tab
item_width: 70,// 单位是px
tab_left: 0, // 如果tabbar不是固定宽度,则目前左移的位置
underline: {
offset: 0, //下划线的位移
margins: 20, //下划线的左右间距
}
},
swipe_config: {
indicator_dots: false, // 不显示小圆点
autoplay: false,// 自动切换
interval: 2000,// 自动切换频率
duration: 500, // 切换时间
current: 0 // 当前激活的panel
}
//...
}, /**
* 更换页面到指定page ,从0开始
*/
updateSelectedPage(page) {
let that = this;
//console.log("========== updateSelectedPage" + page);
let { window_width, tab_config, swipe_config } = this.data;
let underline_offset = tab_config.item_width * page; tab_config.active_tab = page;
swipe_config.current = page;
tab_config.underline.offset = underline_offset;
if (!tab_config.fixed) {
// 如果tab不是固定的 就要 检测tab是否被遮挡
let show_item_num = Math.round(window_width / tab_config.item_width); // 一个界面完整显示的tab item个数
let min_left_item = tab_config.item_width * (page - show_item_num + 1); // 最小scroll-left
let max_left_item = tab_config.item_width * page; // 最大scroll-left
if (tab_config.tab_left < min_left_item || tab_config.tab_left > max_left_item) {
// 如果被遮挡,则要移到当前元素居中位置
tab_config.tab_left = max_left_item - (window_width - tab_config.item_width) / 2;
}
}
that.setData({
"tab_config": tab_config,
"swipe_config": swipe_config
});
//调用页面的接口更新页面
that.loadOrderList(page);
}, /**
* tab的点击事件
*/
handlerTabTap(e) {
this.setData({
tabTouch: true
})
this.updateSelectedPage(e.currentTarget.dataset.index);
}, /**
* swiper的滑动事件
*/
bindChange(e) {
if (!this.data.tabTouch) {
// console.log("===== swiperChange " + e.detail.current);
this.updateSelectedPage(e.detail.current);
}
}

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

  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. Item 26: 避免对universal引用进行重载

    本文翻译自<effective modern C++>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 如果你需要写一个以名字作为参数,并记录下当前日期和 ...

  2. Windows Community Toolkit 3.0 - InfiniteCanvas

    概述 InfiniteCanvas 是一个 Canvas 控件,它支持无限画布的滚动,支持 Ink,文本,格式文本,画布缩放操作,撤销重做操作,导入和导出数据. 这是一个非常实用的控件,在“来画视频” ...

  3. 内置函数二: map sorted filter

    -----------生活里没有奇迹,大部分的时候奇迹是你自己创造的. # -------------------------------------------------------------- ...

  4. 第4次oo作业

    作业概述 作业1:多项式加法 第一次作业理解上并不困难,简言之是一个多项式合并同类项,但对于我这个第一次使用java进行编程的小白,还是充满了血和泪. 在这次课程之前,我稍微对java有一些了解,但也 ...

  5. [2019BUAA软工助教]第一次阅读 - 小结

    [2019BUAA软工助教]第一次阅读 - 小结 一.评分规则 总分 16 分,附加 2 分,共 18 分 markdown格式统一且正确 - 2分 不统一:扣 1 分 不正确:扣 1 分(例如使用代 ...

  6. PS调出甜美艺术外景女生照片

    前期思路:拍摄时间大概在下午三四点左右,IOS100 f/1.8 .其实夏天最好的拍摄时间在傍晚五点这样,曝光太强片子会泛白,这张原片首先构图不是很好看,所以我要给它二次构图裁剪一下.下面是裁剪好后的 ...

  7. 个人博客作业-week5-敏捷开发方法读后感

    满篇英文对一个非单词狂魔来说真的是很吃力啊… 敏捷软件开发方法是一种从1990年代开始逐渐引起广发关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力,他们的具体名称.理念.过程.术 ...

  8. org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manu

    这个是sql 语句 错误     仔细检查 SQL语句是否写错了 org.apache.ibatis.exceptions.PersistenceException: ### Error queryi ...

  9. Redis教程(Windows)

    安装 1)下载redis压缩包并  , 推荐地址:https://github.com/MSOpenTech/redis/releases Redis 支持 32 位和 64 位.这个需要根据你系统平 ...

  10. python3 网页下拉框和悬浮框操作基础汇总

    #悬浮定位操作 from selenium.webdrier import ActionChains #浏览器实例化 #定位移动的位置赋给一个参数 ActionChains(浏览器).move_to_ ...