Vue で SVG アイコンを導入する方法 Vue で svg アイコンを導入する方法 1インストール yarn に svg-sprite-loader --dev を追加します svg コンポーネント インデックス.vue <!-- svg コンポーネント --> <テンプレート> <svg class="svg-icon" :class="svgClass" aria-hidden="true"> <:xlink:href="アイコン名" /> を使用します </svg> </テンプレート> <スクリプト> エクスポートデフォルト{ 名前: 'SvgIcon', 小道具: { // svg名 svgName: { タイプ: 文字列、 必須: true } }, 計算: { アイコン名() { `#icon-${this.svgName}` を返します }, svgクラス() { if (this.svgName) { 'svg-icon' + this.svgName を返します } それ以外 { 'svg-icon' を返す } } } } </スクリプト> <style lang="less" スコープ> .svgアイコン{ 幅: 100ピクセル; 高さ: 100px; 垂直位置合わせ: -0.15em; 塗りつぶし: 現在の色; オーバーフロー: 非表示; } </スタイル> グローバルに登録する インデックス 'vue' から Vue をインポートします '@/components/SvgIcon' から SvgIcon をインポートします。 // グローバルに登録する Vue.component('svg-icon', SvgIcon) const requireAll = requireContext => requireContext.keys().map(requireContext) const req = require.context('./svg', false, /\.svg$/) すべて必須(必須) 設定ファイル モジュール.エクスポート = { チェーンWebpack: config => { 構成モジュール .rule('svg') .exclude.add('src/assets/icons' を解決します) 。終わり() 構成モジュール .rule('アイコン') .test(/\.svg$/) .include.add('src/assets/icons' を解決します) 。終わり() .use('svg-sprite-loader') .loader('svg-sprite-loader') .オプション({ シンボルID: 'icon-[名前]' }) 。終わり() } } ページで使用されている <!-- svg-name は svg 名です --> <svg-icon svg-name="ic_home_news" /> Vue で svg アイコンを導入する方法 2npm で svg-sprite-loader をインストールします --save-dev vue.config.jsに次のコードを追加します。 定数パス = require('path'); 関数resolve(dir) { // __dirname プロジェクト ルート ディレクトリの絶対パス return path.join(__dirname, dir); } モジュール.エクスポート = { チェーンWebpack: config => { svgRule は config.module.rule('svg') に追加されます。 // 既存のローダーをすべてクリアする // これを行わないと、後続のローダーはこのルールの既存のローダーの後に追加されます svgRule.uses.clear(); svgルール .test(/\.svg$/) .include.add(path.resolve(__dirname, './src/icons/svg')) 。終わり() .use('svg-sprite-loader') .loader('svg-sprite-loader') .オプション({ シンボルID: 'icon-[名前]' }); config.module.rule の 'file' を設定します。 ファイルルールはクリア() を使用します。 ファイルルール .test(/\.svg$/) .exclude.add(path.resolve(__dirname, './src/icons/svg')) 。終わり() .use('ファイルローダー') .loader('ファイルローダー'); }, } 次のファイルディレクトリを作成します SvgIcon.vue コード <テンプレート> <svg :class="svgClass" xmlns="http://www.w3.org/2000/svg"> <use :xlink:href="iconName" xmlns:xlink="http://www.w3.org/1999/xlink" /> </svg> </テンプレート> <スクリプト> エクスポートデフォルト{ 名前: 'SvgIcon', 小道具: { アイコンクラス: { タイプ: 文字列、 必須: true }, クラス名: { タイプ: 文字列、 デフォルト: '' } }, 計算: { アイコン名() { `#icon-${this.iconClass}` を返します。 }, svgクラス() { if (this.className) { 'svg-icon ' + this.className を返します。 } それ以外 { 'svg-icon' を返します。 } } } }; </スクリプト> <スタイルスコープ> .svgアイコン{ 幅: 1em; 高さ: 1em; 垂直位置合わせ: -0.15em; 塗りつぶし: 現在の色; オーバーフロー: 非表示; } </スタイル> SVGアイコンを配置するSVGフォルダ index.js コード 'vue' から Vue をインポートします。 import SvgIcon from '@/components/SvgIcon'; // svg コンポーネント // グローバルに登録 Vue.component('svg-icon', SvgIcon); const req = require.context('./svg', false, /\.svg$/); const requireAll = requireContext => requireContext.keys().map(requireContext); すべて要求します(req); 最後にmain.jsで導入します './icons' をインポートします。 ページでSVGを使用する
<svg-icon icon-class="features_ic_risk@1x" class-name="icon"></svg-icon> 要約するこれで、Vue で svg アイコンを導入する 2 つの方法についての記事は終了です。Vue で svg アイコンを導入することに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: vue+element テーブルで動的な列フィルタリングを実装するためのサンプルコード
>>: Vue で HTML 5 ドラッグ アンド ドロップ API を使用する方法
Docker の設計では、コンテナは 1 つのアプリケーションのみを実行します。しかし、現在のアプリ...
1. ネストされたルーティングはサブルーティングとも呼ばれます。実際のアプリケーションでは、通常、ネ...
この記事で説明する等高レイアウトでは、純粋な CSS を使用して、要素の高さを手動で設定することなく...
以下のように表示されます。リモート サーバーのファイルをローカルにコピーします。 scp -r -P...
透明を含む5つの肌の色を変更するには50行のコードが必要です最初にコードをお渡ししますので、ご自身で...
目次1. 効果図(複数列) 2. 通常セレクター: mode = selector、複数列セレクター...
この記事では、jQueryブリージングカルーセル制作原理の具体的なプロセスを参考までに紹介します。具...
リバースプロキシリバースプロキシとは、プロキシサーバーを介してユーザーのアクセス要求を受信し、ユーザ...
この方法は2021年2月7日に編集されました。私が使用しているバージョンは8.0.23です。事件の原...
目次1. インストールとインポート2. 手ぶれ補正機能を定義する3. チャートコードを描くinit ...
目次序文1. イベントとクリップボードを貼り付ける2. クリップボード内のコンテンツ形式3. HTM...
Mavenパッケージを解凍する tar xf apache-maven-3.5.4-bin.tar....
目次負荷分散負荷分散分類1. DNS 負荷分散2. IP負荷分散3. リンク層の負荷分散4. ハイブ...
目次序文シナリオ分析要約する序文数日前、友人がWeChatで私に連絡してきて、マシンがダウンタイムか...
Anaconda は、大規模なデータ処理、予測分析、科学計算のための最も人気のある Python デ...