1.v-show指令
v-show:根据表达式的真假切换元素的显示和隐藏。
基础代码:
<div id="app">
<img v-show="true" src ="地址">
<img v-show="isShow" src ="地址">
<img v-show="age>=18" src ="地址">
</div>
var app = new Vue({
el:"#app",
data:{
isShow:false,
age:17
}
})
整体案例代码如下:
<!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>v-show指令</title>
</head>
<body>
<div id="app">
<input type="button" value="切换转换状态" @click="changeIsShow">
<input type="button" value="累加年龄" @click="addAge">
<img v-show="isShow" src ="images/1.jpg" alt="" width="100px" height="100px">
<img v-show="age>=18" src ="images/1.jpg" alt="" width="100px" height="100px">
</div>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var app = new Vue({
el:"#app",
data:{
isShow:false,
age:17
},
methods:{
changeIsShow:function(){
this.isShow = !this.isShow;
},
addAge:function(){
this.age++;
}
},
})
</script>
</body>
</html>
运行结果:
总结:
①v-show指令的作用是:根据真假切换元素的显示状态。
②原理是修改元素的display,实现显示隐藏。
③指令后面的内容,都会解析为布尔值。
④值为true元素,显示值为flash元素隐藏。
⑤数据改变之后,对应元素的显示状态会同步更新。
2.v-if指令
v-if:根据表达式的真假切换元素的显示状态。
基础代码:
<div id = "app">
<p v-if="isShow">zhangjibin</p>
<P v-show="isShow">zhangjibin v- show 修饰</P>
<h2 v-if="表达式">热死啦</h2>
</div>
var app = new Vue({
el:"#app",
data:{
isShow:false,
}
})
整体案例代码如下:
<!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>v-if指令</title>
</head>
<body>
<div id = "app">
<input type="button" value="状态转换" @click="toggleIsShow">
<p v-if="isShow">zhangjibin</p>
<P v-show="isShow">zhangjibin v- show 修饰</P>
<h2 v-if="temperature>=35">热死啦</h2>
</div>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
var app = new Vue({
el:"#app",
data:{
isShow:false,
temperature:40
},
methods:{
toggleIsShow:function(){
this.isShow=!this.isShow;
}
}
})
</script>
</body>
</html>
运行结果:
转换后的结果:
总结:
①v-if指令的作用是:根据表达式的真假切换元素的显示状态。
②本质是通过操纵dom元素来切换显示状态。
③表达式的值为true,元素存在于dom树中,为false,从dom树中移除。
④频繁切换v-show,反之使用v-if,前者的切换消耗小。
3.v-bind指令
v-bind:为元素绑定属性。
基础代码:
<div id = "app">
<img v-bind:src="imgSrc">
<img :src="imgSrc" :title="imgTitle+'!!!!'"
:class="isActive?'active':''"@click="toggleActive">
<img :src="imgSrc" :title="imgTitle+'!!!!'"
:class="{active:isActive}" @click="toggleActive">
</div>
var app = new Vue({
el:"#app",
data:{
imgSrc:"图片地址",
imgTitle:"张慕南北",
isActive:false
}
})
整体案例代码如下:
<!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>v-bind指令</title>
<style>
.active{
border: 1px solid red;
}
</style>
</head>
<body>
<div id = "app">
<img v-bind:src="imgSrc" alt="">
<br>
<img :src="imgSrc" alt="" :title="imgTitle+'!!!!'"
:class="isActive?'active':''"@click="toggleActive">
<br>
<img :src="imgSrc" alt="" :title="imgTitle+'!!!!'"
:class="{active:isActive}" @click="toggleActive">
</div>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
var app = new Vue({
el:"#app",
data:{
imgSrc:"http://www.itheima.com/images/logo.png",
imgTitle:"张慕南北",
isActive:false
},
methods:{
toggleActive:function(){
this.isActive = !this.isActive
}
}
})
</script>
</body>
</html>
总结:
①v-bind指令的作用是:为元素绑定属性。
②完整写法: v-bind:属性名。
③简写的话可以省略v-bind,只保留:属性名。
④需要动态的增删class建议使用对象的方式。