UI Design System
build dev

ImageViewer

放大、缩放和切换单张图片。中文惯用名:图片查看器。
稳定本期新增已接入

元信息

字段值
规范 IDcomponent.image-viewer
名称ImageViewer
二级分类媒体与内容(media)
用途放大、缩放和切换单张图片
描述中文惯用名:图片查看器。

预览

静态结构:行内图片 <img data-slot="image-viewer-img">(preview 时 cursor-zoom-in);点击打开灯箱 <div data-slot="image-lightbox">(fixed inset-0,bg-(--overlay-background) 遮罩)——居中图片(scale / rotate 变换,0.5x~4x,步进 0.5;旋转步进 -90°)+ 底部工具条(放大 / 缩小 / 旋转 / 复位 / 关闭)+ 遮罩点击与 Esc 关闭,关闭触发 onClose。Gallery 复用同一灯箱(追加前后切换与序号)。

DSL 结构

DslNode
{
  "type": "ImageViewer",
  "props": {
    "src": "https://example.com/diagram.png",
    "alt": "架构图",
    "preview": true
  }
}

何时用

何时使用

  • 单张图片需要放大查看细节:设计稿、截图、证件照、图表。
  • 需要缩放 / 旋转 / 复位的沉浸式查看(灯箱)。

何时不用

  • 纯展示不需要查看交互:使用数据展示分类的 Image。
  • 多图浏览与切换:使用 Gallery。

变体

变体视觉形态适用场景
行内 + 灯箱缩略图点击放大详情页附图、设计稿查看
纯展示preview=false只读展示但保留语义

API 属性

属性类型默认值说明
srcstring—图片地址
altstring—替代文本
previewbooleantrue是否允许点击放大查看
onCloseevent—灯箱关闭事件(events.onClose)
className / stylestring / CSSProperties—通用:根节点 class 合并 / 内联样式

使用规范

  • alt 必填,描述图片内容而非文件名。
  • 灯箱缩放范围 0.5x~4x,超出业务需求时自行裁剪图源而非放宽上限。
  • 多图场景改用 Gallery,不并列多个 ImageViewer。

正例

  • ✓ 设计评审页:设计稿缩略图点击放大,灯箱内缩放查看标注细节。
  • ✓ 证件审核:证件照放大 + 旋转校正方向后核对。

反例

  • ✕ 用 ImageViewer 做图片列表(应使用 Gallery)。
  • ✕ 在行内图上叠加自定义操作按钮(交互应集中在灯箱工具条)。

Design Token 映射

不适用:组件 tokenRefs 为空:样式 Token 数据尚未接入,三层映射(Primitive → Semantic → Component)待样式 Token 接入后回填。