Skip to content

Image 图片

图片容器,在保留原生 img 的特性下,支持懒加载,自定义占位、加载失败、图片预览等。

基础用法

可通过 fit 确定图片如何适应到容器框,同原生 object-fit

fill
加载中...
contain
加载中...
cover
加载中...
none
加载中...
scale-down
加载中...
基础用法

占位内容与加载失败

可通过 placeholdererror 插槽自定义占位内容。

默认错误
加载中...
自定义错误
加载中...
占位内容与加载失败

懒加载

TIP

浏览器原生支持的 loading 属性。您可以尝试使用 loading="lazy" 替换之前的 lazy="true"

如果当前浏览器支持原生图片延迟加载,则先使用原生能力,否则将使用滚动监听实现相同效果。

可通过 lazy 开启懒加载功能,当图片滚动到可视范围内才会加载。可通过 scroll-container 来设置滚动容器,若未定义,则为最近一个 overflow 值为 autoscroll 的父元素。

加载中...
加载中...
加载中...
加载中...
加载中...
加载中...
懒加载

图片预览

可通过 preview-src-list 开启预览功能。

加载中...
图片预览

手动调用预览

可通过 yh-image-viewer 组件手动调用预览功能,这在某些不需要显示缩略图,只需在点击某个元素(如按钮或文字链接)时唤起预览的场景中非常有用。同时也支持手动调用 viewerjs 模式。

手动调用预览

Viewer.js 预览(扩展)

当内置预览器无法满足需求时,可以切换为功能更强大的 viewerjs 模式。它支持幻灯片播放、全屏、翻转、缩略图导航等高级特性。

加载中...
Viewer.js 高级预览

在 Nuxt 中使用

Image 组件完全支持 Nuxt 3 的 SSR 模式。由于其内置了懒加载和预览功能,我们在实现中充分考虑了服务端与客户端的兼容性。

Nuxt SSR Loading...

支持自动导入与 SSR 占位渲染

Nuxt 中使用

SSR 注意事项

  • ✅ 支持服务端占位渲染(Placeholder Slot)
  • ✅ 懒加载在客户端激活后自动开始监听
  • ✅ 预览器组件采用 Teleport,在客户端挂载到 body
  • ✅ 完美兼容 Nuxt 的自动导入机制

API

Props

属性名说明类型默认值
src图片源地址string
fit确定图片如何适应容器框,同原生 object-fit'fill' | 'contain' | 'cover' | 'none' | 'scale-down'
lazy是否开启懒加载booleanfalse
preview-src-list开启预览列表string[][]
z-index设置预览的 z-indexnumber2000
initial-index预览显示的起始索引number0
close-on-press-escape是否可以通过按下 ESC 关闭预览booleantrue
hide-on-click-modal是否可以通过点击遮罩层关闭预览booleanfalse
infinite是否循环预览booleantrue
zoom-rate预览缩放比例number1.2
show-progress预览模式下是否展示操作栏booleantrue
preview-teleported预览容器是否追加到 body 上booleantrue
scroll-container开启懒加载后,指定滚动的容器string | HTMLElement
viewer-mode预览模式,'default' 为内置预览器,'viewerjs' 为外部 viewerjs'default' | 'viewerjs''default'
viewer-options传递给 viewerjs 的配置项object{}
alt原生 alt 属性string
crossorigin原生 crossorigin 属性string

Events

事件名说明回调参数
load图片加载成功触发(event: Event) => void
error图片加载失败触发(event: Event) => void
switch预览图片轮播切换时触发(index: number) => void
show预览展示时触发
close预览关闭时触发

Slots

插槽名说明
placeholder图片未加载完成时的占位内容
error加载失败的内容

ImageViewer API

如果您需要独立使用预览器组件,可以使用 yh-image-viewer

ImageViewer Props

属性名说明类型默认值
url-list预览图片源列表string[][]
z-index设置预览的 z-indexnumber2000
index预览图片的起始索引number0
infinite是否循环预览booleantrue
hide-on-click-modal是否可以通过点击遮罩层关闭预览booleanfalse
close-on-press-escape是否可以通过按下 ESC 关闭预览booleantrue
zoom-rate预览缩放比例number1.2
show-progress是否显示操作栏booleantrue
teleported是否追加到 body 上booleantrue
viewer-mode预览模式'default' | 'viewerjs''default'
viewer-optionsViewer.js 配置项object{}

ImageViewer Events

事件名说明回调参数
switch切换图片时触发(index: number) => void
close关闭预览时触发

主题变量

Image 组件支持通过覆盖以下 CSS 变量来自定义局部样式。所有颜色变量已与全局主题系统对接,自动支持暗黑模式:

变量名说明默认值
--yh-image-placeholder-bg-color占位区域背景颜色var(--yh-fill-color-light)
--yh-image-placeholder-text-color占位区域文字颜色var(--yh-text-color-placeholder)
--yh-image-error-bg-color错误区域背景颜色var(--yh-fill-color-extra-light)
--yh-image-error-text-color错误区域文字颜色var(--yh-text-color-placeholder)
--yh-image-border-radius图片圆角var(--yh-radius-md)
--yh-image-viewer-mask-bg-color预览遮罩背景颜色var(--yh-mask-color)
--yh-image-viewer-btn-bg-color预览控制器按钮背景颜色var(--yh-text-color-regular)
--yh-image-viewer-btn-color预览控制器按钮图标颜色var(--yh-color-white)
--yh-image-viewer-btn-hover-bg-color预览控制器按钮悬停颜色var(--yh-color-primary)

Released under the MIT License.