v-if ,v-else
在 template 元素上使用 v-if , v-else 条件渲染分组
因为 v-if 是一个指令,所以必须将它添加到一个元素上。但是如果想切换多个元素呢?此时可以把一个 元素当做不可见的包裹元素,并在上面使用 v-if。最终的渲染结果将不包含 元素。
<div id="ss">
<button @click="show=!show">切换</button>
<template v-if="show">
<div>注册</div>
</template>
<template v-else="!show">
<div>登录</div>
</template>
</div>
<script>
let vm = new Vue({
el: "#ss",
data: {
show: true
},
})
</script>
v-show
带有 v-show 的元素始终会被渲染并保留在 DOM 中。v-show 只是简单地切换元素的 CSS 属性 display。
<div id="ss">
<button @click="show=!show">切换</button>
<div v-show="show">
<div>注册</div>
</div>
<div v-show="!show">
<div>登录</div>
</div>
</div>
<script>
let vm = new Vue({
el: "#ss",
data: {
show: true
},
})
</script>
v-if与v-show的区别:
相同点:v-if与v-show都可以动态控制dom元素显示隐藏。
不同点:v-if显示隐藏是将dom元素整个添加或删除,而v-show隐藏则是为该元素添加css–display:none,dom元素还在。
注意:
当一个元素默认在css中加了display:none属性,这时通过v-if,v-show修改为true是无法让元素显示的。原因是显示隐藏切换,只是会修改element style为display:""或者display:none,并不会覆盖掉或修改已存在的css属性。