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でユーザーを作成し、ユーザーに権限を付与する方法の詳細なチュートリアル

目次ユーザー管理新しいユーザーを作成するユーザー名の変更ユーザーのパスワードを設定するルートパスワー...

SQLと各種NoSQLデータベースの使用シナリオの説明

SQL はメイントランクです。なぜ私はこのように理解するのでしょうか。技術的な観点からリレーショナル...

ServerSocketのデフォルトIPバインディングの実装プロセスの詳細な説明

開発中にサーバーを起動する必要がある場合、ローカルテストではポートを直接書き込み、実際の環境ではバイ...

dockerエラーの原因分析 終了しました (1) 4分前

Dockerエラー1. 原因を確認するdocker ログ ネクサス2. エラーの原因OpenJDK ...

JavaScript キャンバスで動的な点と線の効果を実現

この記事では、動的な点と線の効果を実現するためのJavaScriptキャンバスの具体的なコードを参考...

Linux での MySQL データベースのマスター スレーブ同期レプリケーション構成

Linux での MySQL データベースのマスター/スレーブ同期構成の利点は、この方法をバックアッ...

Linux のバックグラウンドで & と nohup を使用する方法

ターミナルやコンソールで作業しているときは、メールを読むなど、もっと重要な作業があるかもしれないので...

jQuery の CSS スタイル属性 css() と width() の完全ガイド

目次1. css() の基本的な使用法: 1.1 CSSプロパティを取得する1.2 CSSプロパティ...

MySQLコマンドラインでSQLファイルを実行するいくつかの方法

目次最初の方法: MySQLデータベースが接続されていない場合2 番目の方法: データベースがすでに...

JavaScript イベントの概念の詳細な説明 (静的登録と動的登録の区別)

目次js のイベントイベントタイプ一般的なイベントイベント登録静的および動的登録の例onload 読...

JavaScript関数におけるこのポイントの問題の詳細な説明

このキーワードどのオブジェクトが関数を呼び出しますか? また、関数内の this はどのオブジェクト...

CnBlogs カスタムブログスタイルの共有

半夜かけてようやくブログのスタイルを大体完成させることができました。ブログ全体が青を基調としていて、...

win10にUbuntu18デュアルシステムをインストールするとmmx64.efiが見つからないという問題が発生する

Ubuntu 18のインストール中に、USBディスクからUbuntuのインストールを開始すると、mm...