Vue でクラスとスタイルを使用して v-bind バインディングを使用するいくつかの方法

Vue でクラスとスタイルを使用して v-bind バインディングを使用するいくつかの方法

要素にクラスを追加/削除することは、プロジェクト開発では非常に一般的な動作です。たとえば、Web サイトのナビゲーションでは、選択されたスタイルと選択されていないスタイルを区別するために、選択された項目にアクティブ クラスを追加します。ナビゲーションに加えて、この方法は選択と選択解除を処理するために他の多くの場所でも使用されます。

クラスの設定に加えて、プロジェクトでは要素のインライン スタイルを設定することがよくあります。jQuery の時代では、ほとんどの人がクラスの追加/削除を処理するために addClass と removeClass を組み合わせて使用​​し、要素のインライン スタイルを設定/取得するために css() メソッドを使用していました。

では、Vue ではこのような効果をどのように処理するのでしょうか? Vue では、v-bind ディレクティブを使用してクラスとスタイルをバインドできます。次に、それらをバインドするために Vue が提供するメソッドを確認しましょう。

オブジェクト構文バインディングクラス

タブ ページの切り替えは、最も一般的なエフェクトの 1 つです。選択したタイトルを強調表示するにはどうすればよいでしょうか? 一般的な方法は、クラスを動的に切り替えることです。

<div id="アプリ">
    <div class="ボタングループ">
      <ボタン
        v-for="(タブ、インデックス) タブ内" 
        v-bind:key="インデックス" 
        v-bind:class="{active: currentTab === tab}" 
        v-on:click="currentTab = タブ"
      >{{タブ}}</ボタン>
    </div>
    <コンポーネント v-bind:is="currentTabComponent"></コンポーネント>
</div>
<スクリプト>
Vue.component("タブ1", {
    "template": "<p>これはタブ 1 です</p>"
});
Vue.component("tab2", {
  "template": "<p>これはタブ 2 です</p>"
});
Vue.component("tab3", {
  "template": "<p>これはタブ 3 です</p>"
});
var vm = 新しい Vue({
  el: "#app",
  データ: {
    現在のタブ: "タブ1",
    タブ: ["tab1", "tab2", "tab3"]
  },
  計算: {
    現在のタブコンポーネント() {
      this.currentTab を返します。
    }
  }
});
</スクリプト>

この例から、アクティブ クラスが存在するかどうかは、次の式が true か false かによって決まることがわかります。 true の場合は、アクティブ クラスが要素に追加され、そうでない場合は追加されません。

1 つのクラスを追加するだけでなく、複数のクラスを同時に追加することもでき、元のクラスと共存させることができます。

<ボタン 
    クラス="btn"
    v-bind:class="{'btn-primary': isPrimary、アクティブ: isActive}"
</ボタン>
<スクリプト>
    var vm = 新しい Vue({
      el: "#app",
      データ: {
        isPrimary: true、
        アクティブ: true  
      }
    });
</スクリプト>

レンダリング結果は次のとおりです。

<button class="btn btn-primary アクティブ"></button>

データオブジェクトを直接バインドすることもできます

<button class="btn" v-bind:class="activePrimary"></button>
<スクリプト>
    var vm = 新しい Vue({
      el: "#app",
      データ: {
        アクティブプライマリ: {
          'btn-primary': true、 
          アクティブ: 真
        }
      }
    });
</スクリプト>

レンダリング結果は上記と同じ

<button class="btn btn-primary アクティブ"></button>

さらに、計算プロパティを使用して要素のクラスをバインドすることもできます。

<button v-bind:class="activeClass"></button>
<スクリプト>
    var vm = 新しい Vue({
      el: "#app",
      データ: {
        アクティブ: true
      },
      計算: {
        アクティブクラス() {
          戻る {
            アクティブ: this.isActive
          }
        }
      }
    });
</スクリプト>

配列構文バインディングクラス

Vue は、配列を使用して要素にクラスを追加することもサポートしています。オブジェクトにクラスを追加する上記の例を変更してみましょう。

<button class="btn" v-bind:class="[primary, active]"></button>
<スクリプト>
    var vm = 新しい Vue({
      el: "#app",
      データ: {
        プライマリ: 'btn-primary',
        アクティブ: 'btn-active'  
      }
    });
</スクリプト>

上記の方法では、固定されたものをバインドします。クラスを動的に切り替える必要がある場合はどうすればよいでしょうか? 三項式を使用することも、配列を含むオブジェクト構文を使用することもできます。

//三項式 <button v-bind:class="[isActive ? active : '', primary]"></button>
<スクリプト>
    var vm = 新しい Vue({
      el: "#app",
      データ: {
        isActive: 真、
        プライマリ: 'btn-primary',
        アクティブ: 'btn-active'  
      }
    });
</スクリプト>
 
//配列内でオブジェクト構文を使用する <button v-bind:class="[{active: isActive}, primary]"></button>
<スクリプト>
    var vm = 新しい Vue({
      el: "#app",
      データ: {
        isActive: 真、
        プライマリ: 'btn-primary'
      }
    });
</スクリプト>

オブジェクト構文バインディングスタイル

インライン スタイルをバインドするときのオブジェクト構文は CSS に非常に似ていますが、実際には Javascript オブジェクトです。キャメルケースまたはハイフンで区切られた名前を使用できます。

<div v-bind:style="{color: colorStyle, backgroundColor: background}">
オブジェクト構文
<スクリプト>
    var vm = 新しい Vue({
      el: "#app",
      データ: {
        カラースタイル: '赤'、
        背景: '青'
      }
    });
</スクリプト>

クラスと同様に、データ オブジェクトを使用してバインドすることもできます。

<div v-bind:style="style">オブジェクト構文</div>
<スクリプト>
    var vm = 新しい Vue({
      el: "#app",
      データ: {
        スタイル: {
          色: '赤'、
          背景色: '青'
        }
      }
    });
</スクリプト>

配列構文バインディングスタイル

Vue では、複数のスタイル オブジェクトを同じオブジェクトに同時にバインドできます。

<div v-bind:style="[style, fontStyle]">オブジェクト構文</div>
<スクリプト>
    var vm = 新しい Vue({
      el: "#app",
      データ: {
        スタイル: {
          色: '赤'、
          背景色: '青'
        },
        フォントスタイル: {
          フォントサイズ: '18px'
        }
      }
    });
</スクリプト>

これで、Vue でクラスとスタイルを使用して v-bind バインディングを使用するいくつかの方法について説明したこの記事は終了です。Vue v-bind バインディングの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援してください。

以下もご興味があるかもしれません:
  • Vue の v-model と v-bind バインディング データの類似点と相違点の詳細な説明
  • Vue の動的属性データバインディング (v-bind 命令) を 1 つの記事で理解する
  • Vue の v-for と v-bind を使用してリストの色を切り替える
  • Vue の v-bind:style 効果のカスタム命令の詳細な説明
  • Vue v-bind 動的バインディングクラスインスタンスメソッド
  • Vue ディレクティブ フォーム コントロール バインディング v-model v-model と v-bind の組み合わせ
  • Vue の基本: v-bind 属性、クラス、スタイルの使用状況分析
  • Vue.js における v-bind v-model の使用と違いの簡単な分析
  • Vue の一般的な命令 v-if、v-for、v-show、v-else、v-bind、v-on の詳細な説明
  • Vueでは、v-bindは三項演算子を使用してクラスインスタンスをバインドします。
  • vue で v-bind:class を使用するタブメソッド
  • vue の v-bind を理解する

<<:  Linux ハードウェア構成コマンドの例

>>:  MySQL 8.0.12 のインストールと設定のグラフィックチュートリアル

推薦する

HTML における if 判断の使用

Django Web開発の過程で、HTMLを書く際にバックエンドから同じ名前のリスト変数が渡されるが...

Linux マルチスレッドにおけるフォークとミューテックス ロック プロセスの例

目次質問: 1. 最初の試み2. 合理的な分析3. 問題解決(1) pthread_join()の使...

vue+springbootでログイン認証コードを実現

この記事では、ログイン認証コードを実装するためのvue+springbootの具体的なコードを例とし...

etcd クラスターをデプロイするための docker-compose の実装手順

目次docker-compose.ymlを書くdocker-composeを実行するビルドステータス...

Xshell を使用して VMware 上の Linux 仮想マシンに接続する (グラフィック手順)

はじめに: 最近 Hadoop プラットフォームの構築を勉強し始めたので、ローカルマシンに VMwa...

MySQLで時間を判定条件として使用する方法

背景: 開発プロセスでは、現在の月、現在の日、現在の時間、今後数日など、時間を判断条件としてデータを...

JavaScript のフラット配列をツリー構造に変換する例

目次バックグラウンドで10,000個のデータが失われた再帰法非再帰的方法要約するバックグラウンドで1...

Ubuntu で起動時に自動的に起動するシェル スクリプトを作成する (推奨)

スクリプトを書く目的は、さまざまなサービスを手動で起動しなくて済むようにすることです(怠惰のためでも...

WeChatアプレットbindtapとcatchtapの違いの詳細な説明

目次1. イベントとは何ですか? 2. イベントの使い方3. バインドタップとキャッチタップの違い4...

MySQL 外部キー制約の無効化と有効化コマンド

MySQL 外部キー制約の無効化と有効化: MySQL 外部キー制約が有効になっているかどうかは、グ...

MySQL インデックスの最適化: ページング探索の詳細な紹介

目次MySQL インデックス最適化ページングの調査ケース1ケース2 MySQL インデックス最適化ペ...

JavaScript の isPrototypeOf 関数

目次1. isPrototypeOf()例 1、オブジェクト クラス インスタンス:例 2: Hum...

HTMLの最適化によりWebページの速度が向上

明らかな HTML、隠された「公開スクリプト」 Web ページのダウンロード時間を短縮する鍵は、フ...

Dockerfile を使用して Docker でイメージを構築する方法

イメージを構築するこれまで、テストやデモンストレーションにさまざまなイメージを使用しました。多くの場...

MySQLのよくある間違い

NULL 値によると、MySQL の NULL 値は単にデータがないことを意味します。NULL 値は...