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


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 相关文章推荐
web开发人员学习jQuery的6大理由及jQuery的优势介绍
Jan 03 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
Nov 30 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
Jun 06 Javascript
快速掌握jQuery插件WebUploader文件上传
Nov 07 Javascript
微信小程序 setData使用方法及常用错误解决办法
May 11 Javascript
详解vue.js之绑定class和style的示例代码
Aug 24 Javascript
AngularJS 前台分页实现的示例代码
Jun 07 Javascript
jQuery实现简单的Ajax调用功能示例
Feb 15 jQuery
了解Javascript中函数作为对象的魅力
Jun 19 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
Apr 13 Javascript
Postman如何实现参数化执行及断言处理
Jul 28 Javascript
javaScript Array api梳理
Mar 31 Javascript
详解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 来访国内外IP判断代码并实现页面跳转
2009/12/18 PHP
php下关于中英数字混排的字符串分割问题
2010/04/06 PHP
PHP的加密方式及原理
2012/06/14 PHP
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
PHP使用SMTP邮件服务器发送邮件示例
2018/08/28 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
jquery $.each() 使用小探
2013/08/23 Javascript
javaScript如何处理从java后台返回的list
2014/04/24 Javascript
jQuery中insertAfter()方法用法实例
2015/01/08 Javascript
浅谈JavaScript Math和Number对象
2015/01/26 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
jQuery弹出窗口简单实现代码
2017/03/09 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
微信小程序开发之toast提示插件使用示例
2017/06/08 Javascript
JavaScript面向对象程序设计创建对象的方法分析
2018/08/13 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
[01:07:19]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第一场 1月19日
2021/03/11 DOTA
Python中url标签使用知识点总结
2020/01/16 Python
python add_argument()用法解析
2020/01/29 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
2020/03/24 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
携程英文网站:Trip.com
2017/02/07 全球购物
飞利浦西班牙官方网站:Philips西班牙
2020/02/17 全球购物
企业宣传语大全
2015/07/13 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
win10安装配置nginx的过程
2021/03/31 Servers
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python
uniapp引入支付宝原生扫码插件步骤详解
2022/07/23 Javascript
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript