序文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データ行と行オーバーフローのメカニズムの詳細な説明
インストール環境: CentOS7 64ビット、MySQL5.7 1. YUMソースを設定するMyS...
1. 基本コンポーネントをインストールするまず、 yumコマンドを実行して、コードpullために必要...
この記事では、動的なプログレスバー効果を実現するためのVueの具体的なコードを例として紹介します。具...
目次1. 浅いコピーとはどういう意味ですか? 2. ディープコピーとはどういう意味ですか? 3. デ...
コマンド パターンは、JavaScript デザイン パターンにおける動作デザイン パターンです。定...
この記事では、省、市、地区の3段階選択を実現するためのjsの具体的なコードを紹介します。具体的な内容...
序文Sass は CSS3 言語の拡張機能です。Sass を使用すると、より良いスタイルシートをより...
目次角度成し遂げる呼び出し順序知らせイオニックionic はページのライフサイクルをどのように処理し...
目次概要Vuex の 4 つの主要オブジェクト状態の使用突然変異の使用ゲッターの使用アクションの使用...
序文多くの MySQL テスト シナリオでは、テスト用に一部のテスト データを手動で生成する必要があ...
この記事では、ページング効果を実現するためのjquery+Ajaxの具体的なコードを参考までに紹介し...
目次1件のレビュー2 水平分割の5つの戦略2.1 ハッシュ2.2 範囲2.3. キー2.4. リスト...
インストール時間を節約するために、公式の mysql docker イメージを使用して mysql ...
Swiper は、携帯電話やタブレットなどのモバイル端末向けに設計された、純粋な JavaScri...
証明書チェーンを生成するスクリプトを使用して、ルート証明書、中間証明書、および 3 つのクライアント...