Vuejs 样式绑定
2018-09-09 本文已影响4人
passMaker
本文主要归纳,在 Vuejs 中。如何实现数据与样式进行绑定。
class 对象绑定
在 div
标签上绑定 class
,并绑定一个对象{activated: isActivated}
。表示 div
元素的 class
名称为 activated
,它是否显示取决于数据里面 isActivated
的变量。
然后在 data
里面定义这个 isActivated
变量,给它一个默认值 false
。
再给 methods
中的 handleDivClick
事件写上取反的逻辑即可。
<body>
<div id="app">
<div @click="handleDivClick"
:class="{activated: isActivated}"
>Hello World</div>
</div>
<script>
var vm = new Vue({
el: "#app",
data: {
isActivated: false
},
methods: {
handleDivClick: function(){
this.isActivated = !this.isActivated
}
}
})
</script>
<style>
.activated {
color: red;
}
</style>
</body>
class 数组绑定
在 class
中使用数组[activated]
,即 div
元素显示 class
是 activated
这个变量里面的内容。由 activated
决定。在 methods
中中的 handleDivClick
事件写上给 activated
置为 "activated"
字符串(<style>
中定义过的class
效果)即可。
<body>
<div id="app">
<div @click="handleDivClick"
:class="[activated]"
>Hello World</div>
</div>
<script>
var vm = new Vue({
el: "#app",
data: {
activated: ""
},
methods: {
handleDivClick: function(){
if(this.activated === "activated"){
this.activated = ""
}else{
this.activated = "activated"
}
}
}
})
</script>
<style>
.activated {
color: red;
}
</style>
</body>
因为这种绑定方式是一个数组,所以可以给 class
绑定多个变量。
style 样式绑定
通过修改 div
中内联 style
属性的对象数据属性来达到改变样式的效果。
<body>
<div id="app">
<div :style="styleObj" @click="handleDivClick"
>Hello World</div>
</div>
<script>
var vm = new Vue({
el: "#app",
data: {
styleObj: {
color: "black",
fontSize: "30px"
}
},
methods: {
handleDivClick: function(){
this.styleObj.color = this.styleObj.color === "black" ? "red" : "black"
}
}
})
</script>
</body>