この記事は共有および集約することを歓迎します。全文を転載する必要はありません。著作権を尊重してください。サークルはとても小さいです。緊急に必要な場合は、許可を得るためにご連絡ください。 1. それ以上圧縮できないPNG画像 たとえば、以下に示す PNG 画像 (1/2 サイズで表示) は、トップの PNG ツールを使用して圧縮した後でも 122K のままです。 元の画像のアドレスはこちらです: https://image.zhangxinxu.com/image/blog/202005/card.png PNGのサイズは次のとおりです。 プロジェクトにこのような画像が 1 つだけであれば問題ありません。ただし、ページにこのサイズの PNG が一度に多数ある場合、最初の読み込みでパフォーマンスへの影響が非常に顕著になります。たとえば、下の図の 4 つのカード画像は 500K です。 カードの背景も複雑なグラフィックなので、端や角は透明にする必要があります。JPG 形式に変更しても確実に機能しません (端や角が単色になります)。さらに最適化する方法はありませんか? はい、CSS マスクの助けを借りて PNG 画像のサイズを大幅に最適化します。 2. マスク画像とPNGサイズの最適化
この方法は実行可能です。デモはここにあります。 具体的な手順は以下のとおりです。 1.PNGをJPGに変換する まず、PNG 画像を JPG に保存します。以下に示すように、画像品質の 50% で十分です。 この時点で、画像サイズは 50% 以上削減できます。 2. PNGアウトラインに基づいて単色のPNGを作成する PNG画像のサイズが大きいのは、色が濃すぎるからです。単色にすれば、サイズは100分の1以下に縮小できます。 現時点では、純黒で塗りつぶされた PNG 画像のサイズは 1K 未満です。 3.マスクを使用してJPGの角を白く透明にする JPG カード画像が <img src="カード.jpg"> 次の CSS コードを使用します。 画像 { -webkit-マスクイメージ: url(card-mask.png); マスク画像: url(card-mask.png); } 角が透明でサイズが小さい、元の 122K PNG 画像と同じ効果が得られます。 card-mask.png の四隅は透明なので、card.jpg が card-mask.png をマスク画像として適用すると、四隅も透明になります。 4. マスク画像のクロスドメイン制限 Chrome などのブラウザのセキュリティ アップグレードにより、現在マスク画像へのクロスドメイン アクセスが制限されており、次のようなエラー プロンプトが表示されます。
ソリッドカラーマスクイメージを base64 形式に変換できます。次に例を示します。
百聞は一見にしかず、こちらをクリックしてください: CSSマスクを使用したPNG画像サイズの最適化デモ JPG 形式のカードの最終的な効果は次の図に示されています (4 つの角は透明です)。 3. 最適化された効果の比較 最適化前後の 4 つの画像のサイズ比較は次のとおりです。 4 枚の画像の元のサイズは 458K ですが、最適化された画像のサイズは 197K+1K となり、サイズが56.8%削減されました。 クィア〜 要約する CSS マスクを使用して PNG 画像のサイズを大幅に最適化する方法についての記事はこれで終わりです。CSS マスクに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 |
<<: Docker で MySQL マスター スレーブ レプリケーションを実装するためのサンプル コード
>>: iFrameは背景を覆うポップアップレイヤーとして使うのに最適です
目次1. JavaScriptの基礎2. 基本的なJavaScript構文3. JavaScript...
この記事では主に、Vue + SpringBoot でページ分割されたリストデータを実装する方法を紹...
背景情報最近、Windows パフォーマンスに関する本を読み直しています。以前は SCOM 監視を使...
GROUP BY 構文を使用すると、指定されたデータ列の各メンバーに従ってクエリ結果をグループ化して...
1 インストールリソースパッケージmysql-8.0.18-1.el7.x86_64.rpm-bun...
目次アルゴリズム戦略単一ノードの差分配列ノードの差分キー値の使用要件アルゴリズム戦略React の調...
今日は簡単な3Dルービックキューブを作ってみましょうまずはレンダリングを見てみましょう!これを学んだ...
<html:reset> タグを使用すると、リセット ボタンが無効になり、ボタンをクリッ...
目次ライフサイクル関数一般的なライフサイクルフックVue のインスタンス破棄について:要約するライフ...
目次JavaScript プロトタイプチェーンオブジェクトプロトタイプトップレベルのプロトタイプOb...
通常のプロジェクトでは、1 回の入札で同時にデータを更新および照会する必要があるという問題によく遭遇...
nginx はリクエストを受信すると、まず server_name でサーバーを照合し、次にサーバー...
JSはショッピングカート内の商品の合計金額を計算して参考とします。具体的な内容は以下のとおりです。質...
MySQL の外部キー制約は、2 つのテーブル間のリンクを確立するために使用されます。 1 つのテー...
Keepalive は Vue プロジェクトでのキャッシュによく使用され、基本的な要件を満たすのに非...