Vue.js中class与style的增强绑定实现方法
在web前端应用中,操作元素的class列表的内联样式style是数据绑定style是数据绑定的一个常见需求,因为它们都是attribute,所有可以用v-bind处理它们,但若样式复杂,则需要书写长串的样式代码,这样一来,字符串拼接就比较麻烦。因此,在将v-bind用于class和style时,Vue.js做了专门的增强,表达式结果的类型除了字符串之外,还可以是对象或数组。
一、v-bind绑定class属性
若想使用类样式(即以类名定义元素的样式,类样式一般以"."号开头命令),可以通过v-bind指令绑定class属性实现:
(1)绑定class样式,字符串写法
适用于:样式的类名不确定,需要动态指定
<div id="root"> <!-- 绑定class样式,字符串写法,适用于:样式的类名不确定,需要动态指定 --> <div class="basic" v-bind:class="moon" @click="doChange"> {{name}} </div> </div> <script> const vm = new Vue({ el: '#root', data: { name: "class和style增强绑定", moon: "normal" }, methods: { doChange() { var arr = ["happy", "sad", "normal"]; indexof = Math.floor(Math.random() * 3); this.moon = arr[indexof]; } } }); </script>
css样式:
.happy { border: 4px solid red; background-color: rgba(255, 255, 0, 0.644); background: linear-gradient(30deg, yellow, pink, orange); } .sad { border: 4px dashed rgb(2, 197, 2); background-color: gray; } .normal { background-color: skyblue; }
执行结果:
(2)绑定class样式,数组写法
适用于:要绑定的样式个数不确定,名字也不确定
<div id="root"> <!-- 绑定class样式,数组写法,适用于:要绑定的样式个数不确定,名字也不确定 --> <div class="basic" v-bind:class="classarr"> {{name}} </div> </div> <script> const vm = new Vue({ el: '#root', data: { name: "class和style增强绑定", classarr: ["text_1", "text_2", "text_3"], }, methods: { } }); </script>
css样式:
.text_1 { background-color: yellowgreen; } .text_2 { font-size: 30px; text-shadow: 2px 2px 10px red; } .text_3 { border-radius: 20px; }
执行结果:
(3)绑定class样式,对象写法
适用于:要绑定的样式个数和名字也确定,需要动态显示
<div id="root"> <!-- 绑定class样式,对象写法,适用于:要绑定的样式个数和名字也确定,需要动态显示 --> <div class="basic" v-bind:class="classobj"> {{name}} </div> </div> <script> const vm = new Vue({ el: '#root', data: { name: "class和style增强绑定", classobj: { text_1: false, text_2: true, text_3: false, }, }, methods: { } }); </script>
css样式:
.text_1 { background-color: yellowgreen; } .text_2 { font-size: 30px; text-shadow: 2px 2px 10px red; } .text_3 { border-radius: 20px; }
执行结果:
二、v-bind绑定内联样式style
通过内联(style)绑定给DOM元素示例:
(1)绑定style样式---对象形式
<div id="root"> 绑定style样式----对象形式 <br><br> <div v-bind:style="styleobj" class="basic"> {{name}} </div><br><br> </div> <script> const vm = new Vue({ el: '#root', data: { name: "class和style增强绑定", styleobj: { width: "300px", height: "100px", border: "1px solid black", fontSize: "40px", backgroundColor: "blue" }, }, methods: { } }); </script>
执行结果:
(2)绑定style样式---数组写法
<div id="root"> 绑定style样式----数组写法 <br><br> <div v-bind:style="stylearr" class="basic"> {{name}} </div> </div> <script> const vm = new Vue({ el: '#root', data: { name: "class和style增强绑定", stylearr: [ {width: "300px"}, {height: "100px"}, {border: "1px solid black"}, {backgroundColor:"red"}, {fontSize:"20px"} ], }, methods: { } }); </script>
执行结果:
到此这篇关于Vue.js中class与style的增强绑定的文章就介绍到这了,更多相关Vue.js class与style绑定内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
vue 使用Jade模板写html,stylus写css的方法
这篇文章主要介绍了vue 使用Jade模板写html,stylus写css的方法,文中还给大家提到了使用jade注意事项,需要的朋友可以参考下2018-02-02vue最强table vxe-table 虚拟滚动列表 前端导出问题分析
最近遇到个问题,后台一次性返回2万条列表数据并且需求要求所有数据必须全部展示,不能做假分页,怎么操作呢,下面通过本文介绍下vue最强table vxe-table 虚拟滚动列表 前端导出问题,感兴趣的朋友一起看看吧2023-10-10
最新评论