vue.js样式绑定(详细)

导语:class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性。v-bind 在处理 class 和 style 时, 专门增强了它。表达式的结果类型除了字符串之外,还可以是对象或数组。

class 属性绑定

一、绑定数组样式

<div v-bind:class="[activeClass, textClass]">
		<span>清风无虑skr</span>
</div>

二、绑定单一样式

<div v-bind:class="{ active: isActive }">
		<span>清风无虑skr</span>
</div>

三、绑定多个样式

<div v-bind:class="{ active: isActive, 'text': istext }">
		<span>清风无虑skr</span>
</div>

四、绑定数据里的对象

<div v-bind:class="classObject">
		<span>清风无虑skr</span>
</div>

五、绑定三元表达式样式

<div v-bind:class="[errorClass ,isActive ? activeClass : '']">
		<span>清风无虑skr</span>
</div>

其实就是通过v-bind:class="{}“或v-bind:class=[]或v-bind:class=”{active:isActive,error:hasError}"方式为模板绑定class,
首先要在css中设置.active和.text,然后在Vue实例的data对象中设置isActive和istext的布尔值;也可以直接传一个对象给class,即v-bind:class="classObj,再在data对象上直接赋值

var vm=new Vue({
	el: '#app',
	data: {
	    activeClass: 'active',
	    textClass: 'text'
	}
   })
var vm2=new Vue({
	el: '#app2',
	data: {
		isActive: false,
		istext:true
		 }
	})
var vm3=new Vue({
	el: '#app3',
	data: {
		classObject: {
		active: true,
		'text': false
		 }
		}
	})

五种情况的完整代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<style>
	.active {
		width: 100px;
		height: 100px;
		color: green;
		background: red;
		text-align:center;
		line-height:100px;
	}
	.text {
		color: red;
		background: green;
		text-align:center;
		line-height:100px;
	}
	</style>
	<body>
		<!-- class 属性绑定 -->
		<!-- 绑定数组样式 -->
		<div id="app">
			<div v-bind:class="[activeClass, textClass]">
				<span>清风无虑skr</span>
				</div>
		</div>
		<!-- 绑定单一样式 -->
		<div id="app1">
		  <div v-bind:class="{ active: isActive }">
			  <span>清风无虑skr</span>
			  </div>
		</div>
		<!-- 绑定多个样式 -->
		<div id="app2">
		  <div v-bind:class="{ active: isActive, 'text': istext }">
			  <span>清风无虑skr</span>
		  </div>
		</div>
		<!-- 绑定数据里的对象 -->
		<div id="app3">
		  <div v-bind:class="classObject">
			  <span>清风无虑skr</span>
			</div>
		</div>
		<!-- 绑定三元表达式样式 -->
		<!-- 期间errorClass控制的样式一直存在,activeClass样式则是通过isActive的取值(truefalse)来实现,可知errorClass的样式将覆盖ctiveClass的样式 -->
		<div id="app4">
			<div v-bind:class="[errorClass ,isActive ? activeClass : '']">
				<span>清风无虑skr</span>
			</div>
		</div>
		<script>
		var vm=new Vue({
		  el: '#app',
		  data: {
		    activeClass: 'active',
		    textClass: 'text'
		  }
		})
		var vm1=new Vue({
		  el: '#app1',
		  data: {
		    isActive: true
		  }
		})
		var vm2=new Vue({
		  el: '#app2',
		  data: {
		    isActive: false,
			istext:true
		  }
		})
		var vm3=new Vue({
		  el: '#app3',
		  data: {
		    classObject: {
		      active: true,
		      'text': false
		    }
		  }
		})
		var vm4=new Vue({
		  el: '#app4',
		  data: {
		    isActive: true,
			activeClass: 'active',
		    errorClass: 'text'
		  }
		})
		</script>
	</body>
</html>

style(内联样式)

一、直接设置样式

<div id="app">
			<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">在你面前说不用太努力的人,都在你背后默默的拼命呢</div>
</div>

二、通过数据对象来设置样式

<div id="app1">
		  <div v-bind:style="styleObject">我们总以为,是生活欠我们一个“满意”,其实是我们欠生活一个“努力”。</div>
</div>

三、通过多个数据对象控制一个元素样式

<div id="app2">
		  <div v-bind:style="[onestyles, twostyles]">你可能看不到我努力的过程,但我一定会让你看到我努力的结果!</div>
</div>

三种情况的完整代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<!-- 直接设置样式 -->
		<div id="app">
			<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">在你面前说不用太努力的人,都在你背后默默的拼命呢</div>
		</div>
		<!-- 通过数据对象设置样式 -->
		<div id="app1">
		  <div v-bind:style="styleObject">我们总以为,是生活欠我们一个“满意”,其实是我们欠生活一个“努力”。</div>
		</div>
		<!-- 通过多个数据对象控制一个元素样式 -->
		<div id="app2">
		  <div v-bind:style="[onestyles, twostyles]">你可能看不到我努力的过程,但我一定会让你看到我努力的结果!</div>
		</div>
		<script>
		var vm=new Vue({
		  el: '#app',
		  data: {
		    activeColor: 'red',
			fontSize: 30
		  }
		})
		var vm1=new Vue({
		  el: '#app1',
		  data: {
		    styleObject: {
		      color: 'blue',
		      fontSize: '30px'
		    }
		  }
		})
		var vm2=new Vue({
		  el: '#app2',
		  data: {
		    onestyles: {
		      color: 'yellow',
		      fontSize: '50px'
		    },
			twostyles: {
			  background: 'red'
		    }
		  }
		})
		</script>
	</body>
</html>

心得:
今天学习了vue.js的样式绑定,感觉不是太难,基本情况大致分为class和style两种绑定方式,但都需要v-bind来处理,其中的绑定方式大致可以细分为上面八种,认真看下其实不难,基本就是通过绑定一些数据对象或通过数组对象来实现样式的绑定。
若有问题可以私信我,一起讨论学习。

猜你喜欢

转载自blog.csdn.net/weixin_43889532/article/details/106740105