Vue实现左侧可伸缩

<template>
 <div class="main">
  <div class="left_main" :class="{ left_main_show: !openStatus }"></div>
  <div class="right_main">
   <div class="open_close">
    <i @click="change" v-if="open_close" class="el-icon-s-fold"></i>
    <i @click="change" v-else class="el-icon-s-unfold"></i>
   </div>
  </div>
 </div>
</template>
<script>
export default {
 name: 'Home',
 data() {
  return {
   openStatus: true,
   open_close: true,
  }
 },
 methods: {
  change() {
   this.openStatus = !this.openStatus
   if (this.openStatus) {
    setTimeout(() => {
     this.open_close = true
    }, 1000)
   } else {
    setTimeout(() => {
     this.open_close = false
    }, 1000)
   }
  },
 },
}
</script>
<style lang="scss" scoped>
.main {
 display: flex;
 width: 100%;
 height: 100vh;
 .left_main {
  margin: 0;
  width: 300px;
  text-align: center;
  background-color: aquamarine;
  transition: width 1s;
 }
 .right_main {
  flex: 1;
  background-color: brown;
  position: relative;
  .open_close {
   position: absolute;
   left: 0;
   top: 0;
   color: white;
   font-size: 24px;
  }
 }
 .left_main_show {
  width: 0px;
 }
}
</style>

 

posted @ 2021-12-28 17:07  yw3692582  阅读(627)  评论(0编辑  收藏  举报