使用v-show
有条件地切换可见性的指令<div>
元素,取决于“showDiv”的值。
<div v-show="showDiv">This div tag can be hidden</div>
亲自试一试 »
请参阅下面的更多示例。
这个v-show
指令用于有条件地切换元素的可见性。
当表达式使用v-show
评估结果为“假”,CSSdisplay
属性设置为“none”,否则 CSSdisplay
属性回落到默认值。
一个元素与v-show
被挂载一次并保留在 DOM 中,仅其可见性通过切换v-show
。
v-show
与内置函数一起使用时触发转换类和事件<Transition>
成分。
生命周期钩子如mounted
/unmounted
, 或者activated
/deactivated
是不是当对象的可见性切换时触发v-show
。
这个v-show
和v-if
指令显然非常相似,因为它们都可以切换元素以使其显示或不显示,但这里有一些区别:
v-show |
v-if |
|
---|---|---|
Creates and destroys an element in the DOM when it is toggled? | no | yes |
Triggers lifecycle hooks mounted /unmounted when an element is toggled? |
no | yes |
Triggers transition events and classes for leaving and entering when used with the built-in <Transition> component? |
yes | yes |
Works with the built-in <template> element? |
no | yes |
Works with v-else-if and v-else ? |
no | yes |
这个v-show
和v-if
指令并排使用来有条件地切换一个的可见性<div>
元素。
打开示例,将条件设置为“false”,然后右键单击并检查页面以查看带有v-show
仍然存在于 DOM 中。
<div id="app">
<div v-show="showDiv">Div tag with v-show</div>
<div v-if="showDiv">Div tag with v-if</div>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
showDiv: true
}
}
})
app.mount('#app')
</script>
亲自试一试 »
<p>
元素变得可见v-show
并触发after-enter
事件。
<template>
<h1>JavaScript Transition Hooks</h1>
<p>This code hooks into "after-enter" so that after the initial animation is done, a method runs that displays a red div.</p>
<button @click="pVisible=true">Create p-tag!</button><br>
<Transition @after-enter="onAfterEnter">
<p v-show="pVisible" id="p1">Hello World!</p>
</Transition>
<br>
<div v-show="divVisible">This appears after the "enter-active" phase of the transition.</div>
</template>
<script>
export default {
data() {
return {
pVisible: false,
divVisible: false
}
},
methods: {
onAfterEnter() {
this.divVisible = true;
}
}
}
</script>
<style scoped>
.v-enter-active {
animation: swirlAdded 1s;
}
@keyframes swirlAdded {
from {
opacity: 0;
rotate: 0;
scale: 0.1;
}
to {
opacity: 1;
rotate: 360deg;
scale: 1;
}
}
#p1, div {
display: inline-block;
padding: 10px;
border: dashed black 1px;
}
#p1 {
background-color: lightgreen;
}
div {
background-color: lightcoral;
}
</style>
运行示例 »
Vue教程:Vue v-show 指令
Vue教程:Vue v-if 指令
Vue教程:Vue 动画
Vue参考:Vue <Transition> 组件
Vue参考:Vue v-if 指令
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!