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>
<!---->