テクノロジースタックとバージョン Vite2 + Vue3 + fontAwesome5 Vue3 でアイコンを使用する方法、fontAwesome はシンプルで使いやすいのですが、必要なアイコンが見つからない場合もあります。 svg方式を使用すると、必要なものを直接ダウンロードして使用できます。種類がより充実しており、基本的にニーズを満たさないアイコンはありません。ただし、fontAwesomeほど簡単ではなく、毎回対応する画像をダウンロードする必要があります。 1. SVGを使用する使用したいSVG画像をダウンロードし、src/iconsフォルダに保存します。 b fsとsvgに依存するローダーをインストールする コマンド: コマンド: 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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: HTML の長いテキストは、タグの幅を超えると自動的に切り捨てられます。
アプリケーションシナリオバックグラウンド管理システムを例にとると、各ユーザーには異なるボタン権限があ...
1. mysqldump バックアップ方法では論理バックアップが使用されます。最大の欠点は、バック...
この記事では、パズル効果を実現するためのネイティブjsの具体的なコードを参考までに共有します。具体的...
表では、右下の境界線の色を個別に定義したり、セルの左上の境界線の色を定義したりできます。これら 2 ...
序文WeChat ミニプログラムのネイティブ UI が少し物足りないと感じることがあるので、サードパ...
1. はじめに先ほど、ウェブページの急速な発展について紹介しました。今回は、より深い内容についてお...
NULL および NOT NULL 修飾子、DEFAULT 修飾子、AUTO_INCREMENT 修...
この記事の例では、簡単なショッピングカート機能を実現するためのjsの具体的なコードを参考までに共有し...
VNC はリモート デスクトップ プロトコルです。 VNC を使用して Ubuntu 20.04 を...
最近のプロジェクトでは、Google ロボット認証を使用する必要があります。これには VPN が必要...
Web サーバーは、独立したドメイン名を持つ複数の Web サイトを構築できるほか、通信経路上のトラ...
3 つの方法を使用する簡単な例は次のとおりです。インラインスタイル: <!doctypehtm...
1. Yumのインストール yum でサブバージョンをインストール 2. 構成1. 倉庫を作る/ho...
2 列レイアウトはプロジェクトでよく使用されます。この効果を実現する方法はたくさんあります。 しかし...
1. カラーマッチング効果のプレビュー下の GIF に示すように、ボタンの背景色が徐々に薄くなると...