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のストレージエンジンの詳細な説明

MySQL ストレージ エンジンの概要ストレージ エンジンとは何ですか? MySQL のデータは、さ...

計算機機能を実現するjsバージョン

この記事の例では、計算機機能を実装するためのjsの具体的なコードを参考までに共有しています。具体的な...

MySQL に接続されている IP アドレスを表示する方法の例

具体的な方法:まずコマンドプロンプトを開きます。次に、[ mysql -u root -p ] コマ...

React Router で履歴リダイレクトを使用する方法

react-routerでは、コンポーネント内のジャンプは<Link>で使用できます。し...

ウェブサイトのビジュアルデザインの重要なポイント

手工芸デザインからグラフィックデザイン、そしてウェブデザインまで、デザインの原則は同じままですが、私...

CSSの使用に関する深い理解 clear:both

clear:both清除浮動これは私が常に持っていた印象ですが、私はこれをめったに使用せず、私の理...

ディレクトリスクロール効果を実現するネイティブJS

これはネイティブ JS で実装されたテキスト スクロール効果です。この効果は通常、ニュース、ダイナミ...

HTML要素にフォーカスを設定する方法

コードをコピーコードは次のとおりです。 <本文<フォームアクション="&quo...

無効と読み取り専用の機能と違い

1: readonly は、このコントロールをロックして、インターフェイス上で変更できないようにしま...

CSSスプライト技術は複数の背景を1つのPNG画像に統合しますCSSポジショニング

アメリカのYAHOOがページ制作で使用している画像統合技術。これらのアイコン、列背景、画像ボタンを定...

実行中の Docker コンテナにボリュームを動的に追加する方法

以前、Docker コンテナの起動後にボリュームをマウントできるかどうか尋ねられたことがあります。m...

Windows 10 での MySQL 8.0.16 のインストールと設定のチュートリアル

この記事では、参考までにMySQL 8.0.16のインストールと設定方法のグラフィックチュートリアル...

HTML にオーディオファイルを挿入してブラウザで再生する場合の互換性の問題

HTML にオーディオ ファイルを挿入した後 (mp3 ファイルを再生した後) に発生したいくつかの...

Vue.jsフレームワークはショッピングカート機能を実装します

この記事では、ショッピングカートを実装するためのVue.jsフレームワークの具体的なコードを参考まで...

CSS3 のフィルタプロパティの使用に関する詳細な説明

最近、イントラネットポータルを修正していたときに、フィルターを使用する必要がある箇所に遭遇しました。...