vue 自己编写 左侧展示隐藏菜单栏 如collapse类似

这是一个使用Vue.js编写的模板,包含一个点击动画效果。点击事件触发时,`collapseShow`数据绑定值会切换,控制显示内容的显示与隐藏,同时更新`collapseFucBtnStatus`来改变动画方向。CSS动画关键帧`ll`和`oo`定义了左右移动的效果,而`show_view`则用于内容的淡入淡出动画。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接上代码:

<template>
  <div class="search_page_list">
   <div class="click_animation" :class="collapseFucBtnStatus=='1'?'click_animation2':collapseFucBtnStatus=='2'?'click_animation1':''" @click="screen_click">{{collapseFucBtnStatus=='1'?'关闭动画':'打开动画'}}</div>
   <transition name="show_view">
    <div v-show="collapseShow" class="screen_cent" transiton="show_view">
     <div class="lalla">
         <span class="">关sdagsadgsdag闭</span>
     </div>
    </div>
   </transition>
  </div>

</template>
<script>
export default {
 
  data () {
    return {
      collapseShow: false,
      collapseFucBtnStatus: '',
    }
  },
    methods: {
      screen_click() {
        this.collapseShow = !this.collapseShow;
        this.collapseFucBtnStatus = this.collapseShow?'1':'2'
      }  
    }
}
</script>
<style scoped lang="less">
.search_page_list {
    padding-top: 117px;
    width: 100%;
    height: 100vh;
   }
    .click_animation {
        position: relative;
        cursor: pointer;
    }
    .click_animation2 {
        animation: ll 0.25s ease;
        left: 280px;
    }
    .click_animation1 {
        animation: oo 0.25s ease;
        left: 0px;
    }
    @keyframes ll {0% {left: 0; } 100% {left: 280px;}}
    @keyframes oo {0% {left: 280px;} 100% {left: 0; }}
   .screen_cent {
    width: 280px;
    height: 100%;
    position: absolute;
    left: 0px;
    top: 0;
    z-index: 3000;
    // border-radius: 0 10px 10px 0;
    overflow: hidden;
    background: #ccc;
   }
   .show_view-enter {
    animation: show_view-dialog-fade-in 0.25s ease;
   }
   .show_view-leave {
    animation: show_view-dialog-fade-out 0.25s ease forwards;
   }
   .show_view-enter-active {
    animation: show_view-dialog-fade-in 0.25s ease;
   }
   .show_view-leave-active {
    animation: show_view-dialog-fade-out 0.25s ease forwards;
   }  
   @keyframes show_view-dialog-fade-in {
    0% {transform: translateX(-280px);}
    100% {transform: translateX(0px);}
   }
   @keyframes show_view-dialog-fade-out {
    0% {transform: translateX(0px);}
    100% {transform: translateX(-280px);}
   }
   
</style>
### Vue3 和 Element Plus 实现 Aside 左侧导航栏可折叠效果 以下是基于 Vue3 和 Element Plus 的左侧导航栏可折叠功能的实现方法: #### 1. 安装依赖 首先需要安装 `element-plus` 库,可以通过 npm 或 yarn 进行安装。 ```bash npm install element-plus --save ``` 或者 ```bash yarn add element-plus ``` #### 2. 配置项目引入 Element Plus 在项目的入口文件(通常是 main.js 或 main.ts 中),全局注册 Element Plus 并按需加载样式。 ```javascript import { createApp } from &#39;vue&#39;; import App from &#39;./App.vue&#39;; import ElementPlus from &#39;element-plus&#39;; import &#39;element-plus/dist/index.css&#39;; const app = createApp(App); app.use(ElementPlus); app.mount(&#39;#app&#39;); ``` #### 3. 编写模板结构 创建一个包含左侧导航栏和右侧主要内容区域的基础布局。通过绑定动态属性控制菜单的展开/收起状态。 ```html <template> <div class="container"> <!-- 头部 --> <header>Header</header> <!-- 主体部分 --> <section class="main-section"> <!-- 左侧导航栏 --> <aside :class="{ collapse: isCollapse }"> <el-menu default-active="1" class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose" :collapse="isCollapse" > <el-submenu index="1"> <template #title> <i class="el-icon-location"></i> <span>导航一</span> </template> <el-menu-item-group title="分组一"> <el-menu-item index="1-1">选项一</el-menu-item> <el-menu-item index="1-2">选项二</el-menu-item> </el-menu-item-group> </el-submenu> <el-menu-item index="2"> <i class="el-icon-menu"></i> <template #title>导航二</template> </el-menu-item> </el-menu> </aside> <!-- 右侧内容区 --> <main> <button @click="toggleSidebar">切换侧边栏</button> Content Area </main> </section> </div> </template> ``` #### 4. 添加逻辑处理 定义数据模型用于存储当前菜单的状态,并提供相应的方法来触发菜单的折叠或展开操作。 ```javascript <script> export default { data() { return { isCollapse: false, // 控制菜单是否折叠,默认不折叠 }; }, methods: { handleOpen(key, keyPath) { console.log(&#39;打开菜单项:&#39;, key, keyPath); // 打印被打开的菜单路径 }, handleClose(key, keyPath) { console.log(&#39;关闭菜单项:&#39;, key, keyPath); // 打印被关闭的菜单路径 }, toggleSidebar() { this.isCollapse = !this.isCollapse; // 切换菜单折叠状态 }, }, }; </script> ``` #### 5. 设置样式调整视觉表现 为了使界面更加美观和谐统一,在 CSS 文件中加入自定义样式规则。 ```css <style scoped> .container { display: flex; flex-direction: column; } .main-section { display: flex; height: calc(100vh - 60px); /* 减去头部高度 */ } aside { transition: width 0.3s ease-in-out; overflow-x: hidden; white-space: nowrap; text-overflow: ellipsis; } .collapse { width: 64px !important; } .el-menu-vertical-demo:not(.el-menu--collapse) { width: 200px; min-height: 400px; } </style> ``` 以上代码实现了左侧导航栏支持手动折叠的功能[^1],并提供了按钮交互以改变其显示模式[^2]。 #### 注意事项 当设置 `collapse` 属性为 true 后,子节点中的文字会被隐藏掉仅保留图标;如果希望即使处于收缩状态下也能看到完整的标题,则可以考虑额外增加悬浮提示或其他形式补充说明信息[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值