Skip to content

n-image 图片 ​

页面与列表里的图片展示:矩形 / 圆形画布 + 加载中 / 失败占位 + 点击全屏预览 + 默认插槽叠放(水印、角标、徽标)。

  1. 画布几何:width 缺省铺满父容器;height 缺省时 widthFix 模式高随原图比例(长图文零成本),其余模式取 240px(与原生 image 默认尺寸语义一致)
  2. 加载中 / 失败 / 空 src 自动显示占位层(底色 + 加载圈 / 失败图标),show-loading / show-error 可单独关闭;占位内容可用 loading / error 插槽整体替换,bg-color 换底色
  3. 点击预览:preview 开启后调用系统全屏预览;多图传 preview-list,preview-index 指定起始下标(App 端只支持下标定位);加载中 / 失败态点击不触发预览,click 事件照常派发
  4. mode 为 image 原生裁剪模式全集(14 种),默认 aspectFill 短边铺满居中裁剪不变形;widthFix 长图文宽不变高自适应,heightFix 宽按原图比例(画布左对齐)
  5. 形状 shape="circle" 全圆裁图(方形画布即圆形头像位),个别圆角用 radius(支持 "50%")覆盖;border 在同色背景上勾出图片边界
  6. 原生能力透传:lazy-load 懒加载(page / scroll-view 下有效)、fade-show 淡入;webp 解码与 show-menu-by-longpress 长按菜单仅微信端有行为(其余端原生 image 无此属性)

平台兼容性 ​

App H5 微信小程序 支付宝小程序 百度小程序 头条小程序 QQ小程序
√ √ √ × × × ×

API ​

属性 ​

参数 说明 类型 默认值 可选值
src 图片地址(网络 / 本地 / 临时路径);空串不加载,显示空画布(占位底色) String "" -
mode 裁剪缩放模式(image 原生 mode):aspectFill 短边铺满居中裁剪不变形、aspectFit 完整显示留白、scaleToFill 拉伸铺满、widthFix 宽不变高按原图比例自适应(长图文) String aspectFill scaleToFill<br/>aspectFit<br/>aspectFill<br/>widthFix<br/>heightFix<br/>top<br/>bottom<br/>center<br/>left<br/>right<br/>top left<br/>top right<br/>bottom left<br/>bottom right
width 画布宽度:数值 px 或任意 css 长度("100%" / "300px");空 = 铺满父容器 String / Number "" 与 css 相同
height 画布高度:数值 px 或任意 css 长度;空 = widthFix 模式高随原图比例,其余模式取 240px(与原生 image 默认一致) String / Number "" 与 css 相同
radius 圆角:数值 px 或任意 css 长度("50%");非空时覆盖 shape 的圆角 String / Number "" 与 css 相同
shape 形状:square 直角 / circle 全圆裁图(配合方形画布做圆形头像位、圆形徽章图) String square square<br/>circle
bg-color 加载中 / 失败 / 空 src 时占位层的底色;空 = 次级表面色(随深浅主题) String "" 与 css 相同
border 是否显示描边(浅色图放在同色背景上时勾出边界) Boolean false -
show-loading 加载中是否显示占位层(默认加载圈,可用 loading 插槽替换;关闭后加载中只显示底色) Boolean true -
show-error 加载失败是否显示占位层(默认失败图标,可用 error 插槽替换;关闭后失败只显示底色) Boolean true -
error-icon 失败占位图标名(n-icon 名称表);传空串 = 失败态不放图标只留底色 String image n-icon 名称表
preview 点击图片时调用系统全屏预览(uni.previewImage):预览列表为 previewList(空则单图 src);微信端预览接口只收 http 链接,预览图请用网络路径 Boolean false -
preview-list 全屏预览的图片列表;空 = 只预览当前 src 一张。微信端需为网络路径(小程序预览接口不支持代码包内路径),App / Web 端本地路径可用 Array [] -
preview-index 全屏预览的起始下标(previewList 非空时生效;App 端只支持下标定位) Number 0 -
lazy-load 原生懒加载:仅 page 与 scroll-view 下的 image 有效 Boolean false -
fade-show 图片加载完成后淡入显示(原生能力) Boolean false -
webp 是否启用 webP 格式解码(微信端生效) Boolean true -
show-menu-by-longpress 长按图片显示识别菜单(保存 / 识别小程序码,微信端生效) Boolean false -
name 业务标识:click 事件原样回传,列表代理处理点击时区分来源 String "" -
custom-class 挂到根节点的额外 class(类需定义在组件样式表内) String "" -
custom-style 根节点行内样式,如 "margin-right:10px" 用于和相邻元素排间距 String "" 与 css 相同

事件 ​

事件名 说明 回调参数
click 点击图片时触发(加载中 / 失败态也触发) name(业务标识原样回传)
load 图片加载成功时触发 原生加载事件(detail 含 width / height,单位 px)
error 图片加载失败时触发 原生错误事件(detail 含 errMsg)

插槽 ​

插槽名 说明
default 叠放在图片上方的覆盖层(水印、角标、徽标),铺满画布、随圆角一起被裁剪;内容自行绝对定位
loading 替换加载中占位内容(默认加载圈)
error 替换加载失败占位内容(默认失败图标)

记录 · 思考 · 创作