Vue で動的なスタイルを実現するためのさまざまな方法のまとめ

Vue で動的なスタイルを実現するためのさまざまな方法のまとめ

1. 三項演算子の判定

<text :style="{color:state?'#ff9933':'#ff0000'}">こんにちは世界</te​​xt>
<スクリプト>
エクスポートデフォルト{
	データ() {
		戻る {
			状態: 真
		}
	}
}
</スクリプト>

2. 動的に設定されるクラス

2.1 主な用途: ループリストをクリックすると、対応する要素が強調表示されます。(デフォルトでは最初の要素が強調表示されます)

<テンプレート>
	<div class="wrapper" v-for="(item,index) in houseList" :key="index" @click="rightTap(index)">
		<div class="houseTitle" :class="{'active' : index === rightIndex}">
			{{item.name}}
		</div>
	</div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
	データ() {
		戻る {
			右インデックス:0,
			ハウスリスト:[]
		};
	},
	方法:{
		右タップ(インデックス){ 
			this.rightIndex = インデックス
		}
	}
}
</スクリプト>
<style lang="scss" スコープ>
.ラッパー{
	幅: 118ピクセル;
	高さ: 60px;
	マージン: 6px 自動 0 自動;
	.houseタイトル{
		フォントサイズ: 22px;
		テキスト配置: 中央;
		空白: ラップなし;
		オーバーフロー: 非表示;
		テキストオーバーフロー: 省略記号;
	}
	。アクティブ{
		色:#2a7ff​​a;
		 背景色: ピンク;
	}
}
</スタイル>

2.2 主な用途: 特定の値に対応するスタイルを設定する。

  <div 
    :class="activeId === item.id?'activeStyle':'machineBar'" 
    v-for="(item,index) in List" :key="index" @click="clickEvent">    
      <p>{{アイテム名}}</p>    
  </div>

3. 方法判定

3.1 主な用途: 異なるデータ値に対応するスタイルを設定する。

<テンプレート>
  <div v-for="(item,index) in houseList" :key="index">             
     <div :style="getStyle(item.status)">{{item.name}}</div>    
  </div> 
</テンプレート>
<スクリプト>
エクスポートデフォルト{ 
  データ(){
    戻る {
	  ハウスリスト:[
        { 
          id:1,
          名前:1,
          ステータス:'a'
        },{
          id:2,
          名前:2,
          ステータス: 'b'
        },{
          id:3,
          名前:3,
          ステータス: 'c'
        }
      ]
    }
  },
  方法:{
    getStyle(e){        
      console.log('値',e)        
      e === 'a'の場合{            
        戻る {                
          幅:'60px',
          高さ:'60px',                
          背景: '黄色',                 
          マージン: '10px 自動'             
        }        
      }そうでない場合(e === 'b'){            
        戻る {                
          幅:'60px',
          高さ:'60px',                  
          背景: '赤'、                 
          マージン: '10px 自動'            
        }        
      }そうでない場合(e === 'c'){            
        戻る {                
          幅:'60px',
          高さ:'60px',                 
          背景: 'ピンク',                 
          マージン: '10px 自動'             
        }        
      }
    }
  }
}
</スクリプト>

3.2 主な用途: 複数の要素イベントで対応するスタイルを表示する。

<テンプレート>
  <div 
      class="homeWrap" :class="{'select': 選択 === 1,'click': クリック === 1}" 
      @click="handleClick(1)" @mousedown="menuOnSelect(1)">
     ホームページ   
</テンプレート>
<スクリプト>
エクスポートデフォルト{
  戻る {
      選択: 0,
      クリック数: 0
  }
  方法:{
    menuOnSelect(値){
      this.selected = 値;
    },
    ハンドルクリック(値){
      選択 = 0
      this.clicked = 値
    }
  }
 }
</スクリプト>
<style lang="stylus" スコープ>
  .homeWrap.select 
    背景赤
  .homeWrap.クリック 
    背景黄色
</スタイル>

4. 配列バインディング

<div :class="[isActive,isSort]"></div>
// 配列を三項演算子と組み合わせて必要なクラスを決定します
<div class="item" :class="[item.name? 'lg':'sm']"></div>
<div class="item" :class="[item.age<18? 'gray':'']"></div>
// <div :class="[{ active: isActive }, 'sort']"></div> と結合された配列オブジェクト

データ() {
  戻る {
    isActive:'アクティブ'、
    isSort:'ソート'
 }
}
// css
。アクティブ{
    /*ここで設定する必要がある最初のスタイルを記述します*/
  } 
。選別{
    /*ここで設定する必要がある2番目のスタイルを記述します*/
  }

5. es6オブジェクトと組み合わせた計算プロパティ名メソッド

 <div :class="classObject"></div>
 
  エクスポートデフォルト{
    データ(){
      戻る {
        アクティブ:true
      }
    },
    計算:{
      クラスオブジェクト() {
        戻る {
          class_a:this.isActive、
          class_b:!this.isActive
        // これは、独自のプロジェクトの状況に応じて変更して入力する必要があります}
      }
    }
  }
 
// css
.class_a{
    /*ここで設定する必要がある最初のスタイルを記述します*/
}
 
.class_b{
   /*ここで設定する必要がある2番目のスタイルを記述します*/
 }

上記は、Vue で動的なスタイルを実現するためのさまざまな方法の詳細な内容です。Vue で動的なスタイルを実現する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Vue でクラスとスタイルを動的にバインドするメソッドコードの詳細な説明
  • Vue.js スタイルの動的バインディング実装の概要
  • Vueは条件判断と動的バインディングスタイルのメソッドを実装します
  • Vueでスタイルを動的にバインドする方法

<<:  Linux リモート コントロール Windows システム プログラム (3 つの方法)

>>:  魔法のMySQLデッドロックトラブルシューティング記録

推薦する

クエリでのMySQLのユニークキーの使用と関連する問題

1. テーブルステートメントを作成します。 テーブル「従業員」を作成します( `emp_no` in...

サラウンドリフレクションロード効果を実現するHTML+CSS

この記事では、主に html + css を使用してサラウンド リフレクション ローディング エフェ...

JavaScript のプライベート クラス フィールドと TypeScript のプライベート修飾子の詳細な説明

目次JavaScript のプライベート クラス フィールドとプライバシーの必要性JavaScrip...

ファイルの種類を検出するJavaScriptメソッド

目次1. 画像のバイナリデータを表示する方法2. 絵の種類の見分け方3. 画像の種類を検出する方法3...

Vue2.x および Vue3.x のカスタム命令の使用方法とフック関数の原理を理解する

目次Vue2.x の使用法グローバル登録部分登録使用フック機能フック関数のパラメータVue3.x の...

各 Nginx プロセスで開くことができるファイルの最大数を設定する方法

1. システム内で開いているファイルの最大数を確認する #現在のリソース制限設定を表示する ulim...

CentOS 上の Docker に Jupyter をインストールしてポートを開く方法

目次jupyterをインストールするDocker ポートマッピングjupyterをインストールするp...

MySQL 時間統計方法の概要

データベースの統計を行う場合、多くの場合、年、月、日に基づいてデータを収集し、echart を使用し...

JavaScript はパスワードボックスの入力検証を実装します

サーバーの負荷を軽減するために、ユーザーが入力するときにフロントエンドページで簡単な検証を実行する必...

Swiper.jsプラグインを使用すると、カルーセル画像を非常に簡単に実装できます。

Swiper は、携帯電話やタブレットなどのモバイル端末向けに設計された、純粋な JavaScri...

Workbench を介して MySQL データベースにリモートでアクセスする方法の詳細な説明

序文Workbench が 1 台のコンピューターにインストールされており、別の Ubuntu サー...

React 非親子コンポーネントパラメータ渡しのサンプルコード

React は、ユーザー インターフェイスを構築するための JavaScript ライブラリです。 ...

MySQL 8.0.15 のインストールと設定方法のグラフィック チュートリアル (Windows 10 X64)

最近私が学んでいるのは MySQL の知識なので、MySQL をインストールすることが非常に重要です...

Azure Container Registry を使用してイメージを保存する際の問題

Azure Container Registry は、Docker Registry 2.0 仕様に...

JavaScript における this ポイントの問題の詳細な説明

要約する地球環境 ➡️ ウィンドウ通常関数 ➡️ ウィンドウまたは未定義コンストラクター ➡️ 構築...