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 を使用する方法

推薦する

Json の長所と短所、使用方法の紹介

目次1. JSONとは何か1.1 配列リテラル1.2 オブジェクトリテラル1.3 混合リテラル1.4...

CSS3 で作成された背景グラデーションアニメーション効果

成果を達成する 実装コードhtml <h1 class="text-light&qu...

ウェブサイトのデザイン体験のための7つの異なるカラースキーム

ウェブサイト構築におけるカラーマッチングは非常に特殊であり、ウェブサイトのテーマ、感情、雰囲気などの...

jsはテーブルドラッグオプションを実装します

この記事の例では、テーブルドラッグオプションを実装するためのjsの具体的なコードを参考までに共有して...

Vue3 (V) HTTPライブラリaxiosの統合の詳細

目次1. axiosをインストールする2. アクシオスの使用1.ホームページでaxiosを参照する2...

固定、流動的、柔軟なウェブページレイアウトの長所と短所の分析

ウェブデザイナーを長い間悩ませてきた疑問があります。それは、固定レイアウト、流動的レイアウト、柔軟レ...

CocosCreator スケルトンアニメーション ドラゴンボーン

CocosCreator バージョン 2.3.4ドラゴンボーンアニメーションキールアニメーションを ...

Angularルーティングアニメーションと高度なアニメーション機能の詳細な説明

目次1. ルーティングアニメーション2. グループクエリとスタガー1. ルーティングアニメーションル...

スタイル属性 (element.style) で定義されたインライン スタイルを削除する方法

Magento を頻繁に変更する場合、element.style に遭遇することがあります。 これは...

MySql でリモート接続を許可する方法

MySql でリモート接続を許可する方法この目標を達成するには、2つのことを行う必要がある。ユーザー...

柔軟で安定した高品質の HTML および CSS コード標準を作成するためのガイド

黄金律常に同じコーディング標準セットに従ってください。同じプロジェクトに何人の人が関わっているかに関...

メタタグのビューポートはデバイス画面のCSSを制御します

コードをコピーコードは次のとおりです。 <meta name="viewport&q...

CSS3 シンプルカットカルーセル画像実装コード

実装のアイデアまず、親コンテナーを作成し、2 つの順序なしリストを使用して、柔軟なレイアウトで親コン...

Linux プロセスが占有するポート番号を表示する 6 つの方法

Linux システム管理者にとって、サービスがポートに正しくバインドされているか、またはポートをリッ...

Windows Server 2019 のセットアップ方法 (画像とテキスト付き)

1. Windows Server 2019 のインストールVmware に Windows Se...