<Picture />
<picture> 要素を生成する標準コンポーネント。
- slotの有無により要素を単独で設置する前景モードとコンテナ要素に内包する背景モードを自動で切り替える
<source>要素とtype属性、srcset属性を使用したフルスペックのアートディレクションに対応- プレースホルダーは
<picture>要素の::after擬似要素にbackground-imageないしbackground-colorで設定する- CSSアニメーションを使用したアニメーションに対応
- JavaScriptが無効な場合は
<img>要素のbackground-imageないしbackground-colorにフォールバックする
- JavaScriptが無効でも正常に表示される
---import Picture from 'astro-image-processor/components';---
<Picture src="/src/assets/images/image.png" alt="Alt text" />---import Picture from 'astro-image-processor/components';---
<Picture src="/src/assets/images/image.png" alt="Alt text"> <p>slot</p></Picture>使用する画像の指定
- 型:
string - 必須
- リモートファイル
- 内容が
httpから始まる場合はリモートファイルと見なす
- 内容が
- Data URL
- 内容が
data:から始まる場合はデータURLと見なす
- 内容が
- ローカルファイル
- 内容が
/@fsから始まる場合は/@fs/をfile://に置換した上でnew URL(src).pathnameを取得して処理する - 内容が
/${assetsDirName}/から始まる場合はoutDirからのルート相対パスとして処理する - それ以外の場合は
rootDirからのルート相対パスとして処理する
- 内容が
- プロジェクトルート(
rootDir)からのルート相対パス(例/src/assets/images/image.png)での指定を推奨- 画像を
importしてsrc={importedImage.src}の形式で指定することも可能だが、本インテグレーションとastro:assetsでキャッシュの二重管理が発生するため非推奨
- 画像を
<img> 要素の alt 属性の値
- 型:
string - 必須
<img> 要素の width 属性の値
- 型:
number densitiesを使用する場合、ここで設定した値が1xに相当するものとして解釈される- 設定しない場合、「仕様としては正しいがユーザーの期待に反する動作」を引き起こしやすい点に留意する
height
Section titled “height”<img> 要素の height 属性の値
- 型:
number
densities
Section titled “densities”<img> 要素の srcset 属性で使用する x 記述子の指定
- 型:
number[] - 例:
[1, 2, 3] widthが設定されていない場合、画像の原寸を最大倍率のものとして解釈する
widths
Section titled “widths”<img> 要素の srcset 属性で使用する w 記述子の指定
- 型:
number[] - 例:
[1000, 2000, 3000]
<img> 要素の sizes 属性の指定
- 型:
string | (resolvedWidths: number[], resolvedDensities: number[]) => string - 既定値:
layoutの値に応じて以下のように設定されるfixed:${resolvedWidth}pxfill,fullWidth:100vwconstrained,undefined:(min-width: ${resolvedWidth}px) ${resolvedWidth}px, 100vw
- 参照: sizes (MDN)
resolvedWidthsは最終的に解決された画像の幅の配列densitiesを使用する場合でも幅が入る
resolvedWidthは最終的に<img>要素のwidthに設定される値
placeholder
Section titled “placeholder”プレースホルダーの指定
- 型:
"blurred" | "dominantColor" | null - 既定値:
blurred blurredblueProcessorで指定されたsharpインスタンスで処理した画像を使用する- 画像はBase64に変換され、Data URL形式でCSSに直接記述される
- 既定では「幅20pxに縮小した品質最低のWebP」が使用される
dominantColor- 単色を使用する
- 既定ではsharpの
stats().dominantで得られる色を使用する placeholderColorプロパティが設定されている場合はplaceholderColorプロパティで指定した色を使用する
placeholderColor
Section titled “placeholderColor”placeholder が dominantColor の場合に使用する色の指定
- 型:
string - 例:
"#333""hsl(150 30% 60%)""var(--some-color)" - この項目を設定しない場合、sharpの
stats().dominantが使用される - 参照: color (MDN)
blurProcessor
Section titled “blurProcessor”プレースホルダー(ぼかし画像)の生成に使用するsharpインスタンス
- 型:
Sharp - 既定値:
sharp().resize(20).webp({ quality: 1 })
upscale
Section titled “upscale”densities widths の指定により画像の拡大が必要な場合の処理方法の指定
- 型:
"never" | "always" | "original" - 既定値:
never never: 拡大される指定は無視するalways: 拡大される場合は拡大するoriginal: 拡大される指定を無視した上で、画像の原寸を追加する
layout
Section titled “layout”画像のレイアウトを指定する
- 型:
"constrained" | "fixed" | "fullWidth" | "fill" | null - 既定値:
constrained constrainedまたはfixedの場合、<img>要素のCSSプロパティwidthをスコープ付きCSSで最終的な画像幅に設定する- グローバルクラス
globalClassNames.layout[layout]が<picture>および<img>要素に適用される <GlobalStyles>コンポーネントは以下のスタイルを適用するconstrained:max-width: 100%; height: auto;fixed: N/AfullWidth:width: 100%; height: auto;fill:width: 100%; height: 100%;
- グローバルクラスを利用して任意のスタイルを設定することができる
- アスペクト比を固定したい場合は
enforceAspectRatioと併用する
objectFit
Section titled “objectFit”<img> 要素のCSSプロパティ object-fit の値
- 型:
"fill" | "contain" | "cover" | "none" | "scale-down" - グローバルクラス
globalClassNames.objectFit[objectFit]が<img>要素に適用される <GlobalStyles>コンポーネントによりobject-fitがこの項目の値に設定される- グローバルクラスを利用して任意のスタイルを設定することができる
objectPosition
Section titled “objectPosition”<img> 要素のCSSプロパティ object-position の値
- 型:
string - スコープ付きCSSによって反映する
backgroundSize
Section titled “backgroundSize”プレースホルダー画像のCSSプロパティ background-size を設定する
- 型:
"cover" | "contain" | "auto" | string | null - 参照: background-size (MDN)
placeholderがblurredの場合に使用されるbackgroundSizeが設定されておらずobjectFitが設定されている場合はobjectFitに準じた値が使用される- スコープ付きCSSによって反映する
backgroundPosition
Section titled “backgroundPosition”プレースホルダー画像のCSSプロパティ background-position を設定する
- 型:
string | null - 参照: background-position (MDN)
placeholderがblurredの場合に使用されるbackgroundPositionが設定されておらずobjectPositionが設定されている場合はobjectPositionの値が使用されるbackgroundPositionもobjectPositionも設定されていない場合は50% 50%が使用される- CSSプロパティ
object-positionの既定値
- CSSプロパティ
- スコープ付きCSSによって反映する
enforceAspectRatio
Section titled “enforceAspectRatio”<picture> および <img> 要素にCSSプロパティ aspect-ratio を設定する
- 型:
boolean - 既定値: false
- CSSプロパティ
aspect-ratioに最終的な<img>要素のwidthおよびheightの値を元に${width} / ${heigt}を設定する - スコープ付きCSSによって反映する
asBackground
Section titled “asBackground”背景モードを強制する
- 型:
boolean - 既定値: false
- コンポーネントにスロットが存在する場合は必ず背景モードになるため指定不要
preload
Section titled “preload”指定したフォーマットの画像の <link rel="preload"> を生成して <head> 要素に追加する
- 型:
"jpeg" | "png" | "avif" | "webp" | "gif" - CSSの仕様上の制約から複数のフォーマットは指定できない
processor
Section titled “processor”画像の編集に使用するsharpインスタンス
- 型:
Sharp | Sharp[]
profile
Section titled “profile”画像の編集内容に文字列で個別の識別名を与える
- 型:
string
formats
Section titled “formats”出力フォーマットの指定
- 型:
("jpeg" | "png" | "avif" | "webp" | "gif")[] - 既定値:
["avif", "webp"] - 末尾の要素がフォールバックフォーマットとして
<img>要素で使用される
formatOptions
Section titled “formatOptions”出力フォーマットの設定
- 型:
{ jpeg: JpegOptions, png: PngOptions, webp: WebpOptions, avif: AvifOptions, gif: GifOptions }(sharp) - 既定値: sharp標準設定
tagName
Section titled “tagName”背景モード時のコンテナ要素のHTMLタグ
- 型:
HTMLTag(Astro) - 既定値:
div - この値による型の自動補完は行われない
artDirectives
Section titled “artDirectives”メディアクエリ毎のバリエーションの設定
- 型:
ImgProcArtDirectiveProps[] - 参照: Art Directive
- 配列の要素毎に
media属性を指定した<source>要素が出力される- CSSはメディアクエリ付きで出力される
pictureAttributes
Section titled “pictureAttributes”- 型:
HTMLAttributes<"picture">(Astro) <picture>要素にそのまま渡される
containerAttributes
Section titled “containerAttributes”- 型:
HTMLAttributes<"div"> | HTMLAttributes<"a"> | Record<string, unknown> - 背景モードでのみ有効
- コンテナ要素にそのまま渡される
minAge
Section titled “minAge”リモートファイルの最小キャッシュ有効期間(ミリ秒)
- 型 :
number - HTTPヘッダーによる指定を上書きする
maxAge
Section titled “maxAge”リモートファイルの最大キャッシュ有効期間(ミリ秒)
- 型 :
number - HTTPヘッダーによる指定を上書きする
crossOrigin
Section titled “crossOrigin”<img> 要素の crossorigin と同等
- 型:
"anonymous" | "use-credentials" | "" | undefined | null - 参照: crossorigin (MDN)
- コンポーネントに
crossoriginプロパティが存在する場合はそちらが優先される
- 本インテグレーションと無関係のプロパティは全て
<img>要素に渡される- Astro特有のものを含め
HTMLAttributes<"img">として受け入れる
- Astro特有のものを含め
- Astroのスコープされたスタイルが生成するdata属性
data-astro-cid-[hash]ないしクラス.astro-[hash]は<picture>要素と<img>要素に継承される- 背景モードではコンテナ要素にも継承される