v-show:
作用:控制元素的显示隐藏
语法:v-show="表达式" 表达式值true显示,false隐藏
v-if
作用:控制元素的显示隐藏(条件渲染)
语法: v=if="表达式" 表达式true显示,false隐藏
注意:
v-show和v-if效果上一样,但是底层原理不同,v-show是通过切换css的display:none属性来显示隐藏,而v-if则是根据判断条件控制元素的创建和移除
v-show更适合需要频繁切换显示隐藏场景的情况
v-if更适合条件渲染
使用demo描述
demo:
参数全为true
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script> -->
<style>
.box {
border: 2px solid black;
width: 500px;
height: 400px;
margin-top: 10px;
}
</style>
</head>
<body>
<div id="app">
<div v-show="flag" class="box">v-show控制的盒子</div>
<div v-if="flag" class="box">v-if控制的盒子</div>
</div>
<script src="js/vue.js"></script>
<script>
const app = new Vue({
//通过el配置选择器,指定Vue管理的是哪个盒子
el: '#app',
//通过data提供数据
data: {
flag: true
}
})
</script>
</body>
</html>
页面效果:
v-show和v-if全部都显示
页面检查中能看到俩条对应的代码
<div v-show="flag" class="box">v-show控制的盒子</div>
<div v-if="flag" class="box">v-if控制的盒子</div>
将true改成false后的页面效果
页面检查中只能看到v-show的代码,看不到v-if的代码
<div v-show="flag" class="box">v-show控制的盒子</div>
<!---->