选项卡

187 阅读1分钟

闲来无事,写个一个简单选项卡玩一下!!!

v-if和v-show都可以控制元素的显示和隐藏,当值为true时元素显示,当值为false时元素隐藏。v-if和v-show的区别:v-if是直接删除或者创建元素,控制元素的显示和隐藏;v-show是使用display样式控制元素的显示和隐藏。

实现两个功能。(1)实现单击菜单切换div盒子。(2)实现菜单排他功能。

v-if实现选项卡案例

image-20230225163638250

 <template>
   <h2>v-if实现选项卡的案例</h2>
   <div class="box">
     <div class="changeBox">
       <div :class="{redColor:isActive == 0}" @click="isActive = 0">选项一</div>
       <div :class="{redColor:isActive == 1}" @click="isActive = 1">选项二</div>
       <div :class="{redColor:isActive == 2}" @click="isActive = 2">选项三</div>
     </div>
     <div class="contentBox">
       <div v-if="isActive==0">我是选项{{isActive+1}}的内容</div>
       <div v-if="isActive==1">我是选项{{isActive+1}}的内容</div>
       <div v-if="isActive==2">我是选项{{isActive+1}}的内容</div>
     </div>
   </div>
 </template>
 ​
 <script setup>
 import {ref} from  'vue'
 let isActive = ref(0)
 </script>
 ​
 <style lang="scss" scoped>
 .redColor{
   background-color: red;
 }
 .box{
   width: 600px;
   height: 500px;
   background-color: skyblue;
   .changeBox{
     height: 100px;
     width: 100%;
     background-color: pink;
     display: flex;
     justify-content: space-around;
     align-items: center;
     div{
       width: 100%;
       height: 100%;
       display: flex;
       align-items: center;
       justify-content: center;
     }
   }
   .contentBox{
     display: flex;
     height: 100%;
     justify-content: center;
     align-items: center;
     font-size: 30px;
   }
 }
 ​
 </style>

v-if实现选项卡案例

image-20230225163638250

 <template>
   <h2>v-if实现选项卡的案例</h2>
   <div class="box">
     <div class="changeBox">
       <div :class="{redColor:isActive == 0}" @click="isActive = 0">选项一</div>
       <div :class="{redColor:isActive == 1}" @click="isActive = 1">选项二</div>
       <div :class="{redColor:isActive == 2}" @click="isActive = 2">选项三</div>
     </div>
     <div class="contentBox">
       <div v-if="isActive==0">我是选项{{isActive+1}}的内容</div>
       <div v-if="isActive==1">我是选项{{isActive+1}}的内容</div>
       <div v-if="isActive==2">我是选项{{isActive+1}}的内容</div>
     </div>
   </div>
 </template>
 ​
 <script setup>
 import {ref} from  'vue'
 let isActive = ref(0)
 </script>
 ​
 <style lang="scss" scoped>
 .redColor{
   background-color: red;
 }
 .box{
   width: 600px;
   height: 500px;
   background-color: skyblue;
   .changeBox{
     height: 100px;
     width: 100%;
     background-color: pink;
     display: flex;
     justify-content: space-around;
     align-items: center;
     div{
       width: 100%;
       height: 100%;
       display: flex;
       align-items: center;
       justify-content: center;
     }
   }
   .contentBox{
     display: flex;
     height: 100%;
     justify-content: center;
     align-items: center;
     font-size: 30px;
   }
 }
 ​
 </style>