前置き
ファイル形式の1つ。
pngとかgifとかのあれです。
gif同様にアニメーションにも対応で、
画質は保ったまま、
容量を2, 3割程度で
圧縮できるものです💫
簡単にですが、
流れとコードを載せていきます✍️
参考サイト:
WebP(ウェッピー)とは?変換方法と使用するメリットのまとめ
HTMLのsrcsetを使って画像をレスポンシブにRetina対応させてみよう
srcsetとsizes属性でサイズ(解像度)ごとに画像を出し分ける方法
レスポンシブの画像切り替えができるsrcset属性
webp形式に変換
用意したデータを
webPに変換したり
生成する必要があります💡
変換サイトで変換しましょう🧚♀️
https://squoosh.app/
画像を圧縮・最適化しよう(Squoosh編)
実際に試したところ、
80KB→11KBまで軽量化に成功👏
WPなどのCMSで使用する場合は
プラグインで変換&webp対応もできます。
画像圧縮・最適化プラグインEWWW Image Optimizerの使い方・設定方法まとめ
コード
staticの直下に
画像icon.webpを置いています。
画像の数が多く、
変換が面倒な場合は
gulp-webpなどを使用するのも
良いかもしれません🌟
こちらを参考に試してみましたが
上手く動かなかったので、
他で似たものがあれば使ってみたいです🤔💭
Nuxt.jsで画像をwebpで圧縮する
ただ表示だけしてみる
loading属性をlazyにし、
遅延読み込みをしています。
見えていない画面の画像まで
読み込む必要はないですよね?💡
表示している画面内(viewport)に
画像が入りそうになったら読み込むので、
パフォーマンスが向上します✨
遅延関連については
ここが分かりやすいです🍀
表示速度を飛躍的に向上させるHTML/CSS最新仕様「content-visibility」「Lazy loading」「contain」をコード付き簡単解説
| 1 2 3 4 5 6 7 8 9 | <template>   <div class="page">     <img       type="image/webp"       src="/icon.webp"       loading="lazy"     >   </div> </template> | 
srcset属性を使う
srcの場合は画像を1つ
指定するだけでしたが、srcsetを使うことで
複数指定することができます🌟
| 1 2 3 4 5 6 7 8 9 10 | <template>   <div class="page">     <img       type="image/webp"       src="default.png"       srcset="/icon.webp 1x, /m-icon.jpeg 1.5x, /l-icon.png 2x"       alt="img"     >   </div> </template> | 
画像のURLと記述子(デスクリプタ)をセットとして
カンマで区切って指定していきます✍️
使用可能な単位はviewportの横幅w、
またはデバイスピクセル比のxです。
端末の幅or比率に応じて
表示を変えるので
Chromeの検証でも
他の表示を確認することはできません👀
これを簡単に確認できるものが
ありそうですが…🤔💭
sizes属性
srcsetがある場合に使用できる属性です💫srcsetを必ずwの単位にし、viewportの半分のサイズで表示するならsizes="50vw"と書きます✍️
| 1 2 3 4 5 6 7 8 9 10 11 | <template>   <div class="page">     <img       type="image/webp"       src="default.png"       sizes="50vw"       srcset="/icon.webp 1440w, /m-icon.jpeg 720w, /l-icon.png 360w"       alt="img"     >   </div> </template> | 
まとめ
webp形式と遅延読み込みで
サイト自体の軽量化ができるのは良いですね✨
