news 2026/10/15 22:59:08

案例4.4 swiper和switch组件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
案例4.4 swiper和switch组件

微信小程序案例:swiper轮播组件与switch开关组件实战

一、案例简介

本案例基于微信小程序原生组件,使用swiper轮播组件+switch开关组件,实现可动态配置的轮播面板。
基础功能:

  1. swiper轮播,支持指示点、自动播放、循环衔接滑动、纵向滑动四项特性;
  2. 使用switch开关控件,动态切换swiper各项属性的开启/关闭状态;
  3. 在原有3个轮播项基础上,新增第4个滑动页面,一共4个swiper-item,内容为四种中国精神:井冈山精神、长征精神、延安精神、西柏坡精神。

适用场景:小程序首页banner轮播、多页面横向滑动展示,switch适合做功能选项的布尔开关。

二、项目结构

MINIPROGRAM-6 ├─ components │ └─ navigation-bar // 自定义导航栏组件 ├─ pages │ └─ index │ ├ index.js // 页面逻辑、数据、事件函数 │ ├ index.wxml // 页面结构 │ ├ index.wxss // 页面样式 │ └ index.json // 页面配置,引入自定义组件 ├─ app.js ├─ app.json └─ app.wxss

三、核心代码实现

1. index.json 页面配置

注册自定义导航组件

{ "usingComponents": { "navigation-bar": "/components/navigation-bar/navigation-bar" } }

2. index.wxml 页面结构

<!--index.wxml--> <navigation-bar title="swiper和switch组件" back="{{false}}" color="black" background="#FFF"></navigation-bar> <scroll-view class="scrollarea" scroll-y type="list"> <view class="box"> <view class="title">中国精神</view> <!-- swiper轮播容器,绑定各项动态属性 --> <swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" circular="{{circular}}" vertical="{{vertical}}" interval="{{interval}}" duration="{{duration}}"> <block wx:for="{{background}}" wx:key="index"> <swiper-item> <view class="{{item}} common">{{text[index]}}</view> </swiper-item> </block> </swiper> <!-- switch开关控制区 --> <view class="layout"> <view class="waikuang"> <text class="my-left">指示点</text> <switch checked="{{indicatorDots}}" bindchange="changeIndicatorDots" /> </view> <view class="waikuang"> <text class="my-left">自动播放</text> <switch checked="{{autoplay}}" bindchange="changeAutoplay" /> </view> <view class="waikuang"> <text class="my-left">衔接滑动</text> <switch checked="{{circular}}" bindchange="changeCircular" /> </view> <view class="waikuang"> <text class="my-left">竖向</text> <switch checked="{{vertical}}" bindchange="changeVertical" /> </view> </view> </view> </scroll-view>

关键点说明:

  1. wx:for循环渲染swiper-item,从js数组读取背景类名和文字;
  2. switch组件bindchange绑定切换事件,checked双向绑定布尔变量;
  3. swiper的所有属性全部绑定data中的变量,打开/关闭switch就会修改swiper效果。

3. index.js 页面逻辑

// index.js Page({ data: { // 是否显示swiper组件的面板指示点 indicatorDots: true, // swiper组件是否自动播放 autoplay: false, // swiper组件是否采用衔接滑动 circular: false, // swiper滑动方向是否为纵向 vertical: false, // 自动切换时间间隔,单位为毫秒 interval: 2000, // 滑动动画时长,单位为毫秒 duration: 500, // 增加第4项 bc-purple、西柏坡精神 background: ['bc-red', 'bc-green', 'bc-blue', 'bc-purple'], text: ['井冈山精神', '长征精神', '延安精神', '西柏坡精神'] }, /** * 改变是否显示指示点函数 */ changeIndicatorDots() { this.setData({ indicatorDots: !this.data.indicatorDots }) }, /** * 改变是否自动播放函数 */ changeAutoplay() { this.setData({ autoplay: !this.data.autoplay }) }, /** * 改变是否衔接滑动函数 */ changeCircular() { this.setData({ circular: !this.data.circular }) }, /** * 改变是否竖向滑动函数 */ changeVertical() { this.setData({ vertical: !this.data.vertical }) } })

核心:setData修改页面数据,小程序自动驱动视图更新,实现开关控制轮播效果。

4. index.wxss 样式文件

/**index.wxss**/ page { height: 100vh; display: flex; flex-direction: column; } .scrollarea { flex: 1; overflow-y: hidden; } .bc-red { background-color: red; } .bc-green { background-color: green; } .bc-blue { background-color: blue; } /*新增:西柏坡精神紫色背景*/ .bc-purple { background-color: purple; } .common { width: 100%; line-height: 320rpx; font-size: 60rpx; font-weight: bold; text-align: center; letter-spacing: 1em; color: yellow; } .layout { margin-top: 40rpx; padding: 20rpx; border: 2rpx dashed burlywood; } .waikuang { display: flex; flex-direction: row; border-bottom: 2rpx solid #353535; margin: 20rpx 0; padding: 20rpx 0; } .my-left { flex: 1; }

四、功能演示说明

  1. 轮播项:一共4个页面,分别对应4种红色精神,每个页面拥有独立背景色;
  2. 指示点开关:打开则swiper底部显示小圆点,关闭隐藏;
  3. 自动播放:开启后轮播自动切换,间隔2000ms;
  4. 衔接滑动(circular):开启后,滑到最后一页可以无缝切回第一页;
  5. 竖向滑动:开启swiper从横向左右滑动,变成上下纵向滑动。

五、知识点总结

  1. swiper:小程序原生轮播容器,必须搭配swiper-item使用;常用属性:indicator-dots指示点、autoplay自动播放、circular循环、vertical方向、interval切换间隔、duration动画时长。
  2. switch:单选开关组件,bindchange监听切换事件,checked绑定布尔值;
  3. 小程序数据驱动:修改data必须使用this.setData(),修改后页面自动刷新;
  4. 列表渲染wx:for:循环数组批量生成swiper-item,新增轮播项只需要在js数组追加元素,不用重复写标签。

六、踩坑小结

  1. 新增swiper-item时,wxml不需要新增标签,只需要在js的background、text数组追加元素,wx:for会自动渲染;
  2. vertical开启纵向轮播时,swiper高度要注意,否则内容显示异常;
  3. switch绑定事件不要忘记bindchange,不要误写为bindtap。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 15:00:22

能量回馈式变流器负载试验装置:方案选型与调试实践

1. 方案定位&#xff1a;先搞清楚到底要测什么、省多少电干电力电子这一行的人&#xff0c;对“负载试验”这四个字应该都不陌生。一台变流器出厂前&#xff0c;不做满功率带载测试根本不敢交付——器件的热稳定性、控制参数是否收敛、保护逻辑是否可靠&#xff0c;这些问题只通…

作者头像 李华
网站建设 2026/10/13 17:10:09

r-nacos内置MCP Server,存量HTTP接口零改造接入AI Agent

最近MCP协议在技术圈的热度快被聊烂了&#xff1a;同花顺在做行情数据的MCP接入&#xff0c;Playwright在做浏览器自动化的MCP控制&#xff0c;好几家中后台框架也在原生支持MCP。可这些例子落到我们自己业务系统上&#xff0c;就有点尴尬了——公司有几十个注册在Nacos上的普通…

作者头像 李华
网站建设 2026/10/14 4:39:13

【Jetpack Compose进阶学与练】第14课:系列收尾复习总结后续学习方向

前言 本套教程从第1课从零搭建Compose开始&#xff0c;依次学习基础布局、Modifier修饰器、状态与交互、 remember ‑ rememberSaveable 、副作用Effect、下拉弹窗、MVI架构、性能优化、Navigation导航、SavedStateHandle、项目分包模块化&#xff0c;最后第13课完成简易笔记Ap…

作者头像 李华
网站建设 2026/10/15 14:32:40

DeepSeek私有化部署ERP智能化全流程指南

简介&#xff1a;这份指南以中小制造企业ERP系统智能化为切入点&#xff0c;围绕DeepSeek私有化部署给出三步走实战路径。内容覆盖智能化背景与需求分析、DeepSeek核心能力解析、环境搭建、模型定制与适配、ERP系统集成部署、系统测试优化以及企业案例应用&#xff0c;结构完整…

作者头像 李华
网站建设 2026/10/14 6:40:00

PL/0扩充实战:从REPEAT循环到数组下标访问的完整指南

简介&#xff1a;面向编译原理课程设计的PL/0扩充实现方案&#xff0c;适合需要完成编译原理大作业或课程设计的本科生、研究生及编译器构造爱好者参考。资源完整实现了赋值运算符、-和自增自减、--&#xff0c;扩展了Pascal风格FOR语句的TO与DOWNTO两种步长&#xff0c;并新增…

作者头像 李华
网站建设 2026/10/16 0:28:24

用Python实现本地模拟横向联邦学习:从FedAvg到单机可复现实验

简介&#xff1a;面向机器学习初学者与联邦学习研究者的横向联邦学习本地模拟资源&#xff0c;使用Python构建&#xff0c;以公开数据集搭建可复现的单机模拟环境&#xff0c;让没有分布式集群的读者也能体验多客户端协作建模的完整过程。资源从数据加载、模型定义、客户端本地…

作者头像 李华