Skip to page content

图片

QImg 组件可以轻松处理图片(任何图片格式),并提供了丰富的功能,包括延迟加载、占位符、错误状态处理等。它还能自动处理图片的长宽比,并支持响应式布局。

QImg API

用法

基础用法

长宽比

图片说明

图片样式

在下面的示例中,我们添加了模糊和棕褐色效果。此外,我们还使用了 rounded-borders CSS 辅助类。

适应模式

通过 fit 属性可以控制图片如何适应容器,有多种模式:‘cover’、‘fill’(默认)、‘contain’、‘none’、‘scale-down’。这基本上与 CSS 属性 object-fit 相同。

某些模式会在图片旁边留出空白(水平或垂直方向)。

您还可以通过 position 属性配置位置,这相当于 CSS 的 object-position 属性。其默认值是 “50% 50%”。

加载状态

当您有大尺寸图片时,您可以使用占位图片(建议使用 base64 编码指定),如下例所示。在目标图片加载完成之前,将显示占位图片。我们切换 QImg 标签,以便您可以看到占位图片的效果。

响应式

WARNING

要理解 sizes 和 srcset 属性,请阅读关于响应式图片的原生支持,因为 QImg 完全依赖于此。

TIP

关于 sizes 属性,请阅读分辨率切换:不同尺寸。

TIP

关于 srcset 属性,请阅读分辨率切换:相同尺寸,不同分辨率。

禁用原生上下文菜单

在下面的示例中,我们禁用了图片上的原生上下文菜单。

WARNING

使用此选项时,请始终确保 default 或 error 插槽的内容包裹在 div 元素中,或者在元素上添加 all-pointer-events 类。

服务端渲染
v2.32+

在 SSR/SSG 中,只要你已声明了 QImg 盒子的形状(即设置了 ratio、initial-ratio 或 height 中的任意一个),QImg 就会把 <img> 放进服务端 HTML 中。这样浏览器会在解析 HTML 时——远早于水合——就发现并获取图片,并像原生 <img> 一样在图片到达时就绘制它。只有当页面完成水合时图片仍在加载,才会显示加载状态(spinner 或 loading 插槽);对于已经加载完毕的图片,load/error 事件会在水合时发出。

如果这三者都没有设置,盒子在图片的自然比例已知之前会使用默认的 16:9 比例,因此服务端渲染的图片会在水合时明显改变形状。为此 QImg 会将这类图片延迟到水合时才渲染,除非你设置 ssr-prerender 并接受这种盒子形状变化。

TIP

对于首屏(above-the-fold)图片,请同时设置 loading="eager" 和 fetchpriority="high",这样浏览器就不会延迟其获取。

无障碍访问
v2.25+

QImg 的包裹元素带有 role="img",其无障碍名称取自 alt 属性——对于任何承载含义的图片都请提供 alt。对于纯装饰性图片,请设置 alt="",就像你在原生 <img> 上所做的那样:此时包裹元素不再声明任何 role(img role 需要一个名称),屏幕阅读器会跳过它。完全省略 alt 效果相同。注意加载和错误状态的变化不会被播报给辅助技术。