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

推薦する

JavaScript 履歴オブジェクトの説明

目次1. ルートナビゲーション2. 履歴状態管理API (1)ハッシュチェンジイベント(2)ポップス...

ARM64アーキテクチャでmysql5.7.22をインストールするプロセス全体

MySQLダウンロードアドレス: https://obs.cn-north-4.myhuaweicl...

テキストエリアのテキスト入力領域に改行を実装する方法

textarea 入力領域でテキストを折り返す場合は、<br/> と入力すると <...

Dockerイメージをプライベートリポジトリにアップロードする方法の例

イメージは、GitHub と同様に Docker パブリック リポジトリに直接簡単にプッシュできます...

ノードの対応するバージョンに関する簡単な説明 node-sass sass-loader

目次ノードのバージョンが一致しない、ノードをアップグレードまたはダウングレードするnvm を使用して...

MySQL で重複行を見つけて削除する方法

目次1. 重複行を見つける方法2. 重複行を削除する方法3. 複数の列で重複を見つける方法4. クエ...

HTMLページ作成に関する私の経験の簡単な要約

Word of Mouth に入社して 3 ~ 4 か月が経ちました。仕事の中で一番の収穫は、ビジュ...

MySQL で遅いファジークエリを最適化する方法

目次1. はじめに: 2. 最初のアイデアはインデックスを構築することです3. 命令P.S. Lik...

JavaScript が Jingdong のカルーセル効果を模倣

この記事では、JD.comのカルーセル効果の表示を実現するためのJavaScriptの具体的なコード...

Docker データ ストレージ ボリュームの詳細な説明

デフォルトでは、コンテナ データの読み取りと書き込みはコンテナのストレージ レイヤーで行われます。コ...

Tcl言語に基づくシンプルなネットワーク環境を構成するプロセスの分析

1. Tclスクリプトファイルcircle.tclコードコメント #シミュレーションに必要なプロパテ...

Windows 10 でカスタムドメイン名をバインドするように Hexo と GitHub を構成する方法

Hexo は Windows 10 でカスタムドメイン名を GitHub にバインドしますまずドメイ...

CSS変数を使用して、クールで素晴らしいフローティング効果を実現します。

最近、Grover の Web サイトで楽しいホバー アニメーションを見つけ、自分自身のインスピレー...

要素テーブルの行と列のドラッグを実装する例

要素 ui テーブルにはドラッグ アンド ドロップによる並べ替え機能が組み込まれておらず、サードパー...