Heim > Web-Frontend > View.js > Hauptteil

Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet

青灯夜游
Freigeben: 2022-08-10 14:06:42
nach vorne
2799 Leute haben es durchsucht

Wie bindet v-bind Klassenattribute dynamisch? Dieser Artikel vermittelt Ihnen ein detailliertes Verständnis der verschiedenen Syntaxen der V-Bind-Anweisung zum dynamischen Binden von Klassenattributen. Ich hoffe, er wird Ihnen hilfreich sein!

Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet

v-bind kann Klassenattribute dynamisch festlegen, um dynamische Stile zu implementieren. Schreibmethode:

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

<!--简化写法-->
<标签名 :class="vue实例中的数据属性名"/>
Nach dem Login kopieren

1. v-bind bindet dynamisch das Klassenattribut (Objektsyntax)

Nach der dynamischen Bindung des Klassenattributs ist der Wert der Klasse eine Variable, die dynamisch in Daten platziert werden kann Binden Sie den Stil, um die Klassen dynamisch zu wechseln. (Lernvideo-Sharing: vue-Video-Tutorial)

1. Binden Sie eine oder mehrere Klassen direkt über {}{}绑定一个或多个类

v-blid:class的属性中可以传入一个对象,对象中包括一组组键值对

:class= "{key1:value1,key2:value2...}"
Nach dem Login kopieren

类名就是对应的样式,也就是键(key);value就是对应着增加和移除该类,取值是truefalse

  • 若value值为true,则该key样式起作用

  • 若value值为false,则该key样式不起作用

<!-- 样式 -->
<style>
.color {
	color: red;
}
.background {
	background-color: pink;
}
</style>
Nach dem Login kopieren
Nach dem Login kopieren
<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>
Nach dem Login kopieren

Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet

v-bind:class 指令也可以与普通的 class 属性共存。

<div
  class="static"
  v-bind:class="{ active: isActive, &#39;text-danger&#39;: hasError }"
></div>
Nach dem Login kopieren
data: {
  isActive: true,
  hasError: true
}
Nach dem Login kopieren

Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet

isActive 或者 hasError 变化时,class 列表将相应地更新。例如,如果 hasError 的值为 false,class 列表将变为 "static active"。

data: {
  isActive: true,
  hasError: false
}
Nach dem Login kopieren

Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet

2、绑定的数据对象不必内联定义在模板里,可绑定到一个类对象classObject

<!-- 样式 -->
<style>
.color {
	color: red;
}
.background {
	background-color: pink;
}
</style>
Nach dem Login kopieren
Nach dem Login kopieren
<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>
Nach dem Login kopieren

Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet

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>
Nach dem Login kopieren

Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet

4、class中的对象比较复杂,则直接放在一个methods中,然后调用这个函数,实现动态切换

<!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>
Nach dem Login kopieren

Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet

二、v-bind动态绑定class属性(数组语法)

我们可以把一个数组传给 :class,以应用一个 class 列表;

数组语法格式为:

:class="[base1,base2]"
Nach dem Login kopieren

v-bind 动态绑定class 数组语法,就是直接给其传入一个数组,但是数组里面都是类名,数组中的类名,在页面中都会被加入到该标签上。通过数组内元素的增加或减少来实现,样式的改变。

注意:这里面的类名都需要用 &#39; &#39;

v-blid:class Ein Objekt kann Das Objekt enthält eine Reihe von Schlüssel-Wert-Paaren. Der Klassenname ist der entsprechende Stil, dh der Wert entspricht dem Hinzufügen und Entfernen der Klasse, und der Wert ist true und false

  • Wenn der Wert true ist, dann der Schlüssel Stil funktioniert

  • Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindetWenn der Wert false ist, funktioniert der Schlüsselstil nicht

<h2 class="title" :class="[&#39;active&#39;,&#39;line&#39;]">{{message}}</h2>
Nach dem Login kopieren
<!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>
Nach dem Login kopieren

Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet

v-bind:class< Der /code >-Direktive kann auch mit gewöhnlichen Klassenattributen koexistieren. <img src="https://img.php.cn/upload/image/418/532/266/166011037867187Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet" title="166011037867187Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet" alt="Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet"/><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:html;toolbar:false">&lt;div v-bind:class=&quot;[isActive ? activeClass : &amp;#39;&amp;#39;, errorClass]&quot;&gt;&lt;/div&gt;</pre><div class="contentsignin">Nach dem Login kopieren</div></div><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:html;toolbar:false">&lt;div v-bind:class=&quot;[{ active: isActive }, errorClass]&quot;&gt;&lt;/div&gt;</pre><div class="contentsignin">Nach dem Login kopieren</div></div></p><img src="https://img.php.cn/upload/image/286/934/712/166010371928412Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet" title="166010371928412Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet" alt="Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet"/><p></p> Wenn sich <code>isActive oder hasError ändert, wird die Klassenliste entsprechend aktualisiert. Wenn beispielsweise der Wert von hasError false ist, wird die Klassenliste zu „static active“.

<!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>
Nach dem Login kopieren
Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet

2. Das gebundene Datenobjekt muss nicht inline in der Vorlage definiert werden, sondern kann an ein Klassenobjekt classObject gebunden werden

rrreeerrreeeAusführliche Erklärung, wie v-bind Klassenattribute dynamisch bindetAusführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet

3. Sie können auch ein berechnetes Attribut des zurückgegebenen Objekts bindenrrreee Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet

🎜🎜4. Objekte in der Klasse Wenn es komplizierter ist, fügen Sie es direkt in eine Methode ein und rufen Sie dann diese Funktion auf, um eine dynamische Umschaltung zu erreichen
🎜🎜rrreee🎜Ausführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet🎜🎜🎜🎜2. v-bind bindet Klassenattribute dynamisch (Array-Syntax) 🎜🎜🎜🎜Wir kann ein Array übergeben Geben Sie :class an, um eine Klassenliste anzuwenden; 🎜🎜Array-Syntaxformat ist: 🎜rrreee🎜v-bind Die Syntax dynamisch gebundener Klassenarrays besteht darin, ein Array direkt zu übergeben, aber es gibt alle Ist der Klassenname. Die Klassennamen im Array werden der Beschriftung auf der Seite hinzugefügt. Der Stil wird durch Hinzufügen oder Entfernen von Elementen im Array geändert. 🎜
🎜Hinweis: Die Klassennamen hier müssen mit ' ' umschlossen werden. Wenn nicht, behandelt Vue sie als Attribut in den Daten und sucht in den Daten danach Wenn Sie ein solches Attribut in den Daten haben, wird der Fehler auftreten. Dies ist in Vue üblich. Es wird als Attribut in Daten ohne Anführungszeichen behandelt. 🎜🎜🎜Hinweis: Es ist dasselbe wie die Objektsyntax und kann gleichzeitig mit gewöhnlichen Klassen ohne Konflikt vorhanden sein rrreee🎜🎜🎜🎜Wenn Sie auch Klassen in der Liste basierend auf Bedingungen wechseln möchten, können Sie einen ternären Ausdruck verwenden: 🎜rrreee🎜Wenn Sie so schreiben, wird immer errorClass hinzugefügt, aber nur activeClass, wenn isActive wahr ist. 🎜🎜Allerdings ist es etwas umständlich, so zu schreiben, wenn es mehrere bedingte Klassen gibt. Daher kann die Objektsyntax auch in der Array-Syntax verwendet werden: 🎜rrreee🎜Beispiel: 🎜rrreee🎜🎜🎜🎜 (Lernvideo-Sharing: 🎜Web-Front-End-Entwicklung🎜, 🎜Grundlegendes Programmiervideo🎜)🎜

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie v-bind Klassenattribute dynamisch bindet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage