news 2026/10/10 8:52:36

# 微信小程序案例4.4 swiper和switch组件案例4.6 image组件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
# 微信小程序案例4.4 swiper和switch组件案例4.6 image组件

微信小程序案例4.4 swiper和switch组件

一、实验目的

  1. 掌握swiper滑块视图容器组件以及swiper‑item子组件的使用。
  2. 理解swiper常用属性:indicator‑dots、autoplay、circular、vertical。
  3. 掌握switch开关组件,通过bindchange监听开关状态切换事件。
  4. 学会使用wx:for循环批量渲染swiper‑item轮播项。
  5. 拓展任务:增加第4个轮播项,展示西柏坡精神,紫色背景。

二、实验环境

微信开发者工具,新建空白小程序项目,不使用云服务、不使用模板。

三、实验原理

  1. swiper组件:滑块轮播容器,内部只能放置swiper‑item子组件。
    • indicator‑dots:是否显示面板小圆点指示点
    • autoplay:是否开启自动轮播
    • circular:是否开启衔接无缝循环滑动
    • vertical:是否开启竖向垂直滑动
    • interval:自动切换时间间隔(毫秒)
    • duration:滑动动画时长(毫秒)
  2. switch组件:开关组件,bindchange监听开关状态切换;对布尔值取反!实现开关状态翻转。
  3. wx:for:列表循环,遍历数组批量生成swiper‑item,数组新增元素即可新增轮播页面。
  4. 利用Mustache语法将js中布尔变量绑定到swiper属性,通过setData()修改变量,动态改变轮播组件效果。

四、项目目录结构

swiper和switch组件 ├─pages │ └─index │ ├─index.js │ ├─index.wxml │ └─index.wxss ├─app.js ├─app.json └─app.wxss

五、核心代码

1.pages/index/index.wxml

<scroll-viewclass="scrollarea"scroll-ytype="list"><viewclass="box"><viewclass="title">中国精神</view><swiperindicator-dots="{{indicatorDots}}"autoplay="{{autoplay}}"circular="{{circular}}"vertical="{{vertical}}"interval="{{interval}}"duration="{{duration}}"><blockwx:for="{{background}}"wx:key="index"><swiper-item><viewclass="{{item}} common">{{text[index]}}</view></swiper-item></block></swiper><viewclass="layout"><viewclass="waikuang"><textclass="my-left">指示点</text><switchchecked="{{indicatorDots}}"bindchange="changeIndicatorDots"/></view><viewclass="waikuang"><textclass="my-left">自动播放</text><switchchecked="{{autoplay}}"bindchange="changeAutoplay"/></view><viewclass="waikuang"><textclass="my-left">衔接滑动</text><switchchecked="{{circular}}"bindchange="changeCircular"/></view><viewclass="waikuang"><textclass="my-left">竖向</text><switchchecked="{{vertical}}"bindchange="changeVertical"/></view></view></view></scroll-view>

2.pages/index/index.js

Page({data:{indicatorDots:true,autoplay:false,circular:false,vertical:false,interval:2000,duration:500,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})}})

3.pages/index/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:bolder;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;}

4.app.wxss

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

5.app.json

{"pages":["pages/index/index"],"window":{"navigationBarTitleText":"swiper和switch组件","navigationBarTextStyle":"black"},"style":"v2","sitemapLocation":"sitemap.json"}

六、运行效果

  1. 页面标题红色居中显示“中国精神”。
  2. 轮播共4个页面:井冈山精神(红色)、长征精神(绿色)、延安精神(蓝色)、西柏坡精神(紫色),指示点显示4个小圆点。
  3. 四个switch开关:
  • 指示点:控制底部小圆点显示与隐藏,默认开启;
  • 自动播放:开启后轮播自动切换页面;
  • 衔接滑动:开启后实现无缝循环轮播;
  • 竖向:开启后切换为上下垂直滑动。

七、实验总结

  1. swiper是轮播容器,内部只能放置swiper‑item子组件。
  2. switch开关组件依靠bindchange捕获切换事件,使用!对布尔值取反,setData更新数据,动态控制swiper组件属性。
  3. wx:for循环遍历数组批量生成轮播项,在数组中添加元素即可新增轮播页面。
  4. indicator‑dots控制指示点,autoplay控制自动播放,circular实现衔接循环,vertical切换滑动方向。
  5. 拓展任务完成,新增第四个轮播项西柏坡精神,紫色背景,实现四页轮播效果。

微信小程序案例4.6 image组件

一、实验简介

本案例学习微信小程序image图片组件,掌握mode属性的14种图片显示模式。在基础功能上进行拓展:在每种图片显示模式的文字说明上方增加显示模式编号,使用wx:for循环批量渲染不同显示模式,直观对比缩放、裁剪两类图片展示效果。

二、实验目的

  1. 掌握image组件基础用法,熟悉mode属性14种图片显示模式。
  2. 理解缩放模式与裁剪模式的区别,掌握每种mode的图片渲染规则。
  3. 掌握wx:for列表渲染,遍历对象数组批量生成页面内容。
  4. 利用循环下标index实现序号输出,完成拓展任务:增加图片模式编号。
  5. 了解小程序渲染引擎差异,裁剪模式需要webview渲染引擎支持。

三、实验环境

微信开发者工具,新建空白小程序项目,不开启云服务。

四、项目目录结构

image组件案例 ├─images │ └─leimu.jpg ├─pages │ └─index │ ├─index.js │ ├─index.wxml │ └─index.wxss ├─app.js ├─app.json └─app.wxss

五、核心代码

1. pages/index/index.wxml

<scroll-viewclass="scrollarea"scroll-ytype="list"><viewclass="box"><viewclass="title">图片的不同显示模式</view><blockwx:for="{{imgArray}}"wx:key="index"><!--拓展任务:增加图片显示模式编号 --><view>显示模式编号:{{index+1}}</view><viewclass="img-layout"><view>{{item.text}}</view><imagesrc="{{src}}"mode="{{item.mode}}"></image></view></block></view></scroll-view>

2. pages/index/index.js

Page({data:{//根目录images下的图片src:'/images/leimu.jpg',imgArray:[{mode:'scaleToFill',text:'scaleToFill: 缩放模式,不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素'},{mode:'aspectFit',text:'aspectFit: 缩放模式,保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来'},{mode:'aspectFill',text:'aspectFill: 缩放模式,保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取'},{mode:'widthFix',text:'widthFix: 缩放模式,宽度不变,高度自动变化,保持原图宽高比不变'},{mode:'heightFix',text:'heightFix: 缩放模式,高度不变,宽度自动变化,保持原图宽高比不变'},{mode:'top',text:'top: 裁剪模式,不缩放图片,只显示图片的顶部区域。仅 Webview 支持'},{mode:'bottom',text:'bottom: 裁剪模式,不缩放图片,只显示图片的底部区域。仅 Webview 支持'},{mode:'center',text:'center: 裁剪模式,不缩放图片,只显示图片的中间区域。仅 Webview 支持'},{mode:'left',text:'left: 裁剪模式,不缩放图片,只显示图片的左边区域。仅 Webview 支持'},{mode:'right',text:'right: 裁剪模式,不缩放图片,只显示图片的右边区域。仅 Webview 支持'},{mode:'top left',text:'top left: 裁剪模式,不缩放图片,只显示图片的左上边区域。仅 Webview 支持'},{mode:'top right',text:'top right: 裁剪模式,不缩放图片,只显示图片的右上边区域。仅 Webview 支持'},{mode:'bottom left',text:'bottom left: 裁剪模式,不缩放图片,只显示图片的左下边区域。仅 Webview 支持'},{mode:'bottom right',text:'bottom right: 裁剪模式,不缩放图片,只显示图片的右下边区域。仅 Webview 支持'}]}})

3. pages/index/index.wxss

page{height:100vh;display:flex;flex-direction:column;}.scrollarea{flex:1;overflow-y:hidden;}.img-layout{text-align:center;margin-top:20rpx;margin-bottom:40rpx;}image{width:480rpx;height:480rpx;background-color:#eee;}

4. app.wxss

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

5. app.json

{"pages":["pages/index/index"],"window":{"navigationBarTitleText":"image组件","navigationBarTextStyle":"black"},"style":"v2","renderer":"webview","sitemapLocation":"sitemap.json"}

六、运行效果

  1. 页面顶部红色标题居中显示:图片的不同显示模式。
  2. 通过滚动页面浏览14种图片显示模式。
  3. 拓展效果:每一组图片模式上方展示显示模式编号:1、显示模式编号:2 …… 显示模式编号:14。
  4. 每个条目展示mode文字说明,下方480rpx×480rpx容器加载图片,不同mode分别呈现缩放或裁剪效果。

七、知识点总结

  1. image组件的mode属性共14种,分为缩放模式、裁剪模式两大类。
    • 缩放模式(5种):scaleToFill、aspectFit、aspectFill、widthFix、heightFix
    • 裁剪模式(9种):top、bottom、center、left、right、top left、top right、bottom left、bottom right
  2. top、bottom等裁剪模式仅webview渲染引擎生效,skyline引擎不支持裁剪类mode。
  3. wx:for循环中index为数组下标,下标从0开始,index+1可以生成从1开始的顺序编号,完成本次拓展任务。
  4. 本地图片放置在项目根目录images文件夹,引用路径格式为/images/图片名.jpg;小程序路径区分文件名大小写。
  5. 常见报错:Failed to load image,代表图片路径错误、文件不存在或者文件名大小写不匹配。

八、实验总结

本次案例完成了image组件14种图片显示模式的展示,成功实现拓展需求,在文字说明上方增加模式编号。通过实验掌握了image组件mode属性、wx:for列表渲染,理解了webview渲染引擎对裁剪模式的支持。同时学会排查图片加载失败的问题,注意本地图片存放位置与文件名大小写。

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

具身智能中的协同机理研究(57):TVA-World仿真迁移三大优化策略

前沿技术探索&#xff1a;TVA智能体&#xff08;简称TVA&#xff09;TVA智能体&#xff08;亦称“AI智能体视觉”&#xff09;是依托Transformer架构与“因式智能体”理论构建的新型工业视觉系统&#xff0c;也是当前最具代表性的具身视觉技术之一。它有机融合深度强化学习&…

作者头像 李华
网站建设 2026/10/10 8:51:50

对门禁、梯控、在线巡更等子系统的设备与门点进行统一管理软件

门禁一卡通软件&#xff08;DAIC-MJ-SF&#xff09;管理操作指南门禁系统软件基础管理操作流程1️⃣ 基础设备管理操作这是软件管理的核心入口&#xff0c;所有设备的基础状态都在这里维护&#xff1a;添加门禁设备&#xff1a;进入「设备管理」-「添加设备」&#xff0c;输入门…

作者头像 李华
网站建设 2026/10/10 8:50:15

URPO: A Unified Reward Policy Optimization Framework for Large Language Models

文章主要内容总结 本文提出了一种名为Unified Reward & Policy Optimization(URPO,统一奖励与策略优化) 的新型框架,旨在解决传统大型语言模型(LLMs)对齐流程中存在的复杂性、资源密集性和性能天花板问题。 传统的强化学习从人类反馈中学习(RLHF)流程通常将策略模…

作者头像 李华
网站建设 2026/10/10 8:50:14

Serf CLI 命令完全指南:单二进制、子命令架构与 RPC 生态实战

服务注册发现云原生集群管理 【免费下载链接】serf Service orchestration and management tool. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/se/serf 点击查看 免费下载 导读 Serf 是一个面向集群编排与管理的开源工具&#xff0c;其全部能力都收敛在单个二进制 …

作者头像 李华
网站建设 2026/10/10 8:50:02

Agentic RL 基础设施实战:从训练采样到推理加速的完整指南

这半年&#xff0c;身边几乎每个做 AI Infra 的团队都在聊 Agentic RL&#xff0c;我自己也连续跟进了几个从传统 RL 迁移到智能体强化学习的项目。坦白说&#xff0c;Agentic RL 的基础设施和之前做游戏 AI、机器人控制完全不是一回事&#xff0c;它既要管大模型的推理生成&am…

作者头像 李华