文章目录
- 本篇博客主要学习内容🌼
- 对象语法🌺
- 数组语法🍍
- 绑定内联样式🍉
本篇博客主要学习内容🌼
先来看看以下这些语句都熟不熟悉吧!这些节选于后续的博客内容🌻🌻🌻
<div :class = "{'active': isActive}">active生效</div><div class="static" :class = "{'active': isActive, 'error': isError}">active生效</div><div :class = "classes()">active生效</div><div :class="[activeClass, errorClass]"></div><div :class="[isActive ? activeClass:'', errorClass]"><div :class="[{'active':isActive}, errorClass]"></div><button :class="classes"></button><button :class="classes" ></button>
<div :style="{'color': color, 'fontSize': fontSize+'px'}">我是内联绑定的元素噢</div><div :style="styles">我是data里绑定的style</div>
对象语法🌺
最常见的就是给v-bind:class设置一个对象,可以动态切换class:
<div id="app"><div :class = "{'active': isActive}">active生效</div>
</div><script>var app = new Vue({el: '#app',data: {isActive:true}})
</script>
这个比较简单:
上面的active依赖于isActive,只有当它为true时才有用,才能显示,我们也可以传入多个属性,来动态切换class
:class可以和class共存
<div id="app"><div class="static" :class = "{'active': isActive, 'error': isError}">active生效</div></div><script>var app = new Vue({el: '#app',data: {isActive:true,isError:false}})</script>
将isError改为true:
当判断条件多于两个时,我们常用计算属性来解决
<div id="app"><div :class = "classes">active生效</div>
</div><script>var app = new Vue({el: '#app',data:{isActive:true,isError:null},computed:{classes: function(){return{active: this.isActive && !this.isError,'text-fail': this.error && this.error.type == 'fail'}}}})
</script>
当isError:null时:
为true时:
为false:
除了计算属性,还可以绑定一个对象或者使用methods
使用methods和计算属性其实差不多:
<div id="app"><div :class = "classes()">active生效</div>
</div><script>var app = new Vue({el: '#app',data:{isActive:true,isError:true},methods: {classes : function (){return {active: this.isActive && !this.isError,'text-fail': this.error && this.error.type == 'fail'}}},})
</script>
数组语法🍍
和上面一样,当要应用多个class属性的时候,可以使用数组语法,给:class绑定一个数组,应用class列表
<div id="app"><div :class="[activeClass, errorClass]"></div>
</div><script>var app = new Vue({el:'#app',data() {return {activeClass: 'active',errorClass: 'error'}},})
</script>
🧐🧐🧐
来玩玩三元运算
<div id="app"><div :class="[isActive ? activeClass:'', errorClass]"></div>
</div><script>var app = new Vue({el:'#app',data() {return {isActive:true,activeClass: 'active',errorClass: 'error'}},})
</script>
样式error是始终都会被应用,当数据isActive为真时,样式active才会被应用:
为false:
甚至,我们可以混用:
<div id="app"><div :class="[{'active':isActive}, errorClass]"></div>
</div>
<script>var app = new Vue({el:'#app',data() {return {isActive:true,errorClass: 'error'}},})
</script>
同样的,我们使用data、computed、methods这些都可以玩
下面来玩computed:
<div id="app"><button :class="classes"></button>
</div>
<script>var app = new Vue({el:'#app',data:{size:'large',disabled:true},computed: {classes:function(){return ['btn',{['btn-'+ this.size]: this.size !== '',['btn-disabled']: this.disabled }]}},})
</script>
绑定内联样式🍉
绑定内联样式style也是差不多的,举个小例子:
在上面的例子中加入一个文本
<div id="app"><button :class="classes" ></button><div :style="{'color': color, 'fontSize': fontSize+'px'}">我是内联绑定的元素噢</div>
</div>
<script>var app = new Vue({el:'#app',data:{size: 'large',disabled: true,color: 'red',fontSize: 18},computed: {classes:function(){return ['btn',{['btn-'+ this.size]: this.size !== '',['btn-disabled']: this.disabled }]}},})
</script>
注意:CSS属性要用驼峰命名法或者短横分隔符,渲染后的结果就在上面啦,一般来说吧,我们会直接写在data或者computed里,再来一个小例子:
<div id="app"><div :style="styles">我是data里绑定的style</div>
</div>
<script>var app = new Vue({el: '#app',data: {styles: {color: 'red',fontSize: 18 + 'px'}}})
</script>