vue的动态绑定分为三种: 绑定属性,绑定class,绑定style
绑定语法
其中v-bind
可以简写为冒号:
绑定属性
例如:绑定图片地址,颜色等
1 2
| v-bind:src="url" v-bind:href="linkurl"
|
使用简写
1 2
| :src="url" :href="linkurl"
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div id="app"> <img src="imgurl" alt=""></img> <img v-bind:src="imgurl" alt=""></img>
<a href="linkurl">博客地址</a> <a v-bind:href="linkurl">博客地址</a>
<a :href="linkurl">博客地址</a> </div> <script src="../../../vue.js" charset="utf-8"></script> <script> const app = new Vue({ el: "#app", data: { imgurl: 'https://cn.bing.com/th?id=OHR.HumpbackHerring_ZH-CN2868885675_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp' ,linkurl: 'https://ulomo.github.io' } }) </script> </body> </html>
|
绑定class
有两种使用方式:
通常使用对象较多
在使用对象时,使用{key-value}
的形式
key为类名,value为一个布尔值,用来控制是否启用这个class
1
| :class={class1:bool1, class2:bool2}
|
bool值作为一个变量是在vue中对其进行赋值的
在使用列表时,使用列表的形式[]
列表中的每一个元素时,列表中是每一个要设置的class,而判断是否启用class,是在vue中判断的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style media="screen"> .check{ color: orange } .checked{ color: green } </style> </head> <body> <div id="app"> <button @click='reversecolor' :class='{check:c1, checked:c2}' type="button" name="button">确认</button>
<button @click='reversecolor' :class='getclass()' type="button" name="button">确认</button>
<button @click='reversecolor' :class='[value1,value2]' type="button" name="button">确认</button> </div> <script src="../../../vue.js" charset="utf-8"></script> <script> const app = new Vue({ el: "#app", data: { c1: true, c2: false, value1: 'check', value2: 'checked' }, methods: { reversecolor(){ this.c1 = ! this.c1, this.c2 = ! this.c2 }, getclass(){ return {check: this.c1, checked: this.c2} } } }) </script> </body> </html>
|
绑定style
和数组一样,也有两种绑定方式:对象和列表
不过在使用对象时,value并不是布尔值,而是style对应的值
1
| :style={fontSize:finalsize, backgroundColor:finalcolor}
|
列表的使用方式一样
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div id="app"> <p :style="{fontSize: '80px' ,backgroundColor: 'orange'}">{{message}}</p> <p :style="{fontSize: finalsize + 'px' ,backgroundColor: finalcolor}">{{message}}</p> <p :style="getstyle()">{{message}}</p>
<p :style='[base,overridebase]'>{{message}}</p> </div> <script src="../../../vue.js" charset="utf-8"></script> <script> const app = new Vue({ el: "#app", data: { message: "hello vue!" ,finalsize: 100 ,finalcolor: 'green' ,base: {fontSize: this.finalsize + 'px', backgroundColor: this.finalcolor} ,overridebase: {fontSize: '20px', backgroundColor: 'brown'} }, methods: { getstyle(){ return {fontSize: this.finalsize + 'px',backgroundColor: this.finalcolor} } } }) </script> </body> </html>
|
总结
不论是使用对象还是列表,通常都是将这些数据在vue中用函数写好,在html中直接调用函数就好了