序文element-ui コンポーネントのデフォルト スタイルを変更することは、常に長年の話題でした。社内のプロジェクト全体を完了した後、element-ui のデフォルト スタイルを変更する次の 4 つの方法をまとめました。 1. グローバル統合オーバーライドを使用する固定スタイルを持つ一般的なコンポーネントの一部については、新しい CSS または SCSS ファイルを作成して要素の元のクラスを上書きすることで、グローバルに処理できます。 src/styles ディレクトリに新しい element-ui-reset.scss を作成し、UI のニーズに応じて元のクラス名を変更できます。 SCSSを使用する利点は、変数を使用してUIのさまざまな変更に対処できることです。 たとえば、よく使用するボタン、ページング、チェックボックスなどのコンポーネントは、UI 内で基本的に同じデザインになっているため、これらのスタイルを均一に変更できます。 要素 ui リセット.scss $危険ボタンの色: #F25454; $プライマリボタンの色:#3d66e4; $成功ボタンの色:#12A763; //デフォルトのボタンの色を変更します。el-button--primary{ 背景色: $primary-btn-color; 境界線の半径: 4px; //境界線: 1px 実線 $primary-btn-color; フォントサイズ: 16px; 境界線: 0; } //危険ボタンの色を変更します。el-button--danger{ 背景色: $danger-btn-color; 境界線の半径: 4px; //境界線: 1px 実線 $danger-btn-color; フォントサイズ: 16px; 境界線: 0; } //成功ボタンの色を変更します。el-button--success{ 背景色: $success-btn-color; 境界線の半径: 4px; //境界線: 1px 実線 $success-btn-color; フォントサイズ: 16px; 境界線: 0; } //デフォルトのボタンの色を変更します。el-button--default{ フォントサイズ: 16px; 境界線の半径: 4px; } //成功ボタンの色を変更します。el-button--warning{ //背景色: $success-btn-color; 境界線の半径: 4px; //境界線: 1px 実線 $success-btn-color; フォントサイズ: 16px; 境界線: 0; } //ページングを変更する color.el-pagination{ 位置: 絶対; 表示: インラインブロック; マージン: 0 自動; 残り:50%; 変換: translateX(-50%); 背景色: #fafafa; 境界線: 実線 1px #dfe8eb; パディング: 0 !重要; .el-pager{ マージン: 0 !重要; 。番号{ 色: #3d66e4 !重要; 左境界線: 1px 実線 #dfe8eb; 右境界線: 1px 実線 #dfe8eb; 背景色: #fafafa !重要; &。アクティブ{ 色: #fff !重要; //境界線: 1px 実線 #3d66e4; 背景色: #3d66e4 !重要; 境界線: 1px 実線 #3d66e4 !重要; } } } } .el-pagination.is-background .btn-next、.el-pagination.is-background .btn-prev、.el-pagination.is-background .el-pager li{ マージン: 0 !重要; 背景色: #fafafa !重要; } //チェックボックスを変更する .el-チェックボックス__inner{ 境界線: 1px 実線 #C0C0C0 ; 幅: 16px; 高さ: 16px; 境界線の半径: 0; } 次にmain.jsにインポートします。 './src/styles/element-ui-reset.scss' をインポートします それで アドバンテージ
欠点
2. .vueファイルを変更するこの方法は、vueファイルにスタイルタグを追加することです 特定のコンポーネントスタイルを変更するために使用されますが、グローバルには適用されません。 たとえば、.vue ファイルには特別にカスタマイズされたテーブル コンポーネントが必要ですが、他のファイルでは元のスタイルを使用する必要があります。 このように、これに対処する最善の方法は、.vueファイルにスタイルタグを追加することです。 ここでテーブルのデフォルトスタイルを変更します <テンプレート> <div class="my-class"> <el-テーブル> </el-table> </div> </テンプレート> <スクリプト> </スクリプト> <style scoped="scoped" lang="scss"> </スタイル> <スタイル> /* element-ui のテーブル コンポーネントのスタイルを変更します*/ .my-class__expand-column .cell { 表示: なし; } .my-class .el-table tbody tr:hover>td { カーソル: ポインタ; } .my-class .el-form .el-form-item .el-input__inner:focus{ 境界線: 1px 実線 #3D66E4; } </スタイル> ただし、唯一のスコープ、つまり上記の my-class のような最も外側のクラス名を追加する必要があることに注意してください。 現在のテーブルの変更されたスタイルを、このクラスとその子要素にのみ適用するように制限します。 それ以外の場合、テーブルスタイルはグローバルに上書きされます もちろん、必要に応じて、クラスを id に置き換えることもできます。これにより、クラス名が競合しなくなります。 <テンプレート> <div id="私のクラス"> <el-テーブル> </el-table> </div> </テンプレート> <スタイル> /* element-ui のテーブル コンポーネントのスタイルを変更します*/ #my-class__expand-column.cell { 表示: なし; } #my-class .el-table tbody tr:hover>td { カーソル: ポインタ; } #my-class .el-form .el-form-item .el-input__inner:focus{ 境界線: 1px 実線 #3D66E4; } </スタイル> このアプローチの利点は、特定のクラスを動的にバインドできることです。 <テンプレート> <div id="私のクラス"> <el-table :class="my-table"> </el-table> </div> </テンプレート> <スタイル> /* element-ui のテーブル コンポーネントのスタイルを変更します*/ #my-class__expand-column.cell { 表示: なし; } #my-class .el-table tbody tr:hover>td { カーソル: ポインタ; } #my-class .el-form .el-form-item .el-input__inner:focus{ 境界線: 1px 実線 #3D66E4; } #私のクラス.私のテーブル{ } </スタイル> アドバンテージ
欠点
3. コンポーネントのスタイルを変更するこの方法はあまりお勧めしません。冗長であることに加え、動作することを保証できません (element-ui ソース コードのサポートに依存します)。 ただし、めったに使用されないが、プロパティを動的にバインドする必要があるコンポーネントの場合は、これを使用できます。 たとえば、この<el-backtop>コンポーネントには、いくつかの動的なスタイル属性をバインドする必要があるかもしれません。 スタイルをバインドすることができます <el-backtop target="" :bottom="100" > <div:スタイル="{ 高さ: 100%; 幅: _width; 背景色: #f2f5f6; ボックスの影: 0 0 6px rgba(0,0,0, .12); テキスト配置: 中央; 行の高さ: 40px; 色: #1989fa; 境界線の半径: 50%; }"> <i class="el-icon-caret-top"></i> </div> </el-backtop> データ() { 戻る { _幅: 50% } } アドバンテージ
欠点
4. element-uiの公式ドキュメントのAPIを参照する一部のコンポーネントの公式サイトでは、スタイルを変更するためのAPIを提供しています。 APIに従ってコンポーネントのスタイルを指定できます アドバンテージ
欠点
疑い新しいスタイル タグを追加する理由は何ですか? 実際の使用では、スコープ属性で記述されたクラスの一部は、element-uiコンポーネントでは効果がないことがわかりました。 その結果、変更されたスタイルの一部は使用可能で、一部は使用できなくなったため、スタイルタグを単純に書き換えました。 !important 属性を使用しないのはなぜですか? この男は横暴すぎる、グローバルな変更よりも強制的だ。それに、書くのも大変です。 ::v-deep penetrationを使わない理由 まず、書き方が気持ち悪いだけでなく、カップリングが高すぎる スタイルの上書きが必要ない場合は、新しいスタイルタグを削除するだけで済みます。 ::v-deep を使用する場合、それを 1 行ずつ変更することに誰が耐えられるでしょうか? 要約する上記の方法は公式のものではなく、私が日々の開発で陥った落とし穴を踏んでまとめた方法です。 完璧ではありませんが、私の問題は大部分解決しました。 これで、vue の element-ui コンポーネントのデフォルト CSS スタイルの変更に関するこの記事は終了です。vue element-ui コンポーネントのデフォルト CSS スタイルの変更に関する関連コンテンツの詳細については、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQLデータ行と行オーバーフローのメカニズムの詳細な説明
目次Vueルーティング相対パスジャンプ1. 属性の追加2.router.resolveメソッドVue...
この記事では、MySQL 5.7.18インストーラーの詳細なインストールチュートリアルを参考までに記...
成果を達成するまずHTMLを使って基本的なフレームワークを構築します <本文> <...
問題の説明body内でfilter属性を使用すると、 fixed要素の位置が不正確になります。つまり...
原因docker スクリプトを実行すると、コンテナを作成できないというエラーが発生します。以下のよう...
この記事では、参考のために、WeChatアプレットのチャットルームを実装するための具体的なコードを例...
この記事では、マウスをスライドすると愛が広がる js 特殊効果を紹介します。効果は次のとおりです。 ...
ケース1 vue-cliはvue3プロジェクトをビルドし、プロジェクトをLinuxサーバーにアップロ...
フォームのフロントエンド レイアウトでは、テキスト ボックスのプロンプト テキストを両端に揃える必要...
js では、ログインまたは登録を確認する前に、ユーザーが特定の契約書を読むように設定します (使用...
1. 原因公式の cerbot は面倒すぎます。野生の成長よりもさらに悪い acme.sh の使用は...
目次ミニプログラム開発者ツールのソースコードを表示する方法ミニプログラムアーキテクチャ設計1. ミニ...
背景nginx-kafka-module は、Kafka を nginx に統合して、Web プロジ...
JavaScript ではオブジェクトを走査する順序は固定されていないと聞いたことがある人もいるかも...
Windows で Nginx を使用するには、Nginx サービスの起動、停止、Nginx のリロ...