SepImage 图片

覆盖 SepImage 全部配置项:src/alt/尺寸、填充模式、加载/错误态、预览灯箱、懒加载 + 自动化断言

0. HTML 声明式标签 — SepBase.autoInit() 自动驱动

HTML 声明式标签

1. 基础显示 — src / alt / 尺寸

HTML 声明式标签
JS API 初始化

2. 填充模式 — object-fit

JS API 初始化

3. 加载态 / 错误态 / fallback

JS API 初始化

4. 样式装饰 — radius / bordered / draggable

JS API 初始化

4b. 形状 — circle / rounded / square

JS API 初始化

圆形适合头像、方形适合列表缩略图、圆角适合卡片图

4c. 焦点位置 — objectPosition

JS API 初始化

fit=cover 时控制裁剪焦点,商品图顶部对齐等场景

4d. 响应式图片 — srcset / sizes

JS API 初始化

根据设备 DPR 和视口宽度自动选择最合适的图片,高清屏更清晰,普通屏省流量

5. 预览灯箱 — preview

JS API 初始化

hover 显示放大图标遮罩,点击打开通用灯箱(缩放/旋转/下载)

5e. 缩略图 + 高清大图 — preview.src

JS API 初始化

组件展示缩略图(src),点击灯箱打开高清大图(preview.src),列表省流量、详情看高清

5f. 多图预览组 — previewList

JS API 初始化

previewList 传入图片数组,点击打开灯箱后可切换全部图片(←→ 键或按钮);initialIndex 指定起始图

5g. 标题与描述 — title / description

JS API 初始化

title 显示在灯箱顶部(替代文件名),description 显示在图片底部描述条

5h. 自定义懒加载根容器 — lazyRoot

JS API 初始化

lazyRoot 指定 IntersectionObserver 的根容器,图片滚动进入该容器可视区时才加载

5i. 灯箱交互选项 — previewLoop / previewCloseOnMask / previewShowThumbs

JS API 初始化

控制灯箱翻页是否循环、点击遮罩是否关闭、是否显示底部缩略图导航条

5j. 加载失败重试 — retryable

JS API 初始化

retryable=true 时加载失败可点击错误图标重新加载,错误文案变为"加载失败,点击重试"

5k. 灯箱工具栏按钮显隐

JS API 初始化

previewShowClose / previewShowDownload / previewShowZoom / previewShowRotate / previewShowFlip 单独控制灯箱工具栏各按钮显隐

5l. 灯箱事件回调 — onPreviewOpen / onPreviewClose / onPreviewChange

JS API 初始化

打开 / 关闭 / 切换图片时触发回调,回调参数含当前索引与总数;下方日志区实时展示回调触发情况

5m. 预览遮罩延迟 — previewDelay

JS API 初始化

previewDelay 设置 hover 后遮罩延迟显示(毫秒),避免快速划过时频繁闪烁

4e. 宽高比 — aspectRatio

JS API 初始化

aspectRatio 固定宽高比,图片加载前即占位,防止 CLS 布局抖动;支持数字(1.5)、分数('16/9')、比例('4:3')

4f. 渐进式加载 — progressive + blurDataURL

JS API 初始化

blurDataURL 低清缩略图先展示,主图加载完成后去模糊过渡,体验更顺滑

4g. 图片元素自定义 — imageClass / imageStyle

JS API 初始化

imageClass 附加 class 到 img,imageStyle 附加内联样式,便于深度定制图片渲染

4h. 灯箱交互增强 — 鼠标中心缩放 / 移动端手势 / 下载文件名

JS API 初始化

滚轮缩放以鼠标位置为中心、双击放大定位到点击处;移动端支持双指捏合缩放、单指左右滑动切换、下滑关闭; previewDownloadName 自定义下载文件名。

6. 懒加载 — lazy

JS API 初始化

设置 loading="lazy",图片仅在接近视口时加载

详细说明

SepImage 通用图片展示组件,含加载过渡动画(opacity 0→1)、失败兜底+fallback 容错、预览灯箱(对接 SepBase.Lightbox 通用灯箱,支持缩放/旋转/下载)、懒加载,适用于商品图、用户头像、证件照、内容插图等场景。

Props 配置项

参数类型默认值说明
srcstringnull图片地址
srcsetstringnull响应式图片候选列表,如 'img-1x.jpg 1x, img-2x.jpg 2x'
sizesstringnull图片显示尺寸提示,如 '(max-width:600px) 100px, 200px'
altstring''替代文本(加载失败/无障碍时显示)
titlestring''图片标题,灯箱顶部信息栏显示(替代文件名)
descriptionstring''图片描述,灯箱图片底部毛玻璃描述条显示
widthnumber | stringnull宽度,number 自动加 px,string 原样使用
heightnumber | stringnull高度,同上规则
fit'cover' | 'contain' | 'fill' | 'none' | 'scale-down''cover'CSS object-fit 填充模式
objectPositionstringnullCSS object-position 裁剪焦点,如 'top center'
shape'default' | 'circle' | 'rounded' | 'square''default'外观形状,圆形/圆角方形/方形
fallbackstringnull加载失败兜底图地址,原图失败后自动切换
placeholderbooleantrue加载前显示骨架占位(CSS Skeleton 动画)
loadingIconstring | HTMLnull自定义加载态图标内容;以 '<' 开头视为 HTML,否则视为图片 URL
loadingProgressboolean | 'exact'true加载进度反馈;true=原生加载+滑动进度条(高性能逐张显示),'exact'=XHR精确百分比(适合大图),false=关闭
errorIconstring | HTMLnull自定义错误态图标内容;规则同上
maskstring | HTMLnull自定义 hover 预览遮罩内容;规则同上
progressivebooleanfalse开启渐进式加载,配合 blurDataURL 使用缩略图先展示再模糊过渡
blurDataURLstringnull渐进式加载的低清缩略图(base64 / data URL)
aspectRationumber | stringnull宽高比,如 16/9、1.5、'4:3',防止 CLS 布局抖动
lazybooleanfalse开启原生 loading="lazy" 懒加载
lazyRootstring | Elementnull自定义懒加载根容器(CSS 选择器或 DOM 元素),配合 lazy 使用,基于 IntersectionObserver
lazyRootMarginstring'100px 0px'懒加载提前检测范围,CSS rootMargin 格式(如 '200px 0px'、'50%'),大列表可设更大值减少白屏
radiusnumber | string0圆角,number 自动加 px
borderedbooleanfalse显示 1px 边框
crossOrigin'anonymous' | 'use-credentials'null图片 crossorigin 属性
referrerPolicystringnullReferrer 策略
decoding'auto' | 'sync' | 'async'null图片解码模式,'async' 可提升首帧性能
draggablebooleanfalse图片是否可拖拽
imageClassstring''附加到 img 元素的 CSS class
imageStyleobject | stringnull附加到 img 元素的内联样式(对象键值或 cssText 字符串)
onClick(event, inst) => voidnull点击图片回调,第二参数为组件实例
previewboolean | { src: string }false点击打开通用灯箱预览;传 { src } 时组件展示 src 缩略图,灯箱展示 preview.src 高清大图
previewListArray<string | { src, previewSrc, alt, name }>null多图预览组,点击打开灯箱后可切换全部图片;字符串项直接作为高清图地址
initialIndexnumber0多图预览组的起始索引,从 0 开始
previewLoopbooleantrue灯箱多图翻页是否循环,false 时到首尾停止
previewCloseOnMaskbooleantrue点击灯箱遮罩是否关闭,false 时只能点关闭按钮或 Esc
previewCloseOnEscbooleantrue按 Esc 键是否关闭灯箱
previewDelaynumber0hover 预览遮罩延迟显示(毫秒)
previewContainerstring | Elementnull灯箱挂载容器,null 时挂载到 body
previewDownloadNamestringnull灯箱下载时自定义文件名,null 时使用图片原始名称
previewShowThumbsbooleantrue多图时是否显示底部缩略图导航条
previewShowClosebooleantrue灯箱是否显示关闭按钮
previewShowDownloadbooleantrue灯箱是否显示下载按钮
previewShowZoombooleantrue灯箱是否显示缩放按钮
previewShowRotatebooleantrue灯箱是否显示旋转按钮
previewShowResetbooleantrue灯箱是否显示重置按钮(一键还原缩放/旋转/翻转/平移)
previewShowFlipbooleantrue灯箱是否显示翻转按钮
previewZIndexnumbernull灯箱 z-index 层级,null 时使用 CSS 默认值 9999
retryablebooleanfalse加载失败时是否允许点击错误图标重新加载
onLoad(src, img) => voidnull图片加载成功回调
onError(src, img) => voidnull图片加载失败回调(含 fallback 最终失败)
onPreviewOpen({ index, total }) => voidnull灯箱打开回调
onPreviewClose() => voidnull灯箱关闭回调
onPreviewChange({ index, total, image }) => voidnull灯箱切换图片回调
keystring''表单注册 key,用于 SepForm 集成
classNamestring''附加到容器元素的 CSS class

Methods 方法

方法参数返回说明
setSrc(v)stringvoid设置图片地址
getSrc()-string获取当前图片地址
setSrcset(v)string | nullvoid设置响应式图片候选列表
getSrcset()-string | null获取当前 srcset
setSizes(v)string | nullvoid设置图片尺寸提示
getSizes()-string | null获取当前 sizes
setFallback(v)stringvoid设置兜底图地址
getFallback()-string获取兜底图地址
setTitle(v)stringvoid设置灯箱标题
getTitle()-string获取灯箱标题
setDescription(v)stringvoid设置灯箱图片描述
getDescription()-string获取灯箱图片描述
setFit(v)stringvoid设置填充模式(cover/contain/fill/none/scale-down)
getFit()-string获取当前填充模式
setObjectPosition(v)string | nullvoid设置裁剪焦点
getObjectPosition()-string | null获取当前裁剪焦点
setShape(v)stringvoid设置形状(circle/rounded/square/default)
getShape()-string获取当前形状
setRadius(v)number | stringvoid设置圆角
setWidth(v)number | stringvoid设置宽度
setHeight(v)number | stringvoid设置高度
setBordered(v)booleanvoid设置边框显示/隐藏
isBordered()-boolean是否显示边框
setPreview(v)boolean | { src: string }void设置预览灯箱开关;传 { src } 同时设置高清预览图
isPreview()-boolean是否已启用预览
setPreviewSrc(v)string | nullvoid设置高清预览图地址(自动开启预览)
getPreviewSrc()-string | null获取高清预览图地址
setPreviewList(v)Arrayvoid设置多图预览组(自动开启预览)
getPreviewList()-Array获取规范化后的预览组列表
setInitialIndex(v)numbervoid设置多图预览起始索引
getInitialIndex()-number获取多图预览起始索引
setPreviewLoop(v)booleanvoid设置灯箱翻页是否循环
isPreviewLoop()-boolean灯箱翻页是否循环
setPreviewCloseOnMask(v)booleanvoid设置点击遮罩是否关闭灯箱
isPreviewCloseOnMask()-boolean点击遮罩是否关闭灯箱
setPreviewCloseOnEsc(v)booleanvoid设置按 Esc 是否关闭灯箱
isPreviewCloseOnEsc()-boolean按 Esc 是否关闭灯箱
setPreviewDelay(v)numbervoid设置 hover 预览遮罩延迟(毫秒)
getPreviewDelay()-number获取 hover 预览遮罩延迟
setPreviewContainer(v)string | Element | nullvoid设置灯箱挂载容器
getPreviewContainer()-string | Element | null获取灯箱挂载容器
setPreviewDownloadName(v)string | nullvoid设置灯箱下载自定义文件名
getPreviewDownloadName()-string | null获取灯箱下载自定义文件名
setPreviewShowThumbs(v)booleanvoid设置是否显示底部缩略图导航条
isPreviewShowThumbs()-boolean是否显示底部缩略图导航条
setPreviewShowClose(v)booleanvoid设置是否显示关闭按钮
isPreviewShowClose()-boolean是否显示关闭按钮
setPreviewShowDownload(v)booleanvoid设置是否显示下载按钮
isPreviewShowDownload()-boolean是否显示下载按钮
setPreviewShowZoom(v)booleanvoid设置是否显示缩放按钮
isPreviewShowZoom()-boolean是否显示缩放按钮
setPreviewShowRotate(v)booleanvoid设置是否显示旋转按钮
isPreviewShowRotate()-boolean是否显示旋转按钮
setPreviewShowReset(v)booleanvoid设置是否显示重置按钮
isPreviewShowReset()-boolean是否显示重置按钮
setPreviewShowFlip(v)booleanvoid设置是否显示翻转按钮
isPreviewShowFlip()-boolean是否显示翻转按钮
setPreviewZIndex(v)numbervoid设置灯箱 z-index 层级,null 恢复 CSS 默认
getPreviewZIndex()-number | null获取灯箱 z-index 层级
setRetryable(v)booleanvoid设置加载失败是否可点击重试
isRetryable()-boolean是否允许失败重试
retry()-void手动触发重新加载当前图片
setCrossOrigin(v)'anonymous' | 'use-credentials'void设置跨域策略
setLazy(v)booleanvoid设置懒加载
isLazy()-boolean是否已启用懒加载
setLazyRoot(v)string | Element | nullvoid设置自定义懒加载根容器
getLazyRoot()-string | Element | null获取懒加载根容器
setLazyRootMargin(v)stringvoid设置懒加载提前检测范围(CSS rootMargin 格式)
getLazyRootMargin()-string获取懒加载提前检测范围
setDraggable(v)booleanvoid设置可拖拽
isDraggable()-boolean是否可拖拽
setImageClass(v)stringvoid设置 img 元素的附加 class
getImageClass()-string获取 img 元素的附加 class
setImageStyle(v)object | stringvoid设置 img 元素的内联样式
getImageStyle()-object | string | null获取 img 元素的内联样式
setLoadingIcon(v)string | HTMLvoid设置自定义加载态图标
getLoadingIcon()-string | HTML获取自定义加载态图标
setLoadingProgress(v)booleanvoid设置是否显示加载进度条
isLoadingProgress()-boolean是否显示加载进度条
setErrorIcon(v)string | HTMLvoid设置自定义错误态图标
getErrorIcon()-string | HTML获取自定义错误态图标
setMask(v)string | HTMLvoid设置自定义 hover 预览遮罩
getMask()-string | HTML获取自定义 hover 预览遮罩
setProgressive(v)booleanvoid设置是否开启渐进式加载
isProgressive()-boolean是否开启渐进式加载
setBlurDataURL(v)stringvoid设置渐进式加载缩略图
getBlurDataURL()-string获取渐进式加载缩略图
setAspectRatio(v)number | stringvoid设置宽高比
getAspectRatio()-number | string | null获取宽高比
setDecoding(v)'auto' | 'sync' | 'async'void设置图片解码模式
getDecoding()-string | null获取当前解码模式
isLoaded()-boolean图片是否已加载完成
isErrored()-boolean图片是否加载失败
getState()-object获取完整状态快照
setValue(k, v)string, anyvoid设置单项状态值,触发视图更新
getValue(k)stringany获取单项状态值,不传 key 返回完整 state
subscribe(fn)(state) => voidfunction订阅状态变更,返回取消订阅函数
destroy()-void销毁实例,移除 DOM 与事件监听

Events 事件

事件回调参数说明
onLoad(src: string, img: HTMLImageElement)图片加载成功时触发
onError(src: string, img: HTMLImageElement)原图 + fallback 均加载失败时触发
onClick(event: MouseEvent, inst: SepImage)点击图片时触发,第二参数为组件实例
onPreviewOpen({ index, total })灯箱打开时触发
onPreviewClose()灯箱关闭时触发
onPreviewChange({ index, total, image })灯箱切换图片时触发

代码测试 / API / 断言

断言输出