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>

vue