Class与Style绑定 客官°小女子只卖身不卖艺 2022-01-12 09:17 313阅读 0赞 对于数据绑定,一个常见的需求是操作元素的class列表和它的内联样式。因为它们都是attribute,我们可以用v-bind处理它们:只需要计算出表达式最终的字符串。不过,字符串拼接麻烦又易错。因此,在v-bind用于class和style时,Vue.js专门增强了它。表达式的结果类型除了字符串以外,还可以是对象或数组。 **一、绑定HTML Class** **1.对象语法** ** **我们可以传给v-bind:class一个对象,以动态地切换class。注意,v-bind:class指令可以与普通的class特性共存。代码示例如下: <div id="example" class="static" v-bind:class="{'didi-orange':isRipe,'didi-green':isNotRipe}"></div> var vm = new Vue({ el:'example', data:{ isRipe:true, isNotRipe:false } }) 渲染为: <div id='example' class='static didi-orange'></div> 当isRipe和isNotRipe变化时,class列表将相应地更新。例如,如果isNotRipe变为true,那么class列表将变为"static didi-orange didi-green"。(当然,一般情况下,v-bind:class绑定的对象中只有一个class会生效,这取决于用户自己的设置。) 注:尽管可以用Mustache标签绑定class,比如class="\{ \{className\}\}",但是我们不推荐这种写法和v-bind:class混用。 我们也可以直接绑定数据中的一个对象,代码示例如下: <div id="example" v-bind:class="ddfe"></div> var vm = new Vue({ el:'example', data:{ ddfe:{ 'didi-orange':'true', 'didi-green':'false' } } }) 还可以在这里绑定一个返回对象的计算属性。这是一种常用且强大的模式。代码示例如下: <div id='example' v-bind:class="ddfe"></div> var vm = new Vue({ el:'example', data:{ didiAge:4, didiMember:6000 } computed:{ ddfe:function(){ return{ 'didi-orange':this.didiAge>3 ? true:false, 'didi-large':this,didiMember>1000? true:false } } } }) **2.数组语法** 我们可以把一个数组传给v-bind:class,以应用一个class列表。代码示例如下: <div id='example' v-bind:class="[didiHandsome,didiBeautiful]"></div> var vm = new Vue({ el:'example', data:{ didiHandsome:'didi-handsome', didiBeautiful:'didi-beautiful' } }) 渲染为: <div id="example" class="didi-handsome didi-beautiful"></div> 如何想根据条件切换列表中的class,则可以用三元表达式。代码示例如下: <div id="example" v-bind:class="[didiHandsome,isRipe ? didiOrange: '']"></div> 此例始终添加didiHandsome,但是只有在isRipe为true时才会添加didiOrange。 不过,当有多个条件class时这样写有些烦琐。在Vue.js 1.0.19及以后版本中,可以在数组语法中使用对象语法。代码示例如下: <div id="example" v-bind:class="[didiHandsome,{didiOrange: isRipe,didiGreen: isNotRipe}]"></div> **二、绑定内联样式** **1.对象语法** ** **v-bind:style的对象语法十分直观----看着非常像CSS,其实它是一个JavaScript对象。CSS属性名可以用驼峰式或短横分隔命名。代码示例如下: <div id="example" v-bind:style="{color:didiColor,fontSize:fontSize + 'px'}"></div> var vm = new Vue({ el:'example', data:{ didiColor:'orange', fontSize:30 } }) 通常直接绑定到一个样式对象更好,让模板更清晰。代码示例如下: <div id="example" v-bind:style="ddfe"></div> var vm = new Vue({ el:'example', data:{ ddfe:{ color:orange, fontSize:'13px' } } }) 同样的,对象语法常常结合返回对象的计算属性使用。 **2.数组语法** v-bind:style的数组语法可以将多个样式对象应用到一个元素上。代码示例如下: <div v-bind:style="[ddfe,didiFamily]"></div> **3.自动添加前缀** ** **当v-bind:style使用需要厂商前缀的CSS属性时,如transform,Vue.js会自动侦测并添加相应的前缀。在Vue.js源码中采用prefix函数来完成这个功能。 转载于:https://www.cnblogs.com/yc-1314/p/10266776.html
还没有评论,来说两句吧...