news 2026/9/23 16:50:30

微信小程序 swiper 与 switch 组件实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
微信小程序 swiper 与 switch 组件实战

开发环境:微信开发者工具,新建空白项目,不使用云服务、不使用模板

实现效果

页面标题:swiper 和 switch 组件 轮播内容:

  1. 井冈山精神(红色背景)
  2. 长征精神(绿色背景)
  3. 延安精神(蓝色背景)
  4. 西柏坡精神(紫色背景)

下方 4 个 switch 开关:

  • 指示点:控制 swiper 底部圆点是否展示
  • 自动播放:开启自动轮播切换
  • 衔接滑动:开启无缝循环轮播
  • 竖向:切换为垂直上下滑动

一、核心知识点

  1. swiper 组件:小程序轮播容器,只能放置swiper‑item子组件

    表格

    属性作用
    indicator‑dots是否显示面板指示点
    autoplay是否自动切换
    circular是否衔接无缝循环滑动
    vertical是否纵向垂直滑动
    interval自动切换时间(ms)
    duration滑动动画时长(ms)
  2. switch 组件:开关组件,bindchange监听开关状态变化;checked绑定布尔值。
  3. 逻辑:点击 switch 触发事件函数,setData修改页面 data 中的变量,wxml 通过{{变量名}}双向绑定到 swiper 属性,实现动态修改组件行为。

二、完整全部源码

1、pages/index/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 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> <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>

2、pages/index/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; }

3、pages/index/index.js

// index.js Page({ data: { indicatorDots: true, autoplay: false, circular: false, vertical: false, interval: 2000, duration: 500, // 作业改动:增加第四个背景样式类 bc‑purple background: ['bc-red', 'bc-green', 'bc-blue', 'bc-purple'], // 作业改动:新增西柏坡精神,共4个轮播文本 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 }) } })

4、app.wxss

/**app.wxss**/ .box { margin: 20rpx; padding: 20rpx; border: 2rpx solid silver; } .title { font-size: 40rpx; font-weight: bold; text-align: center; margin-bottom: 30rpx; color: red; }

5、pages/index/index.json

{ "navigationBarTitleText": "swiper和switch组件" }

三、作业修改点说明(重点)

原始案例只有 3 个轮播页面,作业新增第 4 项西柏坡精神,改动一共 3 处:

  1. index.wxss:新增样式类.bc‑purple,紫色背景;
  2. index.js 的background数组追加"bc‑purple"
  3. index.js 的text数组追加"西柏坡精神"

wx:for 循环会自动遍历数组生成 4 个 swiper‑item,指示点自动变为 4 个圆点,不需要修改 wxml。

四、项目部署运行步骤

  1. 打开微信开发者工具,新建项目;
  2. 项目名称自定义,后端服务选择不使用云服务,模板选择不使用模板
  3. 将上面代码分别复制粘贴覆盖对应文件;
  4. 点击编译,模拟器预览;
  5. 点击各个 switch 开关,观察 swiper 轮播效果变化。

五、踩坑记录

  1. swiper 里面只能放swiper‑item标签,不要直接放 view;
  2. switch 组件 bindchange 事件不要带括号,直接写函数名;
  3. 修改 data 必须用this.setData(),直接赋值不会更新页面;
  4. vertical 开启竖向轮播之后,滑动方向变成上下。

六、总结

这个案例演示小程序组件数据双向绑定,通过开关组件动态控制轮播组件属性。switch开关触发事件 → setData 更新 data 数据 → wxml 插值表达式把数据绑定到 swiper 组件属性,页面实时刷新。 本作业在原有基础上扩展为 4 个轮播条目,加深对 wx:for 列表渲染的理解。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 16:50:08

Electron打包失败?Node 26与macOS老make不兼容排查实录

1. 报错现场&#xff1a;一次“make 异常中断”的完整日志链先说背景。我手头有一台刚换没多久的 M4 芯片 MacBook Pro&#xff0c;跑的是最新版 macOS&#xff0c;平时主要是用来做 Electron 相关的桌面应用开发。项目本身的依赖不复杂&#xff1a;Electron Electron Forge …

作者头像 李华
网站建设 2026/9/23 16:49:21

React Native 在 OpenHarmony 商城 App 中的个人资料编辑实践与踩坑记录

先说结论&#xff1a;在 OpenHarmony 生态里用 React Native 做商城 App&#xff0c;并不是把 Android/iOS 那套代码原封不动搬过来就能跑&#xff0c;个人资料编辑这种看似人畜无害的页面&#xff0c;恰恰是最容易踩坑的地方。这篇实战记录&#xff0c;我以rn_for_openharmony…

作者头像 李华
网站建设 2026/9/23 16:43:01

VS Code 插件开发定制 DeepSeek 编程助手:从接入到工具调用

简介&#xff1a;这份PDF文档面向具备一定编程基础、希望借助大模型提升编码效率的开发者&#xff0c;系统讲解如何从零开发一款定制化的VS Code插件&#xff0c;将DeepSeek编程助手融入日常开发流程。内容涵盖VS Code插件开发基础、DeepSeek编程助手的功能特点与API调用、开发…

作者头像 李华
网站建设 2026/9/23 16:42:55

水果新鲜程度检测数据集:从标注到YOLOv8模型落地的工程实践

简介&#xff1a;这份水果新鲜程度检测数据集面向计算机视觉学习者、目标检测练手者及需要构建水果分拣原型的开发者&#xff0c;解决新鲜与腐坏水果样本不足、标注格式不统一的问题。数据集覆盖apple、bad banana、banana和bad apple共4个类别&#xff0c;兼顾正常与变质状态&…

作者头像 李华
网站建设 2026/9/23 16:42:35

OpenSpec规格驱动开发实战:从接口契约到自动化校验与代码生成

1. OpenSpec 是什么&#xff1a;从“规格驱动开发”说起第一次听到 OpenSpec 这个名字&#xff0c;很多人会下意识地把它归类成“又一个 API 文档工具”或者“又一个接口管理平台”。但真正用过一段时间之后你会发现&#xff0c;它想解决的问题比“写文档”要深得多——它试图把…

作者头像 李华
网站建设 2026/9/23 16:42:11

MBD模型驱动开发:从Simulink到嵌入式C代码的工程实践

1. 什么是基于模型生成代码&#xff08;MBD&#xff09;&#xff1f;它到底解决了工程师的什么痛点&#xff1f;“基于模型生成代码”——这个短语在汽车电子、工业控制、航空航天这些对可靠性要求极高的领域里&#xff0c;不是一句空话&#xff0c;而是实实在在每天都在发生的…

作者头像 李华