WeChatアプレットでSVGアイコンを使用する方法

WeChatアプレットでSVGアイコンを使用する方法

SVG は、さまざまな利点があるため、近年広く使用されています。残念ながら、WeChat ミニプログラムは、これまでのところ XML 形式の SVG の使用をサポートしていないため、SVG の柔軟性が大幅に低下しています。ほとんどの人は、WeChat ミニプログラムで SVG アイコン ソリューションの使用をあきらめています。
では、WeChat アプレットで SVG アイコンを快適に使用する方法は本当にないのでしょうか?まず、SVG アイコンを使用するための要件を分析しましょう。

  • 導入して活用できる
  • 色を調整する機能

まず、1点目については問題ありません。WeChatアプレットはImage.src形式でのSVGの導入をサポートしています。次の部分はこの記事の重要な部分であり、画像形式の SVG の色を変更する方法について説明します。

最近 CSS を勉強していたところ、DOM の不透明部分に影を落とすことができるプロパティがあることに気付きました。このプロパティは drop-shadow で、その値は box-shadow とほぼ同じです。この属性を使用すると、SVG 画像に変更可能な色の影を付けることができ、元の部分を非表示にして変更可能な色の SVG アイコンを実現できます。

次に、実践してみましょう。まず、DOM 構造を構築します。

<view class="svg_icon">
 <image class="svg_icon-inner" src="/path/icon.svg"/>
</ビュー>

次に、CSS を追加します。

.svg_アイコン {
 ディスプレイ: インラインフレックス;
 幅: 1em;
 高さ: 1em;
 オーバーフロー: 非表示;
}

.svg_アイコンインナー {
 幅: 1em;
 高さ: 1em;
 変換: translateY(-1em);
 フィルター: ドロップシャドウ(0 1em 0 現在の色);
}

DOM 構造と CSS がこのように設定されている理由を説明します。まず、svg_icon はアイコン全体のコンテナーであり、アイコン サイズ (1em = 親コンテナーのフォント サイズ) の設定と余分な部分 (つまり、アイコンの元の部分) の非表示を担当します。一方、svg_icon-inner は SVG のレンダリングと色付きの影の投影を担当します。svg_icon-inner を親コンテナーと同じ幅と高さに設定し、投影の反対方向にオフセットを設定することで、SVG の色を変更する必要性を実現できます (投影色を currentColor に設定すると、アイコンの色を親コンテナーのフォント色に合わせて変更できます)。

このソリューションには欠点があります。ページに変換アニメーションがあり、それがトリガーされると、アイコンがちらつきます。具体的な理由はわかりません。どなたかアドバイスをいただければ幸いです。

これで、WeChat ミニプログラムで SVG アイコンを楽しく使用する方法についての記事は終了です。WeChat ミニプログラムで SVG アイコンを使用する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • WeChatアプレットにSVGベクターアイコンを導入する方法
  • 今日、ミニプログラムは正式にSVGをサポートします
  • WeChatアプレットのストア評価コンポーネントと、vueでsvgを使用して実装された評価表示コンポーネント
  • WeChatアプレットでSVGベクターアイコンを使用する方法の詳細な説明

<<:  MySQL innodb例外の修復に関する経験の共有

>>:  Linux で大容量メモリ ページを持つ Oracle データベースを最適化する方法

推薦する

Linux ファイル操作でよく使われるコマンドのまとめ

0. 新しい操作: mkdir abc #新しいフォルダを作成 touch abc.sh #新しいフ...

Docker+nextcloudで個人用クラウドストレージシステムを構築

1. Dockerのインストールと起動 yum で epel-release をインストールします ...

CentOS 8.4 での Docker パッケージのオフラインインストールの問題について

使用する仮想マシンは、サーバー環境をシミュレートする CentOS 8.4 です。外部ネットワークに...

React仮想リストの実装

目次1. 背景2. バーチャルリストとは何か3. 関連概念の紹介4. 仮想リストの実装4.1 ドライ...

Javascript のスコープとクロージャの詳細

目次1. 範囲2. スコープチェーン3. 語彙の範囲5. 閉鎖の適用6. クロージャの欠陥7. 閉会...

Docker での Redis のマスタースレーブ構成チュートリアルの詳細説明

1. Redisイメージを取得するdocker pull redis 2. それぞれポート6379、...

MySQLデスクトップツールSQLyogのリソースとアクティベーション方法は、白黒のコマンドラインに別れを告げます

では、早速リソースについて見ていきましょう。 123WORDPRESS.COM ダウンロードSQLy...

VueはWebSocketを使用してチャット機能をシミュレートします

この効果は、2つのブラウザが互いにシミュレートしていることを示しています 1. シミュレートされたノ...

JS 配列の重複を排除する 9 つの高度な方法 (実証済みで効果的)

序文一般的な方法はここには記載されていませんが、等しいかどうかを判断するための二重ループや、比較のた...

MySQL 5.7.24 のインストールと設定のグラフィックチュートリアル

この記事では、MySQL 5.7.24のインストールと設定のチュートリアルを参考までに紹介します。具...

MySQLシリーズ マルチテーブル結合クエリ92および99構文例詳細チュートリアル

目次1. デカルト積現象2. 接続クエリの知識ポイントのまとめ1) 結合クエリとは何ですか? 2) ...

シンプルなID生成戦略: MySQLテーブルからグローバルに一意のIDを生成する実装

グローバル ID を生成する方法は多数あります。ここでは簡単な解決策を紹介します。MySQL の自動...

HTML でフレームセット タグを使用するチュートリアル

フレームセット ページは通常の Web ページとは多少異なります。依然として <HTML>...

Firefox で英語の文字が折り返されない問題の解決方法

テキストのレイアウトには、言語に応じていくつかの書式設定要件があります。たとえば、簡体字中国語では、...