Skip to content

图片预览 API

v0.3.21 · Latest stable

图片预览默认采用沉浸预设:仅显示居中的图片,不显示标题栏、工具栏或滚动条。面板会随缩放后的图片同比扩缩,但不会超过扣除视口留白后的可用范围。

最小示例

ts
import { bindImagePreview } from 'sodialog'

const binding = bindImagePreview({
  root: document.querySelector('.help-content')!,
})

binding.destroy()

也可以直接打开单张图片:

ts
import { openImagePreview } from 'sodialog'

const preview = openImagePreview('/images/manual.png', {
  alt: '操作说明',
  showToolbar: true,
})

preview.setScale(1.5)

方法

方法返回值说明
openImagePreview(source, options?)SoImagePreviewHandle立即打开 URL 或 HTMLImageElement
bindImagePreview(options?)SoImagePreviewBindingHandle委派监听指定区域内的图片点击。

SoImagePreviewOptions

参数类型默认值说明
titlestring图片 alt 或 Image preview可访问名称;开启标题栏时显示。
altstring来源图片 alt覆盖预览图片替代文字。
initialScale'fit' | 'original' | number'fit'初始缩放;fit 只缩小超出视口的图片。
minScalenumber0.25最小缩放比例。
maxScalenumber4最大缩放比例。
wheelStepnumber0.1每次滚轮缩放增量。
viewportPaddingnumber32浏览器可视范围四周保留的总尺寸。
resizeWithScalebooleantrue面板是否跟随缩放后的图片扩缩。
showHeaderbooleanfalse显示标题栏和关闭按钮。
showToolbarbooleanfalse显示缩小、比例、放大和 1:1 工具栏。
showScalebooleantrue工具栏启用时是否显示当前缩放百分比。
overflow'hidden' | 'auto''hidden'是否允许预览区域出现滚动条。

SoImagePreviewBindingOptions 额外接受 root?: ParentNode(默认 document)和 selector?: string(默认 img)。

返回句柄

SoImagePreviewHandle 继承 SoDialogHandle,并增加:

字段类型说明
imageHTMLImageElement预览层中的图片元素。
scale()() => number获取当前缩放比例。
setScale(scale)(number) => void设置比例,并自动限制在最小/最大值内。

SoImagePreviewBindingHandle.destroy() 用于解除委派监听。

可选工具栏与滚动

ts
bindImagePreview({
  root: document,
  selector: '.article img',
  showToolbar: true,
  showScale: true,
  showHeader: true,
  overflow: 'auto',
  initialScale: 'original',
  minScale: 0.5,
  maxScale: 3,
  viewportPadding: 48,
})

关闭预览时,内部滚轮和窗口尺寸监听会自动清理;动态内容区域自身销毁时,应同时调用绑定句柄的 destroy()

Released under the MIT License.