vue动态绑定class和style,三目运算符条件判定

本文详细介绍了在Vue中如何动态地绑定class和style,包括通过对象和数组方式切换class,以及如何传递样式对象来改变元素样式。此外,还提供了多个实际应用的例子,如条件渲染按钮文本和输入框类名。

动态绑定class和style

给绑定的class/style传递一个对象,以动态切换

<div :class="{class1: isActive1, 'class2': isActive2}"
		:style="{width: size + 'px', color: colorStyle}"></div>

给绑定的class传递一个数组,以应有一个class列表

//三元运算
<div :class="[isActive1 ? class1 : '', class2]"></div>
//数组对象
<div :class=[{class1: isActive1}, class2]></div>

给绑定的style传递一个样式对象
*class也可以绑定样式对象,不过推荐使用计算属性

//一个样式对象
<div :style="styleObject1"></div>
//多个样式对象
<div :style="[styleObject1, styleObject2]"></div>

data:{
	styleObject1: {
		color:'#fff',
		width: '20px'
	},
	styleObject2: {
		color:'#000',
		width: '30px'
	}
}

其他例子

#标签内容(三目运算)

{{button? ‘取消’ :‘确定’}}

//【例子】
<el-button class="button" 
			type="primary" 
			@tap="handleClick">{{button? '取 消' : '确 定'}}
</el-button>

#类名

:class = “[className ? ‘xx’ : ‘xx’]”

//【例子】
<input :class="[className ? 'class1' : 'class2']"
		:model="inputValue"
		:placeholder="placeholder"
/>

#内联样式(多样式、两种写法、三目)

:style=“[{background: ${bgColor}, color: textColor}]”
(红色字由反引号括起)

//【例子】
<input v-model="text" 
		:placeholder="placeholder" 
		:style="[{background: `${bgColor}`, color: fontColor}]"/>
		
<input v-model="text" 
		:placeholder="placeholder" 
		 :style="{'color' : (isColor ? '#999':'#000')}" />
Vue中,使用`v-bind:style`指令结合三目运算符可以根据不同条件动态地应用样式。以下是几种常见的使用方法示例: ### 基本使用 在模板中直接使用三目运算符来决定样式的值。 ```vue <template> <div :style="{ color: isActive ? 'red' : 'blue' }"> 根据条件改变颜色 </div> </template> <script> export default { data() { return { isActive: true }; } }; </script> ``` 上述代码中,根据`isActive`的值来决定`div`元素的文字颜色,如果`isActive`为`true`,则文字颜色为红色,否则为蓝色。 ### 在数组绑定中使用 当需要绑定多个样式对象时,也可以使用三目运算符。 ```vue <template> <div :style="[isLarge ? { fontSize: '24px' } : { fontSize: '16px' }, { fontWeight: 'bold' }]"> 根据条件改变字体大小 </div> </template> <script> export default { data() { return { isLarge: false }; } }; </script> ``` 此示例中,根据`isLarge`的值来决定`div`元素的字体大小,同时始终应用`fontWeight: 'bold'`样式。 ### 在方法中使用 可以在方法里使用三目运算符,然后在模板中调用该方法。 ```vue <template> <div :style="getStyle()"> 通过方法使用三目运算符设置样式 </div> </template> <script> export default { data() { return { isHighlighted: true }; }, methods: { getStyle() { return { backgroundColor: this.isHighlighted ? 'yellow' : 'transparent' }; } } }; </script> ``` 这里定义了一个`getStyle`方法,在方法中使用三目运算符根据`isHighlighted`的值来决定`div`元素的背景颜色。 ### 在计算属性中使用 ```vue <template> <div :style="dynamicStyle"> 通过计算属性使用三目运算符设置样式 </div> </template> <script> export default { data() { return { isDisabled: false }; }, computed: { dynamicStyle() { return { opacity: this.isDisabled ? 0.5 : 1, cursor: this.isDisabled ? 'not-allowed' : 'pointer' }; } } }; </script> ``` 在计算属性`dynamicStyle`中使用三目运算符,根据`isDisabled`的值来动态设置`div`元素的透明度鼠标指针样式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值