v-if和v-show指令

217 阅读1分钟

作用 v-if和v-show指令的作用都是空值标签的可见于不可见的.相比JS中的DOM操作不用获取元素,设置样式.反而方便了很多.

语法

  • <标签 v-show = "vue变量" />
  • <标签 v-if = "vue变量" />

原理

  • v-show 用display:none隐藏(频繁切换使用)
  • v-if 直接从DOM树上添加或移除
<template>
  <div>
    <h1 v-show="isOk">v-show的盒子</h1>
    <h1 v-if="isOk">v-if的盒子</h1>

    <div>
      <p v-show="age > 18">我成年了</p>
      <p v-if="age > 18">我成年了</p>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isOk: true,
      age: 15,
    }
  }
}
</script>

当我们学完v-if和v-show 之后我们可以来做一个小小的案例.

图片效果如下.

案例_折叠面板.gif

样式.

<style>
body {
  background-color: #ccc;
}
#app {
  width: 400px;
  margin: 20px auto;
  background-color: #fff;
  border: 4px solid blueviolet;
  border-radius: 1em;
  box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.5);
  padding: 1em 2em 2em;
}
h3 {
  text-align: center;
}
.title {
  display: flex;
  justify-content: space-between;
  align-items: center;
  border: 1px solid #ccc;
  padding: 0 1em;
}
.title h4 {
  line-height: 2;
  margin: 0;
}
.container {
  border: 1px solid #ccc;
  padding: 0 1em;
}
.btn {
  /* 鼠标改成手的形状 */
  cursor: pointer;
}
</style>

代码.

<template>
  <div id="app">
    <h3>案例:折叠面板</h3>
    <div>
      <div class="title">
        <h4>芙蓉楼送辛渐</h4>
        <span class="btn" @click="isOK = !isOK">
          {{ isOK ? "收起" : "展开" }}
        </span>
      </div>
      <div class="container" v-show="isOK">
        <p>寒雨连江夜入吴,</p>
        <p>平明送客楚山孤。</p>
        <p>洛阳亲友如相问,</p>
        <p>一片冰心在玉壶。</p>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isOK: false,
    };
  },
};
</script>