🏔️

NuxtImgタグ使ってる?

2023/12/26に公開

こんにちは、keigoです。私は日常的にNuxt3プロジェクトを触っています。その中で、意外と使われてないかも?と思ったNuxtImgについて紹介します。

Nuxt Imageとは

Nuxt 3フレームワークで使用される画像最適化モジュールです。
導入の仕方や設定などは公式ドキュメントを参照してください。
https://image.nuxt.com/

タグの使い方:以下のような感じで、imgタグのノリで使えます。

<template>
  <div>
    <NuxtImg src="/path/to/your/image.jpg" alt="説明テキスト" />
  </div>
</template>

どんなメリットがあるの?

画像のリサイズ

NuxtImgは、指定された画像のサイズにリサイズし、圧縮することができます。
以下のようなコードを書くことで実現可能です。

<template>
  <div>
    <NuxtImg src="/path/to/your/image.jpg" width="300" height="200" alt="画像の説明" />
  </div>
</template>

毎回画像をローカルでリサイズして、圧縮サイトとか使って圧縮しなくていいんですね、非常に便利

レスポンシブ時に別のサイズの画像を表示できる

PCサイズでmax-width: 800px;とかやっても、スマホのときは800pxも表示させないじゃないですか。その場合に以下のような指定をすることで、画面サイズごとに最適化された画像を表示させることができます。

<template>
  <div>
  <!-- ビューポートの幅が320px以下の場合、画像は280pxの幅で表示されます -->
  <!-- ビューポートの幅が768px以下の場合、画像は600pxの幅で表示されます -->
    <NuxtImg
      src="/path/to/your/image.jpg"
      sizes="(max-width: 320px) 280px, (max-width: 768px) 600px, 800px"
      width="800"
      alt="画像の説明"
    />
  </div>
</template>

webpで配信できる

以下のように、format="webp"と記述すると、

<template>
  <div>
    <NuxtImg format="webp" src="/path/to/your/image.jpg" alt="説明テキスト" />
  </div>
</template>

webp形式で配信されます。非常に便利ですね。

おわりに

基本的に使って損ないので、Nuxt3プロジェクトを使っている方はぜひimgタグじゃなくてNuxtImgタグで画像を最適化しましょう!

Discussion