Vue.js样式绑定

15 篇文章 0 订阅

样式绑定

class和style时html元素的属性,可以使用v-bind来进行样式的yi绑定,以设置样式。

v-bind在绑定class和style时,Vue专门增强了它。结果类型不仅可以时字符串,还可以是对象和数组。

class属性绑定

1:基本使用:

<style>

.static{...}

.class1{...}

//最好不使用中划线

//.class2-abc{...}

.class2_abc{...}

</style>

<div id="app">

<div v-bind:class="{ class1: isActive1 }"></div>

</div>

<script>

new Vue({

el: '#app',

data: {

isActive1: true,

//注意,如果data中使用中划线的话,需要加单引号。否则出错。而且,在v-bind中使用时,也需要加单引号。加上单引号又无法识别数据,默认为true。

//所以,尽量不要在data中使用中划线。

//下划线没问题。

//is-active2:true

is_active2:true

}

});

</script>

以上可以根据isACtive的值,动态判断来进行class样式的绑定。

提示:为了避免不必要的问题,data中和style中的class,最好不要用中划线。

2:也可以绑定多个

<div id="app">

<div class="static" v-bind:class="{class1:isActive, class2_abc:is_active2}"></div>

</div>

这里,会把v-bind动态绑定的class合并到前面的class中。

3:使用对象

<div id="app">

<div v-bind="classObject"></div>

</div>

<script>

new Vue({

el:'#app',

data:{

classObject:{

class1:true,

class2_abc:true

}

}

});

</script>

这里,v-bind中直接使用对象进行绑定。与前面不同的时,对象中的键应该和style中定义的class样式名对应。虽然可以使用中划线,用引号括起来。但是同样不建议。

其实很好理解,把v-bind中的对象直接替换为{class1:true,class2_abc:true},这和前面两个是相同的。

4:使用数组

<div id="app">

<div v-bind="[classArr1,classArr2]"></div>

</div>

<script>

new Vue({

el:'#app',

data:{

classArr1:'class1',

classArr2:'class2_abc'

}

});

</script>

这里,v-bid中使用数组进行绑定。可以理解为将data中的属性值替换到了class中。

5:使用计算属性

这是强大且常用的方式。

<div id="app">

<div v-bind="classObject"></div>

</div>

<script>

new Vue({

el:'#app',

data:{

isActive:true,

error:null

},

computed:{

classObject:function(){

return{

class1: this.isActive && !this.error,

class2_abc: !this.error && this.error == null

}

}

}

});

</script>

用法就是这样,可以借助计算属性做一些复杂的逻辑判断等等。

 

style属性绑定

1:直接设置样式:

<div id="app">

<div v-bind:style="{color: activeColor, fontSize: fontSize + 'px'}">vue学习</div>

</div>

<script>

new Vue({

el:'#app',

data:{

activeColor:green,

fontSize:50

}

})

</srcipt>

使用清晰明了。需要注意的就是v-bind中属性名和css中样式的对应。如fontSize 对应font-size。

2:也可以直接使用对象

<div id="app">

<div v-bind:style="styleObject">vue学习</div>

</div>

<script>

new Vue({

el:'#app',

data:{

styleObject:{

color:'green',

fontSize:'30px'

}

}

});

</script>

与直接使用类似,只是要注意对象的属性和css中的样式对应。

3:同样可以使用数组

<div id="app">

<div v-bind:style="[styleArr1,styleArr2]">vue学习</div>

</div>

<script>

new Vue({

el:'#app',

data:{

styleArr1:{

color:'green',

fontSize:'30px'

},

styleArr2:{

fontSize:'bold'

}

}

});

</script>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值