vue实现显示隐藏功能
使用 v-show 指令
v-show 是 Vue 提供的指令,通过切换元素的 display CSS 属性来控制显示和隐藏。适合频繁切换的场景,因为元素始终保留在 DOM 中。
<template>
<div>
<button @click="toggleVisibility">Toggle</button>
<div v-show="isVisible">This content can be hidden</div>
</div>
</template>
<script>
export default {
data() {
return {
isVisible: true
}
},
methods: {
toggleVisibility() {
this.isVisible = !this.isVisible
}
}
}
</script>
使用 v-if 指令
v-if 会根据条件完全添加或移除 DOM 元素。适合不频繁切换且需要节省资源的场景。
<template>
<div>
<button @click="toggleVisibility">Toggle</button>
<div v-if="isVisible">This content can be removed from DOM</div>
</div>
</template>
<script>
export default {
data() {
return {
isVisible: true
}
},
methods: {
toggleVisibility() {
this.isVisible = !this.isVisible
}
}
}
</script>
动态 CSS 类绑定
通过绑定 class 或 style 属性来控制元素的显示和隐藏,提供更灵活的样式控制。
<template>
<div>
<button @click="toggleVisibility">Toggle</button>
<div :class="{ 'hidden': !isVisible }">Content with dynamic class</div>
<div :style="{ display: isVisible ? 'block' : 'none' }">Content with dynamic style</div>
</div>
</template>
<script>
export default {
data() {
return {
isVisible: true
}
},
methods: {
toggleVisibility() {
this.isVisible = !this.isVisible
}
}
}
</script>
<style>
.hidden {
display: none;
}
</style>
使用计算属性
对于更复杂的显示逻辑,可以使用计算属性来返回布尔值,结合上述指令使用。
<template>
<div>
<input v-model="searchQuery" placeholder="Search...">
<div v-show="shouldShowResults">Search results here</div>
</div>
</template>
<script>
export default {
data() {
return {
searchQuery: ''
}
},
computed: {
shouldShowResults() {
return this.searchQuery.length > 2
}
}
}
</script>
过渡动画效果
为显示隐藏添加过渡动画,提升用户体验。
<template>
<div>
<button @click="toggleVisibility">Toggle with Animation</button>
<transition name="fade">
<div v-if="isVisible">This content fades in/out</div>
</transition>
</div>
</template>
<script>
export default {
data() {
return {
isVisible: true
}
},
methods: {
toggleVisibility() {
this.isVisible = !this.isVisible
}
}
}
</script>
<style>
.fade-enter-active, .fade-leave-active {
transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
</style>
以上方法可以根据具体需求选择使用,v-show 适合频繁切换,v-if 适合条件性渲染,CSS 绑定适合需要自定义样式的情况,计算属性适合复杂逻辑,过渡动画则能提升视觉效果。







