vue动态绑定style与class
话不多说,直接上代码
一、动态绑定style
// 1、三元表达式 对象形式 <div class="name" :style="{color:state == true ? 'red' : 'black'}">麻辣香锅</div> <div class="name" :style="state == true ? 'color:red' : 'color:black'">麻辣牛锅</div> // 2、直接对象形式 <div class="name" :style="{fontSize:`${size}px`}">麻辣火锅</div> // 3、数组形式 <div class="name" :style="[styleObj1,styleObj2]">麻辣香锅</div> // 4、复合型 <div class="name" :style="[{color:state ? 'red' : 'black'},styleObj2]">麻辣香锅</div> // 4、调用方法形式 <div class="name" :style="setStyle()">麻辣鸡煲</div> export default { data(){ return{ state:1, size:14, Obj1:{ color:red }, Obj2:{ fontSize:12px } } }, method:{ setStyle(){ let obj = { color:'red', fontSize:'14px' } return obj } } } <style> .name{ color:yellow; font-size:12px; } </style>
二、动态绑定class
// 1、三元表达式,对象/数组形式,单个条件 <div class="name" :class="{'success-text':state == true}">广式煲仔饭</div> <div :class="['name', state == true ? 'success' : '']">广式煲仔饭</div> // 相当于 <div class="name" :class="state == true ? 'success-text : ''">广式煲仔饭</div> // 2、对象形式,多个条件 <div class="name" :class="{'success-text':state == true,'success-text2':state2 == true}">广式煲仔饭</div> // 3、data形式或者computed形式 (缺点就是类名一定只能是一个单词) <div class="name" :class="classObject">广式煲仔饭</div> <div class="name" :class="classObject_cp">广式煲仔饭</div> // 4、mothod方法 <div class="name" :class="setClass()">广式煲仔饭</div> <button @click="state = state ? false : true">改变state状态</button> export default { data () { return { state:true, state2:true, styleObj1:{ color:'red' }, styleObj2:{ fontSize:'14px' }, classObject:{ success_text:true, // 因为变量名不能用-来隔开,所以只能匹配到_或只有一个单词的类名 success_text2:true } } }, computed:{ classObject_cp:function(){ return{ success:this.state, success2:this.state2 } } }, methods: { setClass(){ return { success_text:this.state, success_text2:this.state2 } }, changeState(){ this.state = this.state ? false : true } } } <style> .name{ color:yellow; font-size:12px; } .error-text{ color:red; } .success-text{ color:greenyellow; } .success-text2{ font-size:16px; font-weight: 600; } .success{ color:greenyellow; } .success2{ font-size:16px; font-weight: 600; } </style>
三、说明
1.HTML上调用的所有东西,最好是该vue实例的data、method、watch、computed等本身的变量和函数,一般不要直接调用外部的函数,比如是工具类untils的方法,有需要可以在data中新建变量绑定在HTML上,在data方法或其他方式去调用。
2.js的样式属性名注意用驼峰命名法,比如font-size —— fontSize
3.class动态绑定与静态可同时存在