Picture
使用 Transform Images 插件创建响应式图像
配置参数
- name string
The key name for the transformations definitions
Default:"transformImages"
- order string[]
The priority order of the formats
Default:[ "avif", "webp", "png", "jpg" ]
Description
Picture 插件创建 <picture>
元素,并添加所有需要的 <source>
,为同一张图片提供不同格式和分辨率的版本。它在底层使用了 transform_images
插件 来进行转换。
Installation
在你的 _config.ts
文件中导入此插件以使用它,并在 transform_images
之前注册它:
import lume from "lume/mod.ts";
import picture from "lume/plugins/picture.ts";
import transformImages from "lume/plugins/transform_images.ts";
const site = lume();
site.use(picture(/* Options */));
site.use(transformImages());
export default site;
Example
创建一个带有 transform-images
属性的 <img>
元素,其中包含图片所需的所有格式和尺寸:
<img src="/flowers.jpg" transform-images="avif webp jpg 300@2" />
此图片的 transform-images
属性包含格式 (avif
, webp
, jpg
) 和不同的尺寸 (300,表示 300 像素)。 @2
后缀表示此尺寸也应支持 2x 分辨率。 输出的 HTML 代码是:
<picture>
<source
srcset="/flowers-300w.avif, /flowers-300w@2.avif 2x"
type="image/avif"
/>
<source
srcset="/flowers-300w.webp, /flowers-300w@2.webp 2x"
type="image/webp"
/>
<img src="/flowers-300w.jpg" srcset="/flowers-300w@2.jpg 2x" />
</picture>
该插件不仅生成 HTML 代码,还将配置发送到 transform_images
插件,以生成所有这些图片。
Configuring the img container
如果 transform-images
属性被分配给一个不是图片的 HTML 元素,插件将搜索在该元素内找到的所有 img
元素。 如果你不想在每个 <img>
元素中都包含此属性,这将非常有用,因为如果你想避免重复(如果所有图片都具有相同的配置),或者 html 内容是从你想保持整洁的 markdown 内容生成的,那么就可以使用此方法。
<div transform-images="avif webp jpg 300@2">
<!-- 所有内部的图片都将被转换 -->
<img src="/flowers.jpg" />
<!-- 你可以覆盖特定图片的值 -->
<img src="/flowers.jpg" transform-images="avif jpg 600" />
<!-- 这个图片不会被转换,因为值是空的 -->
<img src="/flowers.jpg" transform-images="" />
</div>