微信小程序实现导航栏和内容上下联动功能代码


Posted in Javascript onJune 29, 2020

  今日给大家分享一下如何实现导航栏(nav)和内容部分上下联动(相关代码模块我已单独整理放到github上面了,欢迎前来start)。

github地址:https://github.com/sunshime/weChatSkill

一、效果图:

微信小程序实现导航栏和内容上下联动功能代码

二、实现过程:

   主要是使用 scroll-view 实现导航栏部分,用 swiper 实现下面的内容部分,通过 swipercurrent 属性和导航栏的 index 相互对应来实现导航栏部分切换时内容部分跟随切换;通过 swiperbindchange 事件拿到当前轮播的索引,对应赋值实现导航栏随着内容切换的效果。

这里有几点是有必要注意一下的:

  • scroll-view 标签必须加上行内样式 overflow:hidden;white-space:nowrap; 否则无法实现滑动效果;
  • scroll-view 包裹的要滑动的盒子元素要让它们变成行内块级元素(display:inline-block;)进行横向排列;
  • scroll-view 包裹的需要滑动的盒子元素使用 display:flex; 是不起作用(无效)的;
  • scroll-view 包裹的需要滑动的盒子元素不能使用浮动。

三、相关代码如下:

(一)wxml

<view class="uplink">
	<scroll-view scroll-x scroll-with-animation scroll-left="{{scrollLefts}}" class="scroll-top" style="overflow:hidden;white-space:nowrap;">
		<view class="top-item {{curIndex===index?'active':''}}" wx:for="{{list}}" wx:key="index" data-index="{{index}}" bindtap="tabNav">{{item.name}}</view>
	</scroll-view>
	<swiper class="swiper" current="{{curIndex}}" bindchange="changeScroll" duration="{{duration}}">
		<swiper-item wx:for="{{list}}" wx:key="index" class="swipers-item">{{item.list}}</swiper-item>
	</swiper>
</view>

(二)wxss

.uplink {
 width: 100%;
 height: 100%;
}

.scroll-top {
 height: 100rpx;
 line-height: 100rpx;
 width: auto;
 background-color: #fff5f5;
}

.top-item {
 display: inline-block;
 width: 65px;
 text-align: center;
 font-size: 32rpx;
 color: #333;
}

.active {
 font-size: 36rpx;
 color: rgb(216, 27, 27);
}

.swiper {
 padding: 20rpx 30rpx;
 height: 100vh;
}

.swipers-item {
 font-size: 32rpx;
 color: #333;
 line-height: 60rpx;
 text-indent: 70rpx;
}

(三)js

import linkageList from '../../api/linkage'
Page({

 /**
  * 页面的初始数据
  */
 data: {
  list: linkageList,
  curIndex: 0,
  scrollLefts: 0,
  duration:300
 },
 // 导航栏滑动
 tabNav(e) {
  let index = e.target.dataset.index;
  this.setData({
   curIndex: index,
   scrollLefts: (index - 2) * 65
  })
 },
 // 内容滑动
 changeScroll(e) {
  let index = e.detail.current;
  this.setData({
   curIndex: index,
   scrollLefts: (index - 2) * 65
  })
 }
})

(四)模拟数据文件

const linkageList = [{
  name: '梨花雪',
  list: [
   '时光年轮一圈圈转着',
   '现在,他站在原地,回首望去,从前点点滴滴,琐琐碎碎',
   '猛然发现,自己已走过了这么多',
   '他想,如果再次遇到下雪天,他会毫不犹豫迎上去',
   '因为那里,有旧时光味道。他仍在怀念,仍在留恋。怀念,白雪纷扬日子。'
  ]
 }, {
  name: '冰雪消融',
  list: [
   '友情是每个人都应有的东西,而且相当的珍贵',
   '在朋友之间,难免会产生分歧,让友情结冰',
   '但我现在知道,友情上消融的冰雪是暖的。'
  ]
 },
 {
  name: '境由心造',
  list: [
   '有人安于某种生活,有人不能',
   '因此能安于自已目前处境的不妨就如此生活下去,不能的只好努力另找出路',
   '你无法断言哪里才是成功的,也无法肯定当自已到达了某一点之后,会不会快乐',
   '有些人永远不会感到满足,他的快乐只建立在不断地追求与争取的过程之中',
   '因此,他的目标不断地向远处推移。这种人的快乐可能少,但成就可能大。'
  ]
 },
 {
  name: '处世之道',
  list: [
   '有一群豪猪,就是野猪啊,身上长刺的那种野猪',
   '大家挤在一起过冬,它们老有一个困惑',
   '就是不知道大家在一起以什么样的距离最好',
   '离得稍微远一点,冬天就冷,互相借不着热气,大家就往一起凑凑',
   '结果一旦凑近了,彼此的刺都扎着对方了',
   '就又开始远离',
   '但是再远的话大家又觉得寒冷',
   '又想借助别人的温暖,就再凑,凑着凑着又受伤了',
   '然后再拉远,多少次磨合以后豪猪们终于找到了一种最最恰如其分的距离',
   '那就是在彼此不伤害的前提下,保持着群体的温暖。'
  ],
 },
 {
  name: '夏天',
  list: [
   '夏天的夜色很美,清爽的晚风哼着小曲来到了我们身边',
   '给我们送来了一丝丝凉意',
   '夜空中,星星眨着眼睛,静静地听着月亮姐姐讲故事',
   '这动听的故事,激发了星星们的想象',
   '星星们都在窃窃私语地讨论着,难道是在讨论演讲稿,到哪里发表演讲吗',
   '周围一片宁静,只有晚风在低低地吟唱',
   '月光洒向永不停息的小河,洒向盛开在夜晚的流星花,仿佛一切都活了',
   '萤火虫提着小灯笼,殷勤地照看着花儿、草儿,让他们快快长大、开花。'
  ]
 }, {
  name: '风筝',
  list: [
   '一只跌落在脚边的风筝把我拉回到现实',
   '是啊!无论风筝飞的多高、多远,但都离不开手中的丝线',
   '最后还是要回到地面。人不也一样吗',
   '长大了,成家了,但无论离开故乡多远,离开亲人多远,你的心还在故乡,还在父母亲人的身边啊!'
  ]
 }, {
  name: '春雨',
  list: ['我赤脚站到院中,踩在青石板上',
   '任雨水在我脸上流淌,我不禁抬起头望着那天空',
   '努力的想要看清春雨的样子,却怎么也看不清',
   '只听得见耳边的声音,那么清晰那么让人心情舒畅',
   '这温柔的春雨,带来他最动听的声音,击打着石台',
   '发出清脆的响声,声音透过雨帘,透进了我的心。'
  ]
 }, {
  name: '拥有',
  list: [
   '拥有诚实,就舍弃了虚伪',
   '拥有充实,就舍弃了无聊;拥有踏实,就舍弃了浮躁',
   '不论是有意的丢弃,还是意外的失去,只要曾经真实的拥有,在一些时候,大度的舍弃不也是一种境界吗',
   '在不经意所失去的, 你还可以重新去争取 ',
   '丢掉了爱心, 你可以在春天里寻觅, 丢掉了意志, 你要在冬天重新磨砺。',
   '但是丢掉了懒惰, 你却不能把它拾起 ',
   '欲望太多, 反成了累赘, 还有什么比拥有淡泊的心胸, 更能让自己充实、 满足呢? '
  ]
 }, {
  name: "信任",
  list: [
   '信任一个人有时需要许多年的时间',
   '因此,有些人甚至终其一生也没有真正信任过任何一个人',
   '倘若你只信任那些能够讨你欢心的人,那是毫无意义的',
   '倘若你信任你所见到的每一个人,那你就是一个傻瓜',
   '倘若你毫不犹疑、匆匆忙忙地去信任一个人,那你就可能也会那么快地被你所信任的那个人背弃',
   '倘若你只是出于某种肤浅的需要去信任一个人,那么旋踵而来的可能就是恼人的猜忌和背叛',
   '但倘若你迟迟不敢去信任一个值得你信任的人,那永远不能获得爱的甘甜和人间的温暖,你的一生也将会因此而黯淡无光。'
  ]
 }, {
  name: '生命',
  list: [
   '应当承认,生命就是希望',
   '应当说,卑鄙和庸俗不该得意过早,不该误认为它们已经成功地消灭了高尚和真纯',
   '伪装也同样不能持久,因为时间像一条长河在滔滔冲刷',
   '卑鄙者、奸商和俗棍不可能永远戴着教育家、诗人和战士的桂冠',
   '在他们畅行无阻的生涯尽头,他们的后人将长久地感到羞辱。'
  ]
 }, {
  name: '闲情',
  list: [
   '终日休息着,睡和醒的时间界限,便分得不清',
   '有时在中夜,觉得精神很圆满',
   '——听得疾雷杂以疏雨,每次电光穿入',
   '将窗台上的金钟花,轻淡清澈的映在窗帘上,又急速的隐抹了去',
   '而余影极分明的,印在我的脑膜上。我看见“自然”的淡墨画,这是第一次。'
  ]
 }, {
  name: '背影',
  list: [
   '我与父亲不相见已二年余了,我最不能忘记的是他的背影',
   '那年冬天,祖母死了,父亲的差使也交卸了,正是祸不单行的日子',
   '我从北京到徐州,打算跟着父亲奔丧回家',
   '到徐州见着父亲,看见满院狼藉的东西,又想起祖母,不禁簌簌地流下眼泪',
   '父亲说,“事已如此,不必难过,好在天无绝人之路!”'
  ]
 }, {
  name: '乡愁',
  list: [
   '经过多年的风雨磨砺,我们突然意识到',
   '那些曾在生命中抚慰过我们的精神驿站',
   '那些曾温暖和光明过我们的贫寒童年的火光',
   '却在不经意间,渐渐地离我们远了',
   '模糊了——譬如母亲、譬如童年的老屋、隔壁家羊角辫摇摇摆摆的阿娇一种难以驱遣的巨大空虚和孤寂袭来',
   '泪水顿时涌上来。这时,我们患了一种蔓延了几个世纪的病——乡愁'
  ]
 }, {
  name: '天池',
  list: [
   '从第一眼瞥见天池到和她告别,我一直沉默不语',
   '我不愿用一点声音,来弹破这宁静',
   '天池一日我的心情是宁静的,这是我最珍爱的心境',
   '山光湖色随着日影的移动而变幻',
   '午餐后,睡了一会儿,一阵冷气袭来,就像全身浴在冰山雪水之中',
   '我悄悄起来,不愿惊醒别人,独自走到廊上',
   '再次仔细观察天池:雪峰与杉林,白与黑相映,格外分明',
   '雪山后涌起的白云给强烈阳光照得白银一样刺眼。'
  ]
 }, {
  name: '秋天',
  list: [
   '秋姑娘又来到了果园里',
   '果园里的果子成熟了,葡萄架上挂满了一串串紫里透红的大葡萄',
   '它们相互掩映着自己的身体,太阳出来了',
   '照射在葡萄上就像一颗颗透明的紫色宝石',
   '桔树上,一个个金黄色的桔子,让人看了忍不住想咬一口',
   '假如你剥开桔皮,你就可以看见一瓣瓣桔子就像一弯弯亏月时的月亮,晶莹剔透。'
  ]
 }, {
  name: '早晨',
  list: [
   '清晨的江边,没有车水马龙的喧嚣',
   '没有人声鼎沸的吵杂,也没有让人深感压抑的匆匆人群',
   '清晨的江边,有的只是垂柳的迎风飘拂',
   '有的只是枝头小鸟的婉转歌唱',
   '有的只是江风中蕴含着的淡淡的腥味',
   '清晨的江边,很静',
   '静的可以抚平内心的烦躁',
   '清晨的江边,很美,绿树红花、微风拂面,不允许你携带任何忧伤。'
  ]
 }, {
  name: '栾树',
  list: [
   '栾树 十二月初,深圳,我在校园的青石板小路上捡到了栾树的蒴果',
   ' 栾树蒴果看上去有种似曾相识的漂亮--三瓣又薄又脆的果皮围拢成三棱形',
   '前端小心翼翼地开着口。'
  ]
 }, {
  name: '荷塘',
  list: [
   '又是一年荷塘色 初夏早上六点',
   '清亮透明的月儿还躲藏在云朵里,不忍离去',
   '校园内行人稀少,我骑着单车,晃晃悠悠的耷拉着星松的睡眼',
   '校园内景色如常,照样是绿。'
  ]
 }
]

export default linkageList;

总结

到此这篇关于微信小程序实现导航栏和内容上下联动功能的文章就介绍到这了,更多相关微信小程序导航栏和内容上下联动内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JS函数重载的解决方案
May 13 Javascript
中文输入法不触发onkeyup事件的解决办法
Jul 09 Javascript
浅析Node.js查找字符串功能
Sep 03 Javascript
JavaScript中的类(Class)详细介绍
Dec 30 Javascript
jQuery实现列表内容的动态载入特效
Aug 08 Javascript
javascript闭包(Closure)用法实例简析
Nov 30 Javascript
jQuery 限制输入字符串长度
Jun 20 Javascript
微信小程序 后台登录(非微信账号)实例详解
Mar 31 Javascript
vue中页面跳转拦截器的实现方法
Aug 23 Javascript
JavaScript数据类型的存储方法详解
Aug 25 Javascript
layui表格 返回的数据状态异常的解决方法
Sep 10 Javascript
Vue实现穿梭框效果
Sep 30 Javascript
Vue.js中Line第三方登录api的实现代码
Jun 29 #Javascript
vue实现列表滚动的过渡动画
Jun 29 #Javascript
element跨分页操作选择详解
Jun 29 #Javascript
vue实现数字滚动效果
Jun 29 #Javascript
js实现从右往左匀速显示图片(无缝轮播)
Jun 29 #Javascript
Vue实现可移动水平时间轴
Jun 29 #Javascript
uniapp与webview之间的相互传值的实现
Jun 29 #Javascript
You might like
destoon安装出现Internal Server Error的解决方法
2014/06/21 PHP
php获取textarea的值并处理回车换行的方法
2014/10/20 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
JS删除数组元素的函数介绍
2013/03/27 Javascript
Microsfot .NET Framework4.0框架 安装失败的解决方法
2013/08/14 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
纯原生js实现table表格的增删
2017/01/05 Javascript
微信小程序 合法域名校验出错详解及解决办法
2017/03/09 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
详解vue挂载到dom上会发生什么
2019/01/20 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
2020/11/09 jQuery
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
Python selenium如何设置等待时间
2016/09/15 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
Python标准库shutil用法实例详解
2018/08/13 Python
Python实现京东秒杀功能代码
2019/05/16 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
python爬虫-模拟微博登录功能
2019/09/12 Python
Python坐标线性插值应用实现
2019/11/13 Python
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
2016/08/18 面试题
保护环境建议书
2014/03/12 职场文书
护理学院专科毕业生求职信
2014/06/28 职场文书
喝酒驾驶检讨书
2014/10/01 职场文书
2015党建工作简报
2015/07/21 职场文书
《雷雨》教学反思
2016/02/20 职场文书
python中print格式化输出的问题
2021/04/16 Python
SpringBoot Http远程调用的方法
2022/08/14 Java/Android