v-bind がクラス属性を動的にバインドする方法の詳細な説明

青灯夜游
リリース: 2022-08-10 14:06:42
転載
2808 人が閲覧しました

v-bind はどのようにしてクラス属性を動的にバインドしますか?この記事では、クラス属性を動的にバインドする v-bind 命令のさまざまな構文について詳しく説明します。

v-bind がクラス属性を動的にバインドする方法の詳細な説明

#v-bind は、クラス属性を動的に設定して動的スタイルを実装できます。記述方法:

<!--完整写法-->
<标签名 v-bind:class="vue实例中的数据属性名"/>

<!--简化写法-->
<标签名 :class="vue实例中的数据属性名"/>
ログイン後にコピー

1. v-bind はクラス属性を動的にバインドします (オブジェクト構文)

クラス属性を動的にバインドした後、 class 値は、スタイルを動的にバインドしてクラスを動的に切り替えるためにデータに配置できる変数です。 (学習ビデオ共有: vue ビデオ チュートリアル )

1. {}

を通じて 1 つ以上のクラスを直接バインドします。 v-blid:class は、キーと値のペアのセットを含むオブジェクトを渡すことができます

:class= "{key1:value1,key2:value2...}"
ログイン後にコピー

クラス名は対応するスタイル、つまりキーです); 値は対応しますクラスの追加と削除の場合、値は truefalse

  • 値が true の場合、その場合、キー スタイルは機能します

  • ##値の値が

    false の場合、キー スタイルは機能しません

  • <!-- 样式 -->
    <style>
    .color {
    	color: red;
    }
    .background {
    	background-color: pink;
    }
    </style>
    ログイン後にコピー
    ログイン後にコピー
    <div id="app">
      <h2 class="color">{{message}}</h2>
      <!-- 第一种:直接用style中的样式,固定写死; -->
      
      <h2 v-bind:class="color">{{message}}</h2>
      <!-- 第二种:用指令v-bind,class的属性值color为变量; -->
      <!-- vue解析,变量对应data中color属性值,则用了color的样式; -->
      
      <h2 v-bind:class="{color:isColor, background:isBackground}">{{message}}</h2>
      <!-- 第三种:用指令v-bind;后面接对象{key1:value1,key2:value2} -->
      <!-- isColor为false则color样式不起作用。 -->
      <!-- isBackground为true则background样式起作用。 -->
    
    </div>
    
    <script>
      const app = new Vue({
        el:"#app",
        data:{
          message:"你好啊",
          color:"color",
          isColor:false,
          isBackground:true
        }
      })
    </script>
    ログイン後にコピー

v-bind がクラス属性を動的にバインドする方法の詳細な説明

v-bind:class ディレクティブは、通常のクラス属性と共存することもできます。

<div
  class="static"
  v-bind:class="{ active: isActive, &#39;text-danger&#39;: hasError }"
></div>
ログイン後にコピー
data: {
  isActive: true,
  hasError: true
}
ログイン後にコピー

v-bind がクラス属性を動的にバインドする方法の詳細な説明

isActive または hasError が変更されると、それに応じてクラス リストが更新されます。たとえば、hasError の値が false である場合、クラス リストは「static active」になります。

data: {
  isActive: true,
  hasError: false
}
ログイン後にコピー

v-bind がクラス属性を動的にバインドする方法の詳細な説明

2. バインドされたデータ オブジェクトはテンプレート内でインラインで定義する必要はありませんが、クラス オブジェクト classObject## にバインドできます。
#

<!-- 样式 -->
<style>
.color {
	color: red;
}
.background {
	background-color: pink;
}
</style>
ログイン後にコピー
ログイン後にコピー
<div id="app">
  <h2 v-bind:class="classObject">{{message}}</h2>
  <!-- 如下:绑定到一个类对象classObject,对象中设置多个key:value对 -->
  <!-- color为true则color样式起作用。 -->
  <!-- background为false则background样式不起作用。 -->

</div>

<script>
  const app = new Vue({
    el:"#app",
    data:{
		message:"你好啊",
		classObject: {
			color: true,
			background: false
		}
    }
  })
</script>
ログイン後にコピー

v-bind がクラス属性を動的にバインドする方法の詳細な説明

3. 返されたオブジェクトの計算されたプロパティをバインドすることもできます

<div id="app">
  <h2 v-bind:class="classObject">{{message}}</h2>
  <!-- 如下:绑定到一个类对象classObject,对象中设置多个key:value对 -->
  <!-- color为true则color样式起作用。 -->
  <!-- background为false则background样式不起作用。 -->

</div>

<script>
  const app = new Vue({
    el:"#app",
    data:{
		message:"你好啊",
		isColor: true,
		isBackground: true
	},
	computed: {
	  classObject: function () {
		return {
		  color: this.isColor,
		  background: this.isBackground
		}
	  }
	}
  })
</script>
ログイン後にコピー

v-bind がクラス属性を動的にバインドする方法の詳細な説明

4. クラス内のオブジェクトがより複雑な場合は、それらをメソッドに直接配置し、この関数を呼び出して動的切り替えを実現します。

#

<!DOCTYPE html>
<html>
<head>

<script type="text/javascript" src="../js/vue.js"></script>
<style>
	.active{
		background-color: pink;
	}
	.line{
		color: red;
	}
</style>
</head>
<body>
<div id="app">
	<h2 :class="getClasses()">方法methods:{{message}}</h2>
	<h2 :class="classes">计算属性computed:{{message}}</h2>
	<button v-on:click="btnClick">按钮</button>
</div>
<script>
	const app = new Vue({
		el: &#39;#app&#39;,
		data: {
			message: &#39;你好啊&#39;,
			active:&#39;active&#39;,
			isAcitve:true,
			isLine:true
		},
		methods:{
			btnClick: function () {
				this.isAcitve = !this.isAcitve
			},getClasses:function () {
				return {active:this.isAcitve,line:this.isLine}
			}
		},
		computed: {
			classes: function () {
				return {active:this.isAcitve,line:this.isLine}
			}
		}
	})
</script>

</body>
</html>
ログイン後にコピー

v-bind がクラス属性を動的にバインドする方法の詳細な説明##2. v-bind はクラス属性を動的にバインドします (配列構文)

配列を :class に渡すことができます。 apply a class List;

配列構文の形式は次のとおりです: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">:class=&quot;[base1,base2]&quot;</pre><div class="contentsignin">ログイン後にコピー</div></div>v-bind クラス配列構文を動的にバインドするには配列を直接渡しますが、配列はクラス名でいっぱいです。ページ内のこのタグにクラス名が追加されます。スタイルは、配列内の要素を追加または削除することによって変更されます。

注: ここのクラス名は

' '

で囲む必要があります。ラップされていない場合、Vue はそれをデータ内の属性として扱い、データ内を検索します。データ内にそのような属性がないため、エラーが発生します。これは Vue では一般的で、引用符がないとデータの属性として扱われます

注: これはオブジェクト構文と同じであり、競合することなく通常のクラスと同時に存在できます。

<h2 class="title" :class="[&#39;active&#39;,&#39;line&#39;]">{{message}}</h2>
ログイン後にコピー

例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <script src="../js/vue.js"></script>
<style>
.active{
color: red;
}
</style>
</head>
<body>
    <div id="app">
        <h2 :class="[&#39;active&#39;,&#39;line&#39;]">{{message}}</h2>
        <h2 :class="[active,line]">{{message}}</h2>
        <h2 :class="[active,line]">{{message}}</h2>
        <h2 :class="getClasses()">方法methods:{{message}}</h2>
        <h2 :class="classes">计算属性computed:{{message}}</h2>
    </div>
    
    <script>
        const app = new Vue({
            el: &#39;#app&#39;,
            data: {
                message: &#39;你好啊&#39;,
                active:&#39;active&#39;,
                line:&#39;bbbbbbbbbb&#39;
            },
            methods:{
                getClasses: function () {
                    return [this.active,this.line]
                }
            },
            computed: {
                classes: function () {
                    return [this.active,this.line]
                }
            }
            
        })

    </script>
</body>
</html>
ログイン後にコピー
v-bind がクラス属性を動的にバインドする方法の詳細な説明

条件に基づいてリスト内のクラスを切り替えたい場合は、次のようにすることができます。三項式を使用します:

<div v-bind:class="[isActive ? activeClass : &#39;&#39;, errorClass]"></div>
ログイン後にコピー
v-bind がクラス属性を動的にバインドする方法の詳細な説明このように書くと常に errorClass が追加されますが、isActive が true の場合にのみ activeClass が追加されます。

ただし、条件クラスが複数ある場合にこのように書くのは少し面倒です。したがって、オブジェクト構文は配列構文でも使用できます:

<div v-bind:class="[{ active: isActive }, errorClass]"></div>
ログイン後にコピー

例:

<!DOCTYPE html>
<html>
<head>

<script type="text/javascript" src="../js/vue.js"></script>
<style>
	.aaa{
		padding: 10px;
	}
	.active{
		background-color: pink;
	}
	.line{
		color: red;
	}
</style>
</head>
<body>
<div id="app">
	<div :class="[&#39;aaa&#39;,&#39;active&#39;]">{{message}}</div>
    <div :class="[&#39;aaa&#39;, nba, isActive? &#39;active&#39;: &#39;&#39;]">{{message}}</div>
    <div :class="[&#39;aaa&#39;, nba, {&#39;actvie&#39;: isActive}]">{{message}}</div>
</div>
<script>
	const app = new Vue({
		el: &#39;#app&#39;,
		data() {
			return {
			  message: "Hello World",
			  nba: &#39;line&#39;,
			  isActive: false
			}
      }
	})
</script>

</body>
</html>
ログイン後にコピー

(学習ビデオ共有:

Web フロントエンド開発v-bind がクラス属性を動的にバインドする方法の詳細な説明 ,

基本的なプログラミング ビデオ

)

以上がv-bind がクラス属性を動的にバインドする方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート