Vue3でアイコンを使用する2つの例

Vue3でアイコンを使用する2つの例

テクノロジースタックとバージョン Vite2 + Vue3 + fontAwesome5

Vue3 でアイコンを使用する方法、fontAwesome はシンプルで使いやすいのですが、必要なアイコンが見つからない場合もあります。 svg方式を使用すると、必要なものを直接ダウンロードして使用できます。種類がより充実しており、基本的にニーズを満たさないアイコンはありません。ただし、fontAwesomeほど簡単ではなく、毎回対応する画像をダウンロードする必要があります。

1. SVGを使用する

使用したいSVG画像をダウンロードし、src/iconsフォルダに保存します。

b fsとsvgに依存するローダーをインストールする

コマンド: npm install svg-sprite-loader

コマンド: npm install --save fs

c テンプレートファイルindex.vueを作成する

テンプレートファイルコード

<テンプレート>
    <svg :class="svgClass" v-bind = "$attrs">
        <use :xlink:href="アイコン名"></use>
    </svg>
</テンプレート>


<スクリプトの設定>

「vue」から、defineProps、computed をインポートします。

const props = defineProps({
    名前: {
      タイプ: 文字列、
      必須: true
    },
    色:
      タイプ: 文字列、
      デフォルト: ''、
    }
})

const iconName = computed(()=>`#icon-${props.name}`);
const svgClass = 計算済み(()=> {
    // console.log(props.name,'props.name');
    if (props.name) {
        `svg-icon icon-${props.name}` を返します
    }
      'svg-icon' を返す
});

</スクリプト>

<スタイル スコープ lang ="scss">
    .svg-アイコン{
        幅: 3em;
        高さ: 3em;
        塗りつぶし: 現在の色;
        境界線: 実線 2px 赤;
        垂直位置合わせ: 中央;
    }
</スタイル>>

d グローバル登録 main.js

'./components' から { svgIcon } をインポートします。
.component('svg-icon',svgアイコン)

e インポート処理関数を作成し、プラグインにsvgBuilder.jsを作成する

コード

'fs' から { readFileSync, readdirSync } をインポートします。


idPerfix = '' とします
const svgTitle = /<svg([^>+].*?)>/
const clearHeightWidth = /(幅|高さ)="([^>+].*?)"/g

const hasViewBox = /(viewBox="[^>+].*?")/g

定数クリアリターン = /(\r)|(\n)/g

関数 findSvgFile(dir) {
  定数svgRes = []
  定数 dirents = readdirSync(dir, {
    ファイルタイプ: true
  })
  for (const dirent of dirents) {
    (dirent.isDirectory())の場合{
      svgRes.push(...SvgFile を検索(dir + dirent.name + '/'))
    } それ以外 {
      const svg = readFileSync(dir + dirent.name)
        .toString()
        .replace(クリアリターン、'')
        .replace(svgTitle, ($1, $2) => {
        
          幅を0にする
          高さを0にする
          コンテンツ = $2.replace(
            クリア高さ幅、
            (s1, s2, s3) => {
              s2 === '幅'の場合{
                幅 = s3
              } そうでない場合 (s2 === '高さ') {
                高さ = s3
              }
              戻る ''
            }
          )
          if (!hasViewBox.test($2)) {
            コンテンツ += `viewBox="0 0 ${幅} ${高さ}"`
          }
          `<symbol id="${idPerfix}-${dirent.name.replace( を返します。
            '.svg',
            ''
          )}" ${content}>`
        })
        .replace('</svg>', '</symbol>')
      svgRes.push(svg)
    }
  }
  svgResを返す
}

エクスポート const svgBuilder = (path, perfix = 'icon') => {
  if (path === '') 戻り値
  idPerfix = パーフィックス
  const res = findSvgFile(パス)
  
  戻る {
    名前: 'svg-transform',
    変換インデックスHTML(html) {
      html.replace() を返す
        '<本文>',
        `
          <本文>
            <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" スタイル="位置: 絶対; 幅: 0; 高さ: 0">
              ${res.join('')}
            </svg>
        `
      )
    }
  }
}

f 設定ファイルを変更し、svgBuilderを設定ファイルにインポートします。

vite.config.js を変更する

'./src/plugins/svgBuilder' から { svgBuilder } をインポートします。'

デフォルトのdefineConfigをエクスポートする({
プラグイン: [
      vue(),
      // 対応する関数を呼び出して svg を処理する svgBuilder('./src/icons/') // 対応するフォルダー。そうでない場合は見つかりません]
})

SVGの使用

コア部分

  <svg-icon name="questionmark" />//name svgイメージを取得します

2. fontAwesomeを使用する

npmインストール依存関係

$ npm i --save @fortawesome/fontawesome
$ npm i --save @fortawesome/vue-fontawesome

$ npm i --save @fortawesome/fontawesome-free-solid
$ npm i --save @fortawesome/fontawesome-free-regular
$ npm i --save @fortawesome/fontawesome-free-brands

b mian.js グローバル登録

    // オンデマンドでインポート import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
    '@fortawesome/fontawesome-svg-core' から { ライブラリ } をインポートします。
    '@fortawesome/free-solid-svg-icons' から { faAd } をインポートします
    
    '@fortawesome/free-solid-svg-icons' から { faAddressBook } をインポートします。
    
    ライブラリを追加します(faAddressBook)
    // すべてをインポートする import { fas } from '@fortawesome/free-solid-svg-icons'
    '@fortawesome/free-brands-svg-icons' から { fab } をインポートします。
    ライブラリを追加します(fas,fab)
    
    .component('font-awesome-icon', FontAwesomeIcon)
    

c 使用

    //オンデマンドインポートの使用<font-awesome-icon icon="address-book" class="fa-spin fa-lg"/>
    //グローバルインポートの使用 <font-awesome-icon :icon="['fas','address-book']" />

3 ソース

ソースフォントAwesome https://www.jb51.net/article/228944.htm

ソース svg https://www.jb51.net/article/228948.htm

4 結論

対応するテクノロジー スタックとバージョンを決定し、手順に従えば問題は発生しません。

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

以下もご興味があるかもしれません:
  • Vue3でelement-plusを使用する方法の詳細な説明
  • Vue3 の element-plus で Icon アイコンをグローバルに使用するプロセスの詳細な説明

<<:  HTML の長いテキストは、タグの幅を超えると自動的に切り捨てられます。

>>:  グリッド共通レイアウトの実装

推薦する

MySQL でよく使用されるデータベースとテーブル シャーディング ソリューションの概要

目次1. データベースのボトルネック2. サブライブラリとサブテーブル2. 横長テーブル3. 垂直サ...

ウェブページを作成するために最もよく使用されるHTMLタグ

1. よく使われるHTMLタグの最適化HTML は Web 編集者にとって基本的なスキルであるべきで...

HTML テーブル データを Json 形式に変換するサンプル コード

<table>テーブルデータをJSON形式に変換するJavaScript関数は次のとおり...

CentOS 7 に mysql5.7 の解凍バージョンをインストールするチュートリアル

1. mysqlの圧縮パッケージを/usr/localフォルダに解凍し、名前をmysqlに変更します...

MySQLレジストリをクリアする方法

具体的な方法: 1. [ win+r ] を押して実行ウィンドウを開き、「regedit」と入力して...

IDEA の Maven プロジェクトで MySQL 8.0 に接続して使用する方法に関するチュートリアル

まず、私の基本的な開発環境を見てみましょう。オペレーティングシステム: MacOS 10.13.5 ...

モバイルプラットフォーム開発におけるメタタグの適用の詳細な説明

デスクトップ プラットフォームの Web レイアウトのメタ タグは誰もがよく知っています。これは常に...

CSS インライン スタイル、埋め込みスタイル、外部参照スタイルを使用する 3 つの方法

3 つの方法を使用する簡単な例は次のとおりです。インラインスタイル: <!doctypehtm...

Nginx における 2 つの現在の制限方法についての簡単な説明

負荷は通常、システム設計時に予測されます。システムがパブリック ネットワークに公開されている場合、悪...

IE をフリーズさせる HTML コード

任意のテキスト エディターを開き、次のコードをコピーして、たとえば SomeFilename.htm...

MySQL データベース内の varchar 型の数値のサイズを比較する方法

テストテーブルを作成する -- ---------------------------- -- ch...

ネイティブ JavaScript 継承方法とその長所と短所の詳細な説明

目次序文プロトタイプ継承アドバンテージ欠点コンストラクタの継承アドバンテージ欠点組み合わせ継承寄生的...

CSS @font-face パフォーマンス最適化の詳細な理解

この記事では主に、フォント読み込みの最適化に関する一般的な戦略を紹介します。内容の大部分は参考資料と...

フレックスとポジションの互換性の詳細な説明マイニングノート

今日は、すべてのブラウザ (主に IE 9 以上と Chrome) と互換性のある自分のホームページ...