Vue で SVG アイコンを導入する 2 つの方法

Vue で SVG アイコンを導入する 2 つの方法

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 アイコンを導入する方法 2

npm で 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を使用する

icon-classはSVGアイコン名、class-nameはカスタマイズしたいクラス名です

<svg-icon icon-class="features_ic_risk@1x" class-name="icon"></svg-icon>

要約する

これで、Vue で svg アイコンを導入する 2 つの方法についての記事は終了です。Vue で svg アイコンを導入することに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue で SVG アイコン コンポーネントを書く方法
  • VueプロジェクトでSVGアイコンを使用する方法を教えます

<<:  vue+element テーブルで動的な列フィルタリングを実装するためのサンプルコード

>>:  Vue で HTML 5 ドラッグ アンド ドロップ API を使用する方法

推薦する

Vue フィルター、ライフサイクル関数、vue-resource の簡単な紹介

1. フィルター例: <!DOCTYPE html> <html lang=&qu...

Vueコンポーネントの再利用と拡張の詳細な説明

目次概要延長は必要ですか?スロットJavaScript ユーティリティ関数拡張コンポーネントの複数の...

フォームにファイルをアップロードした後にアクションを保存するよう促す理由と解決策

jsonデータはhtml形式で返される必要がありますつまり、 response.setContent...

DOM操作テーブルの例(DOMはテーブルを作成します)

1. HTML タグを使用してテーブルを作成します。コードをコピーコードは次のとおりです。 <...

Linux でコマンドまたはプロセスの実行時間を調べる方法

Unix ライクなシステムでは、コマンドまたはプロセスの実行がいつ開始されたか、またプロセスがどのく...

Nginxはctxを使用してデータ共有とコンテキスト変更機能を実現します。

環境: init_worker_by_lua、set_by_lua、rewrite_by_lua、a...

mysqlのkey_lenの計算方法についての簡単な説明

MySQL の explain コマンドは SQL のパフォーマンスを分析できます。その 1 つが ...

Linux システム修復モード (シングル ユーザー モード)

目次序文1. シングルユーザーモードでの一般的なバグ修正2. シングルユーザーモードでシステムパスワ...

MySQL データベースの集計クエリと結合クエリ操作

目次1. クエリ結果を挿入する2. 集計クエリ2.1 はじめに2.2 集計関数2.3 group b...

Vue グローバル フィルターの概念、注意事項、基本的な使用方法

目次1. フィルターの概念1. グローバルフィルターのフォーマットをカスタマイズする2. フィルター...

CocosCreator ScrollView 最適化シリーズ: フレーム読み込み

目次1. はじめに2. 行き詰まった問題の分析3. 解決策(理論) 4. ソリューション(コード) ...

js、css、htmlはブラウザのさまざまなバージョンを決定します

正規表現を使用してIEブラウザのバージョンを判別するIEブラウザかどうか確認するif (docume...

Nginx をベースに特定の IP への短期アクセス数を制限する

特定の期間内に特定の IP へのアクセス回数を制限する方法は、特に悪意のある DDOS 攻撃に直面し...

Windows 64 ビット版の MySQL 8.0.15 インストール チュートリアル

まず公式サイトにアクセスしてダウンロードし、MySQLダウンロードをクリックします。 ダウンロードし...

Mysql の主キー インデックスと非主キー インデックスの違いについて簡単に説明します。

目次インデックスとは何か主キーインデックスと通常のインデックスの違いインデックスにはどのデータ構造が...