vue :class和:style

该代码示例展示了如何在Vue.js中使用数据绑定动态地切换元素的CSS类和内联样式。通过`:class`和`:style`指令,结合三元表达式,可以根据组件的状态改变元素的外观,例如,当isActive和isError为真时,应用active和error类,以及切换文字颜色和背景色。

1)代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			.base {
				font-weight: bold;
			}

			.active {
				color: red;
			}

			.error {
				background-color: blue;
			}
		</style>
		<script type="text/javascript" src="vue.min.js"></script>
	</head>
	<body>
		<div id="vm">
			<!-- 属性切换class -->
			<div class="base" :class="{'active':isActive}">属性切换class</div>
			<div class="base" :class="[{'active':isActive},{'error':isError}]">属性切换class</div>
			<!-- 使用三元表达式切换class -->
			<div class="base" :class="isActive?'active':''">三元表达式切换class</div>
			<div class="base" :class="[isActive?'active':'',isError?'error':'']">三元表达式切换class</div>
			<!-- 三元表达式切换style -->
			<div :style="{color:(isActive?'red':'blue')}">三元表达式切换style</div>
			<div :style="[{color:(isActive?'red':'')},{background:(isError?'blue':'')}]">三元表达式切换style</div>
		</div>
	</body>
	<script type="text/javascript">
		var vm = new Vue({
			el: '#vm',
			data: {
				isActive: true,
				isError: true
			},
			methods: {}
		});
	</script>
</html>

2)效果

 

### Vue 中根据条件动态切换 class 属性的方法 在 Vue 中,可以通过 `v-bind:class` 或其简写 `:class` 来实现动态切换元素的 `class` 属性。Vue 提供了多种语法来满足不同的需求,包括对象语法、数组语法字符串语法。 #### 1. 对象语法 对象语法允许通过键值对的形式动态地控制类名的添加或移除。键是类名,值是一个布尔表达式,当值为 `true` 时,对应的类名会被添加到元素上[^2]。 ```html <div :class="{'active': isActive, 'disabled': isDisabled}"> </div> ``` 在上述代码中,`active` `disabled` 是两个类名,`isActive` `isDisabled` 是 Vue 实例中的数据属性。如果 `isActive` 的值为 `true`,则 `active` 类会被添加;如果 `isDisabled` 的值为 `true`,则 `disabled` 类会被添加。 #### 2. 数组语法 数组语法允许将多个类名组合在一起,形成最终的类名列表。可以包含静态类名动态类名[^3]。 ```html <div :class="[activeMenu == -1 ? activeMenuStyle : '', activeMenuItem]"> </div> ``` 在上述代码中,`activeMenuStyle` `activeMenuItem` 是 Vue 实例中的数据属性。如果 `activeMenu` 的值为 `-1`,则 `activeMenuStyle` 类会被添加;否则为空字符串。无论条件如何,`activeMenuItem` 类始终会被添加。 #### 3. 字符串语法 字符串语法是最简单的形式,直接将类名作为字符串传递给 `v-bind:class`[^1]。 ```html <div :class="currentClass"> </div> ``` 在上述代码中,`currentClass` 是 Vue 实例中的数据属性,其值为一个字符串,表示需要应用的类名。 #### 示例代码 以下是一个完整的示例,展示如何根据条件动态切换 `class` 属性: ```html <div id="app"> <div :class="{'active': isActive, 'disabled': isDisabled}"> 动态切换类名 </div> <button @click="toggleActive">切换 active</button> <button @click="toggleDisabled">切换 disabled</button> </div> <script> var app = new Vue({ el: '#app', data: { isActive: true, isDisabled: false }, methods: { toggleActive() { this.isActive = !this.isActive; }, toggleDisabled() { this.isDisabled = !this.isDisabled; } } }); </script> <style> .active { color: green; } .disabled { color: red; } </style> ``` 在上述代码中,点击按钮会触发方法 `toggleActive` `toggleDisabled`,分别改变 `isActive` `isDisabled` 的值,从而动态切换类名。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值