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デッドロックトラブルシューティング記録

推薦する

Tomcatにデプロイされたアプリケーションがフロントエンドページにアクセスできない問題について

最近、実践的なトレーニング プロジェクトを実行する際に ssm フレームワークを使用しました。プロジ...

Docker が MySQL を作成する説明

1. MySQLイメージをダウンロードするコマンド: docker pull mysql 2. コン...

Ubuntu 18.04 Server バージョンのインストールと使用方法 (画像とテキスト)

1 システムのインストール手順OSバージョン:1804イメージのダウンロード: http://cd...

three.js を使用してクールなアシッドスタイルの 3D ページ効果を実現します

この記事では、主にReact + three.jsテクノロジースタックを使用して3Dモデルの読み込み...

Dockerコンテナを作成、起動、停止する方法

1. コンテナとは、独立して実行されるアプリケーション、またはアプリケーションのグループとその動作環...

nginx の http リクエスト処理の各段階の詳細な分析

nginx の HTTP モジュールを作成する場合、リクエスト開始時のアクセス許可の有無、コンテンツ...

nginxリバースプロキシによるセッション障害の問題の解決策

同僚から助けを求められました。バックエンド システムへのログインは成功したものの、システムには正常に...

JSオブジェクトの走査順序の詳細な説明

JavaScript ではオブジェクトを走査する順序は固定されていないと聞いたことがある人もいるかも...

MySQL 5.7.20 解凍版のインストールとルートパスワードの変更に関するチュートリアル

1. MySQL アーカイブ (解凍版) をダウンロードするURL: https://downloa...

UnityはMySQLに接続し、テーブルデータの実装コードを読み取ります

表は以下のとおりです。 Unity が読み取って呼び出すときのコード: データベース内の別のテーブル...

HTML知識ポイントの実践経験のまとめ

1. 表タグはtable、trは行、tdはセル、cellspacingはセル間の距離、cellpad...

要素 UI に基づいてクエリ コンポーネントを段階的にカプセル化する方法

目次関数基本的なクエリ関数クエリ条件の初期化ページのレンダリングクエリと表示の最適化をさらに強化プル...

Centos は chrony 時間同期サーバー プロセス図を構築します

私の環境: 3 centos7.5 1804マスター 192.168.100.140ノード1 192...

MySQLログシステムの詳細情報共有

大規模なシステムに取り組んだことがある人なら誰でも、ログの役割を過小評価してはならないことを知ってい...

JSON.stringify を使用する際に発生する循環参照の問題を解決する方法の詳細な説明

プログラマーが日常的に TypeScript/JavaScript 開発を行う場合、複雑な Java...