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 のインストールと設定のグラフィックチュートリアル

推薦する

MySQL 8.0 の統計が不正確である理由

序文Oracle であれ MySQL であれ、新バージョンで導入された新機能は、一方では製品の機能性...

ウェブサイト制作におけるオンライン広告の新しいインタラクティブ体験(グラフィックチュートリアル)

インターネット時代が成熟するにつれて、オンライン広告の発展も加速しています。圧倒的な広告収入と完璧な...

ウィンドウの中央にブロック要素の位置を設定する方法

ウィンドウの中央にブロック要素の位置を設定する方法ブロック要素をウィンドウの中央に配置する上記の方法...

CSSがページのレンダリングをブロックするかどうかについての簡単な説明

おそらく誰もが js の実行によって DOM ツリーの解析とレンダリングがブロックされることを知って...

Mac で MySQL 8.0.22 のパスワードを取得する方法

Mac 最新バージョンの MySQL 8.0.22 パスワード回復問題の説明:昨日、突然、Macで最...

Linux でスレッドを作成するための pthread_create の具体的な使用法

pthread_create関数機能紹介pthread_createはUNIX環境のスレッド作成関数...

Mac での MySql の詳細なインストールと構成

1.ダウンロードしてインストールする公式ウェブサイトからコミュニティ エディションの dmg インス...

MYSQLでリモートアクセス権限を有効にする方法

1. MySQLデータベースにログインするmysql -u ルート -pユーザーテーブルを表示する ...

Dockerはコンテナに入るためにルートを使用する

まずdockerコンテナを実行しますルートユーザーとしてコマンドを実行する sudo docker ...

さまざまなSQL結合を簡単に学ぶ

SQL JOIN 句は、テーブル間の共通フィールドに基づいて 2 つ以上のテーブルの行を結合するため...

HTML の表のフレームとルール属性の詳細な説明

テーブル タグの frame 属性と rules 属性は境界線の表示を制御できます。フレーム プロパ...

MySQL 5.7 の同時レプリケーションにおける暗黙のバグの分析

序文当社の MySQL オンライン環境のほとんどはバージョン 5.7.18 を使用しています。このバ...

elementui の el-popover スタイルの変更が有効にならない問題の解決策

element-uiを使用する場合、el-popoverというよく使われるコンポーネントがありますが...

MySQL <> および <=> 演算子の紹介

<> 演算子機能: 等しくないことを示します。注: 「!=」演算子と同じ機能を持ちますが...

Vueはシンプルなマーキー効果を実装します

この記事では、Vueの具体的なコードを共有して、シンプルなマーキー効果を実現しています。具体的な内容...