微信小程序实现点击导航条切换页面


Posted in Javascript onNovember 19, 2020

本文实例为大家分享了微信小程序实现点击导航条切换页面的具体代码,供大家参考,具体内容如下

我录制了个gif如下,黄色部分是不可以滑动的,蓝色部分可以滑动。

微信小程序实现点击导航条切换页面

代码解说:

  • 首先我在js自定义了navState参数用于判断导航的当前状态,
  • 定义了data-index用于js中动态修改导航的当前状态,
  • nav-switch-style为选择导航条时的样式,
  • 不可滑动视图切换很简单,用wx:if判断状态显示相应页就好了,
  • 滑动页视图切换要用到swiper和 swiper-item,
  • 用bindchang方法监听滑块,current 改变时会触发 change 事件(还有个bindanimationfinish方法监听也是可以用的,详细请看官方文档)
  • 动态的绑定了current滑块的index,这样就可以实现点击导航条滑块跟着滚动,
  • 相反的,当滑动滑块时,就可以根据current的值来动态修改导航的状态了。

wxml代码:

<!-- 导航条 -->
<view class="nav">
 <view bindtap="navSwitch" data-index="0" class="{{navState==0 ? 'nav-switch-style':''}}">页面一</view>
 <view bindtap="navSwitch" data-index="1" class="{{navState==1 ? 'nav-switch-style':''}}">页面二</view>
 <view bindtap="navSwitch" data-index="2" class="{{navState==2 ? 'nav-switch-style':''}}">页面三</view>
</view>
<!-- 不可滑动页 -->
<view>
 <view wx:if="{{navState==0}}" class="style-default">1</view>
 <view wx:elif="{{navState==1}}" class="style-default">2</view>
 <view wx:else="{{navState==2}}" class="style-default">3</view>
</view>
<!-- 滑动页 -->
<swiper bindchange="bindchange" current="{{navState}}">
 <block>
 <swiper-item>
 <view class="style-roll">
 <text>左右可滑动1</text>
 </view>
 </swiper-item>
 <swiper-item>
 <view class="style-roll">
 <text>左右可滑动2</text>
 </view>
 </swiper-item>
 <swiper-item>
 <view class="style-roll">
 <text>左右可滑动3</text>
 </view>
 </swiper-item>
 </block>
</swiper>

js代码:

Page({
 data: {
 navState: 0,//导航状态
 },
 //监听滑块
 bindchange(e) {
 // console.log(e.detail.current)
 let index = e.detail.current;
 this.setData({
 navState:index
 })
 },
 //点击导航
 navSwitch: function(e) {
 // console.log(e.currentTarget.dataset.index)
 let index = e.currentTarget.dataset.index;
 this.setData({
 navState:index
 })
 },

 /**
 * 生命周期函数--监听页面加载
 */
 onLoad: function(options) {

 },
})

wxss代码:

.nav{
 display: flex;
 justify-content: space-around;
 padding: 20rpx;
 background-color: rgb(129, 241, 55);
 font-size: 30rpx;
}
.nav-switch-style{
 color: snow;
}
.style-default{
 background-color: rgb(247, 229, 130);
 padding: 100rpx 0;
 text-align: center;
}
.style-roll{
 background-color: rgb(130, 177, 247);
 padding: 100rpx 0;
 text-align: center;
}

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

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

Javascript 相关文章推荐
JQuery 动态扩展对象之另类视角
May 25 Javascript
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
Jan 01 Javascript
js验证模型自我实现的具体方法
Jun 21 Javascript
12种不宜使用的Javascript语法整理
Nov 04 Javascript
JavaScript中对循环语句的优化技巧深入探讨
Jun 06 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
Oct 13 Javascript
canvas仿iwatch时钟效果
Mar 06 Javascript
Node.js 实现简单的接口服务器的实例代码
May 23 Javascript
Angular.js ng-file-upload结合springMVC的使用教程
Jul 10 Javascript
微信小程序实现一个简单swiper代码实例
Dec 30 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
Jul 20 Javascript
关于Vue中的options选项
Mar 22 Vue.js
详解Vue的mixin策略
Nov 19 #Vue.js
微信小程序自定义底部弹出框功能
Nov 18 #Javascript
微信小程序实现底部弹出框
Nov 18 #Javascript
微信小程序实现弹幕墙(祝福墙)
Nov 18 #Javascript
一篇超完整的Vue新手入门指导教程
Nov 18 #Vue.js
基于Cesium绘制抛物弧线
Nov 18 #Javascript
vue3.0实现点击切换验证码(组件)及校验
Nov 18 #Vue.js
You might like
php调用新浪短链接API的方法
2014/11/08 PHP
PHP如何使用JWT做Api接口身份认证的实现
2020/02/03 PHP
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
2007/01/22 Javascript
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
JavaScript从数组中删除指定值元素的方法
2015/03/18 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
js中new一个对象的过程
2017/02/20 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
详解vue-cli3开发Chrome插件实践
2019/05/29 Javascript
echarts大屏字体自适应的方法步骤
2019/07/12 Javascript
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
python中使用xlrd、xlwt操作excel表格详解
2015/01/29 Python
Python魔术方法详解
2015/02/14 Python
Python3.2中的字符串函数学习总结
2015/04/23 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
浅谈Pycharm中的Python Console与Terminal
2019/01/17 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
浅谈Python中re.match()和re.search()的使用及区别
2020/04/14 Python
Python 多进程、多线程效率对比
2020/11/19 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
火箭队口号
2014/06/18 职场文书
团队拓展活动总结
2014/08/27 职场文书
基层党员四风问题自我剖析材料
2014/09/29 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
成都人事代理协议书
2014/10/25 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书
gateway与spring-boot-starter-web冲突问题的解决
2021/07/16 Java/Android