Vueでスキンを変更するにはどうすればよいですか?
この記事では主に Vue スキンの再形成の実践例を紹介しますので、参考にしてください。
最近、会社が行ったプロジェクトで、Webサイトのスキンのリスキン、つまりテーマの切り替えのリクエストを受けました。では、テーマカラーを切り替えるにはどうすればよいでしょうか?テーマカラーを切り替えるということは、実際にはCSSを切り替えることになりますが、プロジェクトではCSSだけでなくアイコンや画像もテーマに合わせて切り替える必要があります。ということで、Vueでスキン変更を実装する過程を記録する記事を書きましたので、まずはその効果を見てみましょう。
この記事は主にCSS切り替え、アイコン切り替え、画像切り替えの3つのパートに分かれています。
CSSの切り替え
CSSの色の切り替えについては、ElementUIソリューションを検索して参照しました。大まかに言うと、4つのステップに分かれています
静的ディレクトリにtheme.cssファイルを作成し、必要なCSSを追加します。このファイル
.side-bar { background: linear-gradient(#B7A3FF, #879FFF) !important; } .side-bar .account-info { background: #8981D8 !important; }
ですべてのオプションのテーマを宣言します。各色は簡単に識別できるようにキーワードに対応しています
colors: [{ themeId: 1, familyPrimary: '#B7A3FF', familySecondary: '#879FFF', sideBarTop: '#8981D8' }, { themeId: 2, familyPrimary: '#FDC5C5', familySecondary: '#F070A0', sideBarTop: '#E7829F' }, { themeId: 3, familyPrimary: '#414D6C', familySecondary: '#2D1E3C', sideBarTop: '#423C50' }]
AJAX を介して theme.css を取得し、色の値をキーワードに置き換えます。
getFile(`/static/theme.css`) .then(({data}) => { let style = getStyleTemplate(data) }) function getStyleTemplate (data) { const colorMap = { '#B7A3FF': 'familyPrimary', '#879FFF': 'familySecondary', '#8981D8': 'sideBarTop' } Object.keys(colorMap).forEach(key => { const value = colorMap[key] data = data.replace(new RegExp(key, 'ig'), value) }) return data }
キーワードを生成されたばかりの対応する色の値に置き換え、ページにスタイルタグを追加します
getFile(`/static/theme.css`) .then(({data}) => { let style = getStyleTemplate(data) writeNewStyle(style, this.color) }) function writeNewStyle (originalStyle, colors) { let oldEl = document.getElementById('temp-style') let cssText = originalStyle Object.keys(colors).forEach(key => { cssText = cssText.replace(new RegExp(key, 'ig'), colors[key]) }) const style = document.createElement('style') style.innerText = cssText style.id = 'temp-style' oldEl ? document.head.replaceChild(style, oldEl) : document.head.appendChild(style) }
アイコン切り替え
プロジェクトが最初に開始されたとき、スキンの変更の必要性は考慮されていなかったため、すべてのアイコンは img タグを使用して参照されます。これにより、アイコンの色を動的に切り替えることができなくなります。そのため、代わりにフォント ファイル内のアイコンを使用することにしました。画像を簡単にフォントファイルに変換できるおすすめサイト「icomoon」を紹介します。アイコンはフォントを使用して使用するのにも非常に適しており、アイコンのサイズと色をより便利に変更できます。
オンライン変換を通じて、ダウンロードしたフォントファイルをプロジェクトに配置し、すべてのアイコンを宣言するための新しいCSSファイルを作成します。
<img src="../../assets/icon_edit.svg">
これで、CSS クラス名を介してアイコンを参照できるようになります。
@font-face { font-family: 'icomoon'; src: url('../assets/fonts/icomoon.eot?vpkwno'); src: url('../assets/fonts/icomoon.eot?vpkwno#iefix') format('embedded-opentype'), url('../assets/fonts/icomoon.ttf?vpkwno') format('truetype'), url('../assets/fonts/icomoon.woff?vpkwno') format('woff'), url('../assets/fonts/icomoon.svg?vpkwno#icomoon') format('svg'); font-weight: normal; font-style: normal; } [class^="icon-"], [class*=" icon-"] { /* use !important to prevent issues with browser extensions that change fonts */ font-family: 'icomoon' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; vertical-align: sub; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .icon-edit:before { content: "\e900"; }
テーマを有効にするには、アイコンのCSSをtheme.cssファイルに書き込む必要もあります
<span class="icon-edit"></span>
プロジェクトには多くのプレースホルダー画像や他の画像もあります。テーマの変更に応じて変更されます。すべての画像を紹介し、ファイル名を使用して、さまざまなテーマに対応する画像を区別します。クリックしてテーマを切り替えると、テーマに対応したファイルに切り替わり、画像を切り替えることができます。これを行うために、ミックスインを作成し、そのミックスインをコンポーネントに導入しました。
.icon_edit:before { background-image: linear-gradient(-135deg, #879FFF 0%, #B7A3FF 100%); }
placeholderMixin
<img :src="userImg || placeholderWoman">
クリックしてテーマを切り替えると、changeTheme イベントが発行され、各コンポーネントがchangeTheme イベントを受け取ると、画像の値が再割り当てされ、画像を切り替える効果が得られます。
let callback const placeholderMixin = { data () { return { placeholderWoman: '', placeHolderNoReply: '', placeHolderNothing: '' } }, created () { let themeId = localStorage.getItem('themeId') let theme = themeId2Name(themeId) this.setThemeValue(theme) callback = (theme) => { this.setThemeValue(theme) } bus.$on('changeTheme', callback) }, destroyed () { bus.$off('changeTheme', callback) }, methods: { setThemeValue (theme) { this.placeholderWoman = require(`@/assets/placeholder_woman_${theme}.svg`) this.placeHolderNoReply = require(`@/assets/icon_noreply_${theme}.svg`) this.placeHolderNothing = require(`@/assets/icon_nothing_${theme}.svg`) } } }
これでもテーマを切り替える効果が得られますが、この方法ではほぼすべてのビジネスコンポーネントにミックスインを導入する必要があります。より良い方法があれば、お気軽にご連絡ください。
上記は私があなたのためにまとめたものです。
関連記事:
ブートストラップでテーブルサポートの高さのパーセンテージを実装する方法Vue2.0でサブ兄弟コンポーネント間のデータインタラクションを実装する方法 vueでカスタムグローバルメソッドを実装する方法以上がVueでスキンを変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









HTMLテンプレートのボタンをメソッドにバインドすることにより、VUEボタンに関数を追加できます。 VUEインスタンスでメソッドを定義し、関数ロジックを書き込みます。

vue.jsでBootstrapを使用すると、5つのステップに分かれています。ブートストラップをインストールします。 main.jsにブートストラップをインポートしますブートストラップコンポーネントをテンプレートで直接使用します。オプション:カスタムスタイル。オプション:プラグインを使用します。

vue.jsでJSファイルを参照するには3つの方法があります。タグ;; mounted()ライフサイクルフックを使用した動的インポート。 Vuex State Management Libraryを介してインポートします。

Vue.jsの監視オプションにより、開発者は特定のデータの変更をリッスンできます。データが変更されたら、Watchはコールバック関数をトリガーして更新ビューまたはその他のタスクを実行します。その構成オプションには、すぐにコールバックを実行するかどうかを指定する即時と、オブジェクトまたは配列の変更を再帰的に聴くかどうかを指定するDEEPが含まれます。

VUEマルチページ開発は、VUE.JSフレームワークを使用してアプリケーションを構築する方法です。アプリケーションは別々のページに分割されます。コードメンテナンス:アプリケーションを複数のページに分割すると、コードの管理とメンテナンスが容易になります。モジュール性:各ページは、簡単に再利用および交換するための別のモジュールとして使用できます。簡単なルーティング:ページ間のナビゲーションは、単純なルーティング構成を介して管理できます。 SEOの最適化:各ページには独自のURLがあり、SEOに役立ちます。

vue.jsには、前のページに戻る4つの方法があります。$ router.go(-1)$ router.back()outes&lt; router-link to =&quot;/&quot; Component Window.history.back()、およびメソッド選択はシーンに依存します。

Vue Devtoolsを使用してブラウザのコンソールでVueタブを表示することにより、Vueバージョンを照会できます。 NPMを使用して、「NPM List -G Vue」コマンドを実行します。 package.jsonファイルの「依存関係」オブジェクトでVueアイテムを見つけます。 Vue CLIプロジェクトの場合、「Vue -Version」コマンドを実行します。 &lt; script&gt;でバージョン情報を確認してくださいVueファイルを参照するHTMLファイルにタグを付けます。

VUEの関数傍受は、指定された期間内に関数が呼び出され、パフォーマンスの問題を防ぐ回数を制限するために使用される手法です。実装方法は次のとおりです。LodashLibrary:Import {Debounce}から「Lodash」からインポート。 debounce関数を使用して、インターセプト関数を作成します。インターセプト関数を呼び出すと、制御関数は500ミリ秒でせいぜい1回呼び出されます。
