Image (图片)

带骨架屏、宽高比与 object-fit 的图片;在 Nuxt 层下经由 @nuxt/image 渲染。

基础用法

示例图片
Basic.vue

宽高比

16:9
1:1
AspectRatio.vue

填充方式

cover
cover
contain
contain
ObjectFit.vue

骨架屏

骨架屏示例
Skeleton.vue

ThumbHash 模糊占位(blur-up)

传入 thumbhash(后端随图片元数据下发的 ~25 字节 base64), 加载前即显示解码出的模糊占位、加载完成后淡出——比纯骨架屏更贴近最终画面,且零额外网络请求。 SSR 的 HTML 里只有这串哈希的平均色(一个纯色背景,约 20 字节),模糊图在挂载后由客户端解码并淡入; 挂载时图片已从缓存加载完成的,则不解码。

ThumbHash 模糊占位示例
BlurUp.vue

加载失败回退

加载失败回退
Fallback.vue

load / error 事件

两个事件的签名都是 (src, event?)。第一个参数是对应的图片地址—— 因为配了 fallbackSrc 时会有两次尝试,靠它才能区分是原图失败还是回退图也失败。 event 是原生 DOM 事件;若失败/成功是从已缓存的图片状态直接判定出来的 (此时浏览器不会再触发 load / error),则为 undefined。

加载失败即整体消失
正常图片
等待中…
ErrorEvent.vue

懒加载与即时加载

eager
eager(即时)
lazy
lazy(懒加载,默认)
Loading.vue

属性

属性类型默认值说明
src *string—Image URL. Under Nuxt it is handed to the injected `<NuxtImg>`, so a provider path or a remote URL both work.
altstring"image"Alternative text. Write the empty string for a decorative image so screen readers skip it.
ariaLabelstring—Accessible name, when it has to differ from `alt`.
aspectRatiostring—CSS aspect-ratio on the wrapper, e.g. "16 / 9". When set the image is absolutely positioned and fills the box.
classNamestring—Classes for the WRAPPER element (the box that holds the skeleton and the aspect ratio). Extra classes, merged after the component's own classes so yours wins the conflict — KunUI's `rounded-kun-*` / `shadow-kun-*` scales included.
decoding"auto" | "sync" | "async"—Native `decoding` hint. `async` keeps a large image from blocking the frame it lands in.
densitiesstring—Pixel densities to generate, e.g. `'x1 x2'`, via
fallbackSrcstring—Shown if `src` fails to load (broken URL, 404). Resets when `src` changes.
fetchpriority"auto" | "high" | "low"—Native fetch priority. `high` for the one image that is the page's LCP; leave the rest alone.
formatstring—Output format to transcode to (`webp`, `avif`, …), via
heightstring | number—Intrinsic height. See `width`.
imageClassNamestring—Classes for the inner image (wrapper gets `className`).
loading"lazy" | "eager""lazy"Native loading hint. `lazy` defers the fetch until the image nears the viewport; use `eager` for anything above the fold.
objectFit"fill" | "none" | "cover" | "contain" | "scale-down""cover"How the image fills its box once `aspectRatio` or an explicit size gives it one.
placeholderstring | number | boolean | [w: number, h: number, q?: number, b?: number]—Blur-up placeholder generated by
preloadboolean | { fetchPriority: "auto" | "high" | "low"; }—Emit a `<link rel="preload">` for this image, via
provider"none" | (string & {}) | "ipx"—Which
qualitystring | number—Compression quality passed to
sizesstring—Responsive `sizes` hint for
skeletonbooleantrueRenders a sibling skeleton overlay while loading (Radix-Avatar 3-state machine). Default true; set false for a bare element.
thumbhashstring—A ThumbHash (base64) → a placeholder shown until the image loads, then cross-faded out. Server-rendered HTML carries only the hash's average colour; after mount the client decodes the blurred preview and fades it in over that colour, skipping it when the image is already loaded. An invalid hash falls back to the pulse skeleton. Implies the wrapper even with `skeleton: false`.
widthstring | number—Intrinsic width. Set it together with `height` so the browser reserves the box and the page does not shift as the image arrives.

事件

事件回调参数
errorsrc: string, event?: Event
loadsrc: string, event?: Event