Image 图片
在原生 img 能力基础上,支持懒加载、自定义占位与加载失败展示等。
基础用法
通过 fit 指定图片如何适应容器,行为同原生 object-fit
fill
contain
cover
none
scale-down
占位内容
未加载完成前可通过 placeholder 插槽自定义占位。
Default
Custom
Loading...
加载失败
加载出错时可通过 error 与 viewer-error 插槽自定义展示。
懒加载
TIP
支持原生 loading 属性,可用 loading="lazy" 替代 lazy = true。
若浏览器支持原生懒加载则优先使用,否则由组件基于滚动实现。
lazy 为 true 时进入可视区域再加载。scroll-container 指定监听滚动的容器;未设置时取最近的 overflow 为 auto 或 scroll 的父级。
图片预览
设置 previewSrcList 开启大图预览;initial-index 指定首张预览索引,默认 0。
手动打开预览
自定义工具栏
使用 toolbar 插槽自定义工具栏;插槽提供 setActiveItem,可按索引切换图片。
自定义进度
show-progress 控制是否显示预览进度;只要使用 progress 插槽即会展示进度内容。
图片 API
图片 属性
| 名称 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| src | 图片地址,同原生 | string | '' |
| fit | 适应容器的方式,同 object-fit | enum | '' |
| hide-on-click-modal | 预览模式下点击遮罩是否关闭 | boolean | false |
| loading | 浏览器加载策略,同 原生 loading | enum | — |
| lazy | 是否懒加载 | boolean | false |
| scroll-container | 懒加载时监听滚动的容器;默认取最近可滚动父级 | string / object | — |
| alt | 原生 alt | string | — |
| referrerpolicy | 原生 referrerPolicy | string | — |
| crossorigin | 原生 crossorigin | enum | — |
| preview-src-list | 预览图片地址列表 | array | [] |
| z-index | 预览层 z-index | number | — |
| initial-index | 初始预览索引,需小于列表长度 | number | 0 |
| close-on-press-escape | 预览时是否允许 ESC 关闭 | boolean | true |
| preview-teleported | 是否将预览层挂到 body;父级存在 transform 时嵌套场景建议为 true | boolean | false |
| infinite | 预览是否首尾循环 | boolean | true |
| zoom-rate | 缩放速率 | number | 1.2 |
| scale | 预览初始缩放比例 | number | 1 |
| min-scale | 最小缩放比例 | number | 0.2 |
| max-scale | 最大缩放比例 | number | 7 |
| show-progress | 是否显示预览进度(与 progress 插槽配合) | boolean | false |
图片 事件
| 名称 | 说明 | 类型 |
|---|---|---|
| load | 同原生 load | Function |
| error | 同原生 error | Function |
| switch | 切换预览图片时触发 | Function |
| close | 点击关闭或开启 hide-on-click-modal 时点击遮罩关闭预览时触发 | Function |
| show | 预览打开时触发 | Function |
图片 插槽
| 名称 | 说明 | 类型 |
|---|---|---|
| placeholder | 加载前占位 | - |
| error | 加载失败展示 | - |
| image viewer slots | 开启预览时,可使用下方 Image Viewer 全部插槽 | - |
图片 暴露
| 名称 | 说明 | 类型 |
|---|---|---|
| showPreview | 手动打开预览 | Function |
图片预览 API
图片预览 属性
| 名称 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| url-list | 预览地址列表 | array | [] |
| z-index | 遮罩层 z-index | number / string | — |
| initial-index | 初始索引,不大于 url-list 长度 | number | 0 |
| infinite | 是否循环切换 | boolean | true |
| hide-on-click-modal | 点击遮罩是否触发关闭 | boolean | false |
| teleported | 是否挂到 body;父级含 transform 的嵌套场景建议为 true | boolean | false |
| zoom-rate | 缩放速率 | number | 1.2 |
| scale | 预览初始缩放 | number | 1 |
| min-scale | 最小缩放比例 | number | 0.2 |
| max-scale | 最大缩放比例 | number | 7 |
| close-on-press-escape | 是否允许 ESC 关闭 | boolean | true |
| show-progress | 是否显示预览进度 | boolean | false |
图片预览 事件
| 名称 | 说明 | 类型 |
|---|---|---|
| close | 点击关闭或 hide-on-click-modal 下点击遮罩时触发 | Function |
| error | 同原生 error | Function |
| switch | 切换图片时触发 | Function |
| rotate | 旋转图片时触发 | Function |
图片预览 插槽
| 名称 | 说明 | 类型 |
|---|---|---|
| viewer | 自定义预览区域内容 | - |
| progress | 自定义进度(优先级高于 show-progress) | object |
| toolbar | 自定义工具栏 | object |
| viewer-error | 预览中某张图加载失败时的自定义内容 | object |
图片预览 暴露
| 名称 | 说明 | 类型 |
|---|---|---|
| setActiveItem | 切换到指定索引 | Function |
类型声明
展开类型声明
ts
type ImageViewerAction = 'zoomIn' | 'zoomOut' | 'clockwise' | 'anticlockwise'
type ImageViewerActionOptions = {
enableTransition?: boolean
zoomRate?: number
rotateDeg?: number
}