一、v-show
- 根据表达式的真假,切换元素的显示和隐藏
<body>
<div id="app">
<img src="../pictures/A-girl.jpg" alt="test" v-show="isShow">
<input type="button" value="改变布尔值" @click=changeTrue>
<img src="../pictures/A-boy.jpg" alt="test" v-show="age > 18">
<input type="button" value="年龄-1,当前19" @click=changeAge>
</div>
<script>
var app = new Vue({
el:"#app",
data:{
isShow:true,
age:19,
},
methods:{
changeTrue:function(){
this.isShow = !this.isShow;
},
changeAge:function(){
this.age--;
},
}
})
</script>
</body>
二、v-if
- 根据表达式真假,切换元素的显示与隐藏(直接操纵DOM元素)
- 使用与v-show类似,区别:
- v-show实际上是将元素的display:none,
- v-if则是直接将元素从DOM树中移除;
- 频繁切换某节点,使⽤v-show(切换开销⽐较⼩,初始开销较⼤),
- 不需要频繁切换某节点使⽤v-if(初始渲染开销较⼩,切换开销⽐较⼤);
- v-else: 可以用 v-else 指令给 v-if 添加一个 “else” 块:
<div id="app">
<div v-if="isShow">Show</div>
<div v-else>Not Show</div>
</div>
<script>
new Vue({
el: '#app',
data: {
isShow: true
}
})
</script>
- v-else-if:用作 v-if 的 else-if 块。可以链式的多次使用:
<body>
<div class="date">
<div v-if="day==1">今天是周一</div>
<div v-else-if="day==2">今天是周二</div>
<div v-else-if="day==3">今天是周三</div>
<div v-else-if="day==4">今天是周四</div>
<div v-else-if="day==5">今天是周五</div>
<div v-else-if="day==6">今天是周六</div>
<div v-else-if="day==7">今天是周日</div>
<div v-else>格式错误!</div>
</div>
</body>
<script>
var app = new Vue({
el:".date",
data:{
day:new Date().getDay()//获取"日"
}
})
</script>
注:
- 一般来说,涉及到多重条件判断,不会采用这种结构,可以定义一个计算属性computed:
- 涉及到两个元素时可以使用v-if、v-else:
三、v-bind
- 作用、为元素绑定属性
- 写法、v-bind: 属性名,简写 : 属性名
例:
<body>
<div id="app">
<img :src="imgSrc" alt="test" :title="imgTitle">
<img :src="imgSrc" alt="test" :title="imgTitle">
</div>
<script>
var app = new Vue({
el:"#app",
data:{
imgSrc: "http://gmis.aust.edu.cn/pyxx/images/loginlogo.png",
imgTitle: "我是tiltle",
},
methods:{
}
})
</script>
</body>
- 也可绑定元素的class(常用在active)
例:
<body>
<div id="app">
<img :src="imgSrc" alt="test" :title="imgTitle"
:class="isActive?'active':''" @click="toggleActive">
<!-- 上面使用三元表达式,下面为对象的形式 -->
<img :src="imgSrc" alt="test" :title="imgTitle"
:class="{active:isActive}" @click="toggleActive">
</div>
<script>
var app = new Vue({
el:"#app",
data:{
imgSrc: "http://gmis.aust.edu.cn/pyxx/images/loginlogo.png",
imgTitle: "我是tiltle",
isActive:false,
},
methods:{
toggleActive:function(){
this.isActive = !this.isActive;
}
}
})
</script>
</body>
效果:
四、v-bind深入学习
4.1 v-bind动态绑定class(对象语法)-常用**
{ } 一个大括号表示对象,两个才是插值表达式
B站Vue教程-P16
4.2 v-bind动态绑定class(数组语法)
- 用途:类名多的时候放进数组中(并不能动态绑定,较鸡肋)
4.3 v-bind动态绑定style(对象语法)**
注:
- 50px需加引号,否则会被认为是变量,一者在data中并未定义该变量,二者变量不能用数字开头
- CSS属性名 “ - 命名 ” 与 “ 驼峰命名 ” 均可
- 进阶:
还可以将样式写进methods中调用函数return实现
4.4 v-bind动态绑定style(数组语法)**
- 不常用,具体看下图
B站Vue教程-P20