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


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 相关文章推荐
Mootools 1.2教程 选项卡效果(Tabs)
Sep 15 Javascript
jquery提示 &quot;object expected&quot;的解决方法
Dec 13 Javascript
javascript 数组排序函数sort和reverse使用介绍
Nov 21 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
Aug 15 Javascript
Node.js实现批量去除BOM文件头
Dec 20 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
Sep 21 Javascript
vue.js,ajax渲染页面的实例
Feb 11 Javascript
JS实现图片旋转动画效果封装与使用示例
Jul 09 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
Aug 17 Javascript
JavaScript实现省市联动效果
Nov 22 Javascript
JQuery表单元素取值赋值方法总结
May 12 jQuery
Vue实现简单计算器
Jan 20 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
德生PL550的电路分析
2021/03/02 无线电
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
详解php中空字符串和0之间的关系
2016/10/23 PHP
Yii框架响应组件用法实例分析
2019/09/04 PHP
php命令行模式代码实例详解
2021/02/26 PHP
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
artDialog+plupload实现多文件上传
2016/07/19 Javascript
JSONP和批量操作功能的实现方法
2016/08/21 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
vue实现的上拉加载更多数据/分页功能示例
2019/05/25 Javascript
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
Python random模块常用方法
2014/11/03 Python
Python中暂存上传图片的方法
2015/02/18 Python
Python设计模式之命令模式简单示例
2018/01/10 Python
Python3非对称加密算法RSA实例详解
2018/12/06 Python
python多线程与多进程及其区别详解
2019/08/08 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
YSL圣罗兰美妆美国官网:Yves Saint Lauret US
2016/11/21 全球购物
Simons官方网站:加拿大时尚零售商
2020/02/20 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
司机的工作范围及职责
2013/11/13 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
Python中Schedule模块使用详解 周期任务神器
2022/04/19 Python