当前位置: 首页 > news >正文

uniapp微信小程序 实现swiper与按钮实现上下联动

1. 需求:页面顶部展示n个小图标。当选中某个图标时,下方视图会相应切换;反之,当滑动下方视图时,顶部选中的图标也会同步更新。

2. 思路: 上方scroll-view 区域渲染图标,并且可左右滑动,下方使用swiper可以左右滑动。

3. 代码实现

  1. 上方图标渲染

(1)将 scroll-x 属性设为 true 以启用左右滑动功能,同时动态绑定 scroll-left 属性实现上下联动滑动效果。

<scroll-view scroll-x="true" class="view_top" :scroll-left="scrollWidth" enhanced="true" :scroll-with-animation="true" :show-scrollbar="false"><view class="icons"><view class="icon_view" v-for="(item1, index1) in list1" :key='index1' :id="'tabNum' + index1"><image class="icon" :src="'item1.url'" mode="aspectFit" v-if="tIndex != index1" @click="chooseIcon(index1)"></image><image class="icon" :src="'item1.url" mode="aspectFit" v-if="tIndex == index1"></image><text class="icon_name" :class="taskIndex == index1 ? 'icon_name_select' : ''">{{item1.name}}</text></view></view>
</scroll-view>

(2)点击图标切换下方视图 chooseIcon

chooseIcon(index){this.tIndex = indexthis.tabCurrent = 'tabNum' + indexthis.getScrollWidth(index)
},

(3)css样式

.view_top{white-space: nowrap;width: 100%;height: 15vh;margin-top: 4vh;
}
.icons{height: 15vh;
}
.icon{width: 22vw;height: 10vh;
}
.icon_name{text-align: center;width: 22vw;display: block;font-size: 22rpx;
}
.icon_name_select{color: black;
}
.icon_view{display: inline-block;white-space: nowrap;position: relative;
}
  1. 下方视图渲染

(1)current绑定角标,@change监听滑动操作

<swiper class="Swiper" :current="tIndex" @change="swiperChange"><swiper-item class="Swiper_item" v-for="(item2, index2) in List2" :key='index2'><view class="Swiper_item_view"></view></swiper-item>
</swiper>

(2)滑动监听函数 swiperChange

swiperChange(e) {let index = e.detail.currentthis.chooseIcon(index)
},

(3)scrollWidth计算横向滚动参数,为确保位置的精准性,将vw转化为px

getScrollWidth(index) {var vw = (index )*22 /100 * this.vwsize;var data = vw + 'px';this.contentScrollW = data;
}

(4)css样式

.Swiper_item{display: flex;flex-direction: column;background-image: url('url');background-size: cover; background-position: center;overflow: auto;height: 100%;width: 100%;
}
.Swiper_item_view{display: flex;flex-direction: column;overflow: auto;height: 100%;width: 100%;position: relative;
}

以上是 uniapp 小程序实现上下轮播联动功能的具体方法。

http://www.dtcms.com/a/285631.html

相关文章:

  • 技术演进中的开发沉思-38 MFC系列:关于打印
  • 微信小程序 wx.request() 的封装
  • 为Notepad++插上JSON格式化的翅膀
  • Git 团队协作完全指南:从基础到高级应用
  • 《向华为学创新》:123页破解华为创新密码【附全文阅读】
  • Jfinal+SQLite解决MYSQL迁移表未复制索引问题,完善迁移工具
  • 私有服务器AI智能体搭建-大模型选择优缺点、扩展性、可开发
  • 数组/链表/【环形数组】实现 队列/栈/双端队列【移动语义应用】【自动扩缩】
  • st-Gcn训练跳绳识别模型六:YOLOv8-Pose 和 ST-GCN 实现实时跳绳计数器应用
  • IDEA 2020.1版本起下载JDK
  • 当OT遇见IT:Apache IoTDB如何用“时序空间一体化“技术破解工业物联网数据孤岛困局?
  • 【每日算法】专题十三_队列 + 宽搜(bfs)
  • 四、CV_GoogLeNet
  • 代码训练营DAY35 第九章 动态规划part03
  • 【收集电脑信息】collect_info.sh
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 基于jieba实现词频统计
  • Kubernetes Pod深度理解
  • 【数据可视化-67】基于pyecharts的航空安全深度剖析:坠毁航班数据集可视化分析
  • 【问题解决】npm包下载速度慢
  • 【AI大模型学习路线】第三阶段之RAG与LangChain——第十八章(基于RAGAS的RAG的评估)RAG中的评估思路?
  • 把握流程节点,明确信息传递
  • C专题5:函数进阶和递归
  • 最小生成树算法详解
  • 2025外卖江湖:巨头争霸,谁主沉浮?
  • 洞见AI时代数据底座的思考——YashanDB亮相2025可信数据库发展大会
  • NIO网络通信基础
  • AndroidX中ComponentActivity与原生 Activity 的区别
  • 关于字符编辑器vi、vim版本的安装过程及其常用命令:
  • 从抓包GitHub Copilot认证请求,认识OAuth 2.0技术
  • web3 区块链技术与用