一、v-bind动态绑定属性
除了内容需要动态来决定, 属性我们也希望动态来绑定 比如动态绑定a元素的href属性 比如动态绑定img元素的src属性 这是我们可以使用v-bind指令
作用
动态绑定属性
1. 使用
属性里面不可以使用mustache语法
<body>
<div id="app">
<img src="{{imgUrl}}"/>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: "#app",
data: {
imgUrl: "https://pic.netbian.com/tupian/27781.html"
}
})
</script>
</body>
2. 使用v-bind指令
在需要动态绑定数据的属性前面添加v-bind
<body>
<div id="app">
<img v-bind:src="imgUrl"/>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
imgUrl: 'https://pic.netbian.com/uploads/allimg/210718/001826-16265387066150.jpg'
}
})
</script>
</body>
3. v-bind语法糖
v-bind 有一个语法糖, 也就是简写方式. 即 :
<body>
<div id="app">
<img v-bind:src="imgUrl"/>
<a :href="aUrl">百度一下</a>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
imgUrl: 'https://pic.netbian.com/uploads/allimg/210718/001826-16265387066150.jpg',
aUrl: 'https://www.baidu.com'
}
})
</script>
</body>
二、v-bind动态绑定class
1. 基本使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.active {
color: red;
}
</style>
</head>
<body>
<div id="app">
<h2 :class="className">v-bind动态绑定class</h2>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
className: 'active'
}
})
</script>
</body>
</html>
三、class动态绑定 ( 对象语法 )
1. 对象语法有下面这些用法
- 直接通过{ }绑定一个类 :
<h2 :class="{'active': isActive}">Hello World</h2> - 可以通过判断, 传入多个值 :
<h2 :class="{'active': isActive, 'line': isLine}">Hello World</h2> - 和普通的类同时存在 :
<h2 class="title" :class="{'active': isActive}">Hello World</h2>
对象里面的参数是以键值对形式存在的. 键为类名, 值为布尔值. 当值为true的时候, 这个类就会被添加到标签上面
<body>
<div id="app">
<h2 :class="{active: isActive, ac: isAc}">v-bind动态绑定class</h2>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
isActive: true,
isAc: false
}
})
</script>
</body>
2. 案例 : 点击实现字体变色
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.active {
color: red;
}
</style>
</head>
<body>
<div id="app">
<h2 :class="{active: isActive, ac: isAc}">v-bind动态绑定class</h2>
<button v-on:click="btnClick">点击</button>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
isActive: true,
isAc: false
},
methods: {
btnClick: function() {
this.isActive = !this.isActive
}
},
})
</script>
</body>
</html>
3. 把class的对象提取为一个方法并调用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.active {
color: red;
}
</style>
</head>
<body>
<div id="app">
<h2 :class="getClasses()">v-bind动态绑定class</h2>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
isActive: true,
isAc: false
},
methods: {
getClasses: function() {
return { active: this.isActive, ac: this.isAc }
}
}
})
</script>
</body>
</html>
五、class动态绑定 ( 数组语法 )
<body>
<div id="app">
<h2 :class="[className, className2]">v-bind动态绑定class(数组语法)</h2>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
className: 'active',
className2: 'ac'
}
})
</script>
</body>
</html>
1. 把数组放到一个方法里面并调用
<body>
<div id="app">
<h2 :class="getClasses()">v-bind动态绑定class(数组语法)</h2>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
className: 'active',
className2: 'ac'
},
methods: {
getClasses: function() {
return [this.className, this.className2]
}
},
})
</script>
</body>
案例 : 点击变色
<body>
<div id="app">
<ul>
<li v-for="(item, index) in movies"
:class="{active: index===currentIndex}"
v-on:click="setIndex(index)">
{{item}}
</li>
</ul>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
currentIndex: 0,
movies: ['大闹西游1','大闹西游2','大闹西游3','大闹西游4']
},
methods: {
setIndex: function(index) {
this.currentIndex = index
}
},
})
</script>
</body>
六、v-bind动态绑定style
语法
<h2 :style="{key(属性名): value(属性值)}"></h2>
使用
- 属性名如果用类似font-size这种方式, 则font-size必须加单引号
- 如果使用驼峰命名(fontSize),则不需要加单引号
- 这里的’50px’必须加单引号
<body>
<div id="app">
<h2 :style="{'font-size': '50px'}">动态绑定style</h2>
<h2 :style="{'font-size': size}">动态绑定style</h2>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
size: '100px'
}
})
</script>
</body>
|