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 中使用

YhImageYhImageViewer 可直接在 Nuxt 项目中使用。SSR 阶段会先输出稳定的图片结构,懒加载监听与预览挂载会在客户端激活后继续接管。

Nuxt SSR Loading...

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

Nuxt 中使用

SSR 注意事项

  • 支持在服务端渲染占位插槽内容。
  • lazy 会在客户端激活后开始侦测可视区域。
  • 预览器打开时会在客户端挂载到 body
  • 注册 YH-UI Nuxt 模块后可直接使用自动导入。

API

Props

属性名说明类型默认值
src图片源地址string''
fit图片适应容器的方式,对应原生 object-fit'' | 'fill' | 'contain' | 'cover' | 'none' | 'scale-down'''
lazy是否启用懒加载booleanfalse
preview-src-list内置预览器使用的图片列表string[][]
z-index预览层级numberundefined
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预览容器是否传送到 bodybooleantrue
scroll-container懒加载监听的滚动容器string | HTMLElement | undefinedundefined
viewer-mode预览模式,viewerjs 需要宿主自行提供对应依赖'default' | 'viewerjs''default'
viewer-options传递给 Viewer.js 的配置项Record<string, unknown>{}
alt原生 imgalt 属性stringundefined
crossorigin原生 imgcrossorigin 属性'' | 'anonymous' | 'use-credentials'undefined
loading原生 imgloading 属性'eager' | 'lazy'undefined
theme-overrides组件级主题覆盖ComponentThemeVarsundefined

Events

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

Slots

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

Expose

当前组件未暴露公开实例方法或属性。

ImageViewer API

需要独立使用预览器时,可直接使用 yh-image-viewer

Props

属性名说明类型默认值
url-list预览图片列表string[][]
z-index预览层级number2000
initial-index打开预览时的起始索引number0
infinite是否循环切换booleantrue
hide-on-click-modal点击遮罩层是否关闭预览booleanfalse
close-on-press-escape按下 Esc 是否关闭预览booleantrue
zoom-rate缩放步进倍率number1.2
show-progress是否显示预览控制区booleantrue
teleported预览容器是否传送到 bodybooleantrue
viewer-mode预览模式'default' | 'viewerjs''default'
viewer-options传递给 Viewer.js 的配置项Record<string, unknown>{}

Events

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

Slots

当前组件未暴露组件插槽。

Expose

名称说明类型
prev切换到上一张图片() => void
next切换到下一张图片() => void
zoomIn放大图片() => void
zoomOut缩小图片() => void
rotateLeft逆时针旋转() => void
rotateRight顺时针旋转() => void
reset重置缩放与旋转状态() => void

主题变量

YhImage 支持 themeOverrides,同时提供以下组件级 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-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)

类型导出

名称说明
YhImagePropsYhImage 的 props 类型
YhImageEmitsYhImage 的 emits 类型
YhImageSlotsYhImage 的 slots 类型
YhImageInstanceYhImage 的实例类型
YhImageViewerPropsYhImageViewer 的 props 类型
YhImageViewerEmitsYhImageViewer 的 emits 类型
YhImageViewerSlotsYhImageViewer 的 slots 类型
YhImageViewerExposeYhImageViewer 的 expose 类型
YhImageViewerInstanceYhImageViewer 的实例类型

Released under the MIT License.