微信小程序image组件

发布时间:2026/10/10 20:05:44

微信小程序image组件 这次做的是微信小程序的 image 组件需求是同一张图片用 14 种不同的显示模式全部展示一遍方便对比效果。image 组件最关键的就是 mode 属性同样一张图换个 mode拉伸、裁剪、留白效果完全不一样。我自己用代码生成了一张带四个角色块和中心圆的测试图这样裁剪的时候一眼就能看出来裁掉了哪部分。作业要求在每种模式的说明文字上方加个编号直接用 wx:for 的 index 变量算出来就行。页面 index.wxml 用 wx:for 循环渲染 14 个卡片每张卡片里放一张图mode 动态绑定成数组里的当前项view classitem wx:for{{imgArray}} wx:keymode view classnum第 {{index 1}} 种/view image classpic src{{src}} mode{{item.mode}}/image view classdesc{{item.mode}}{{item.text}}/view /viewindex.js 里把 14 种模式写成一个数组每项是 mode 名和中文说明Page({ data: { src: /images/test.png, imgArray: [ { mode: scaleToFill, text: 不保持纵横比缩放填满元素 }, { mode: aspectFit, text: 保持纵横比完整显示图片 }, { mode: aspectFill, text: 保持纵横比填满并裁剪 }, { mode: widthFix, text: 宽度不变高度自动变化 }, { mode: heightFix, text: 高度不变宽度自动变化 }, { mode: top, text: 只显示图片顶部 }, { mode: bottom, text: 只显示图片底部 }, { mode: center, text: 只显示图片中间 }, { mode: left, text: 只显示图片左侧 }, { mode: right, text: 只显示图片右侧 }, { mode: top left, text: 只显示左上部分 }, { mode: top right, text: 只显示右上部分 }, { mode: bottom left, text: 只显示左下部分 }, { mode: bottom right, text: 只显示右下部分 } ] } })样式里给 image 固定一个 300rpx 高的框这样不同 mode 对比起来才明显.pic { width: 100%; height: 300rpx; background: #f0f0f0; border: 1rpx dashed #ccc; }跑起来之后往下滚动就能看到 14 张一模一样的测试图但每张的裁切比例都不同scaleToFill 把图强行拉扁填满aspectFit 完整显示两边留白aspectFill 填满但裁掉左右top/bottom/left/right 那组就是按方向裁掉多余部分。做的时候踩了个坑image 组件如果不给宽高默认宽高是 320×240而且不写高度的话很多 mode 看不出效果所以一定要在 wxss 里把显示框大小固定下来另外本地图片要放在项目里新建的 images 文件夹src 写绝对路径 /images/xxx.png写相对路径有时候找不到。总结一下 image 的 mode 分两类scaleToFill、aspectFit、aspectFill、widthFix、heightFix 是整体缩放类top/bottom/center/left/right 这组是裁剪定位类实际开发里做头像一般用 aspectFill做 banner 用 widthFix 比较多。
延伸阅读

更多相关文章

2026/10/11 0:22:14

AI编程工具:Claude Code 还是 Cursor,我试了三个月!!!

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 0:22:14

企业IM私有化部署实战:从数据主权到安全运维的选型与落地指南

企业IM选型这件事,这几年我参与的沟通越来越多,身边不少做运维和信息化的人都在聊同一个话题:聊天工具的服务器到底放在哪里,消息数据到底归谁管。这不是技术洁癖,而是实实在在的信任问题。市面上通用IM用起来确实方便…

2026/10/11 0:22:14

YOLOv7钢材缺陷检测:开箱即用权重与数据集实战指南

简介:本资源面向从事工业质检、深度学习目标检测的开发者与研究人员,提供一套可直接复现的YOLOv7钢材缺陷检测方案,解决钢材表面缺陷自动识别与模型训练问题。压缩包共166个文件,约203.86MB,包含31个Python脚本、36个y…

2026/10/11 0:22:14

5G网络切片资源隔离性验证:测试框架设计与pytest自动化实践

去年做运营商5G专网验证项目时,客户提了一个相当刁钻的需求:两个网络切片必须做到“绝对隔离”,而且要用数据证明,不能拍脑袋。场景是工业园区混合组网,自动化产线走uRLLC切片,办公区刷视频走eMBB切片。客户…

2026/10/11 0:22:14

软件评测师备考攻略:从真题反推知识版图到高效复习计划

1. 软件评测师备考1.4:这门考试的本质到底是什么先说个背景。我给自己备考资料标了一个版本号——1.4,这个系列笔记我已经改了四轮。第一版是纯抄教材目录,第二版是刷完第一遍真题后做的考点标注,第三版加入了错题反推&#xff0c…

2026/10/11 0:17:13

50ETF期权分仓系统技术拆解:多账户订单路由与风控引擎实现

这阵子后台有不少人在问50ETF期权分仓系统的事,问题基本都集中在两个方向:这系统到底怎么实现,平台又该怎么选。我理解大家为什么关心这个,50ETF期权的参与门槛确实不低,加上多策略、多资金方协作时,也确实…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑