侧边菜单的展开和折叠

news2024/12/23 13:10:41
  1. 通过按钮控制侧边栏的展开和折叠
  2. 通过窗口宽度的变化控制侧边栏的展开和折叠(小于768px,自动折叠)

通过按钮控制展开
在这里插入图片描述
通过按钮控制折叠
在这里插入图片描述
切换到手机模式自动折叠
在这里插入图片描述
环境准备:Vue3+Element-UI Plus

<script setup>
import {onMounted, ref, watch} from "vue";

// 是否折叠菜单
const isCollapse = ref(false)

// 检查窗口宽度,设置侧边栏宽度
function checkClientWidth(){
  console.log(document.body.clientWidth)
  if (document.body.clientWidth < 768) {
    document.querySelector('.el-aside').style.width = 'auto'
    isCollapse.value = true
  } else {
    // el-aside的宽度展开要慢于el-menu
    setTimeout(() => {
      document.querySelector('.el-aside').style.width = '200px'
    }, 300)
    isCollapse.value = false
  }
}

// 监听窗口变化,窗口宽度小于 768px 时,侧边栏会自动收起
window.addEventListener('resize', checkClientWidth)

// 监听点击折叠和展开图片时的变化
watch(isCollapse, (newValue)=>{
  if (newValue) {
    document.querySelector('.el-aside').style.width = 'auto'
  } else {
    // el-aside的宽度展开要慢于el-menu
    setTimeout(() => {
      document.querySelector('.el-aside').style.width = '200px'
    }, 300)
  }
})

onMounted(()=>{
  // 页面刷新时,检查窗口宽度,设置侧边栏宽度
  checkClientWidth()
})

</script>

<template>
  <div class="common-layout">
    <el-container>
      <el-aside>
        <el-menu
            :collapse="isCollapse"
            active-text-color="#ffd04b"
            background-color="#545c64"
            class="el-menu-vertical-demo"
            default-active="2"
            text-color="#fff"
        >
          <el-sub-menu index="1">
            <template #title>
              <el-icon>
                <location/>
              </el-icon>
              <span>Navigator One</span>
            </template>
            <el-menu-item-group title="Group One">
              <el-menu-item index="1-1">item one</el-menu-item>
              <el-menu-item index="1-2">item two</el-menu-item>
            </el-menu-item-group>
            <el-menu-item-group title="Group Two">
              <el-menu-item index="1-3">item three</el-menu-item>
            </el-menu-item-group>
            <el-sub-menu index="1-4">
              <template #title>item four</template>
              <el-menu-item index="1-4-1">item one</el-menu-item>
            </el-sub-menu>
          </el-sub-menu>
          <el-menu-item index="2">
            <el-icon>
              <icon-menu/>
            </el-icon>
            <span>Navigator Two</span>
          </el-menu-item>
          <el-menu-item index="3" disabled>
            <el-icon>
              <document/>
            </el-icon>
            <span>Navigator Three</span>
          </el-menu-item>
          <el-menu-item index="4">
            <el-icon>
              <setting/>
            </el-icon>
            <span>Navigator Four</span>
          </el-menu-item>
        </el-menu>
      </el-aside>
      <el-container>
        <el-header>
          <el-row align="middle" style="height: 100%">
            <el-col :span="1">
              <el-icon v-show="isCollapse" @click="isCollapse=false"><Expand /></el-icon>
              <el-icon v-show="!isCollapse" @click="isCollapse=true"><Fold /></el-icon>
            </el-col>
          </el-row>
        </el-header>
        <el-main>Main</el-main>
      </el-container>
    </el-container>
  </div>
</template>

<style scoped lang="scss">
.el-container {
  .el-aside {
    background-color: slategrey;
    height: 100vh;
    width: 200px;
    .el-menu{
      height: 100%;
      width: 100%;
    }
  }

  .el-header {
    background-color: #409EFF;
  }

  .el-main {
    background-color: #E6A23C;
  }
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2167870.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SpringBoot + Vue的Gucci进销存系统

文章目录 前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S 四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论 五、项目代码参考六、数据库代码参考七、项目论文示例结语 前言 &#x1f49b;博主介绍&a…

001. OBS (obs-studio)

1. 下载 https://obsproject.com/download windows c 插件下载 https://obsproject.com/visual-studio-2022-runtimes 2. 操作步骤 https://renwen.shnu.edu.cn/_s40/9a/2c/c28309a760364/page.psp https://zhuanlan.zhihu.com/p/597231652

【Java 问题】基础——IO

接上文 IO 42.Java 中 IO 流分为几种?Java IO体系中的装饰器模式抽象组件&#xff08;Component&#xff09;具体组件&#xff08;Concrete Component&#xff09;抽象装饰器&#xff08;Decorator&#xff09;具体装饰器&#xff08;Concrete Decorator&#xff09;使用装饰器…

喜讯 | 宝兰德「应用服务器软件 V9.5」荣获“2024年度优秀软件产品”殊荣

近日&#xff0c;中国软件行业协会公布了“2024年度推广优秀软件产品”名单。经过专家委员会的评议及最终审核&#xff0c;宝兰德凭借领先的技术能力和丰富的经验积累&#xff0c;中间件核心产品「应用服务器软件 V9.5」获评“2024年度优秀软件产品”。 本次评选活动由中国软件…

基于SpringBoot的在线考试系统设计与实现

1.1 研究背景 21世纪&#xff0c;我国早在上世纪就已普及互联网信息&#xff0c;互联网对人们生活中带来了无限的便利。像大部分的企事业单位都有自己的系统&#xff0c;由从今传统的管理模式向互联网发展&#xff0c;如今开发自己的系统是理所当然的。那么开发在线考试系统意…

vscode【实用插件】Project Manager 项目管理

安装 在 vscode 插件市场的搜索 Project Manager点 安装 安装成功后&#xff0c;vscode 左侧栏会出现 使用 将项目添加到项目列表中 用 vscode 打开项目&#xff0c;点保存即可 将项目移出项目列表 切换项目 单击项目列表中的项目&#xff0c;即可切换到目标项目 新窗口打开…

道一云·七巧和金蝶云星空单据接口对接

道一云七巧和金蝶云星空单据接口对接 对接系统金蝶云星空 金蝶K/3Cloud结合当今先进管理理论和数十万家国内客户最佳应用实践&#xff0c;面向事业部制、多地点、多工厂等运营协同与管控型企业及集团公司&#xff0c;提供一个通用的ERP服务平台。K/3Cloud支持的协同应用包括但不…

淘宝霸屏必备工具:淘宝商品评论电商API接口

淘宝商品评论电商API接口是指用于获取淘宝商品评论信息的一种接口&#xff0c;通过该接口可以获取淘宝网上商品的评价内容、评价等级、评价数量等信息。通过了解并使用该接口&#xff0c;能够帮助电商了解消费者对商品的评价情况&#xff0c;做好商品的推广和销售工作。 接口使…

电脑提速秘籍:6款不可不知的Windows实用软件

6款Windows系统上不可或缺的高效工具&#xff0c;每一款都是小巧而强大的存在&#xff0c;让你的电脑使用更加流畅&#xff01; 1.unlocker 当你遇到那些顽固的文件&#xff0c;需要管理员权限或者重启电脑才能删除时&#xff0c;这款只有1.02MB的轻量级工具可以帮你轻松解决问…

《黑神话悟空》战斗流派与技能加点指南及录屏技巧

在深入探索《黑神话悟空》的战斗艺术之前&#xff0c;让我们先来了解一些基本的战斗流派和技能加点策略&#xff0c;这将为你的西游之旅增添无限可能。不仅如此&#xff0c;我们还将介绍一款实用的录屏工具&#xff0c;让你能够轻松记录并分享你的冒险经历。现在&#xff0c;就…

水下生物检测系统源码分享

水下生物检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

SAP B1 流程实操 - 营销单据采购部分(上)

背景 在 SAP B1 中&#xff0c;除开【销售】外超常用的模块就是【采购】&#xff0c;企业可能不涉及生产和库存&#xff08;贸易公司&#xff09;&#xff0c;甚至不涉及采购&#xff08;服务业&#xff09;&#xff0c;但是一定会有基本的 销售。本文中我们讲解 销售 模块的基…

Android Studio上传文件至GithubSVN的忽略文件配置

Android studio升级后&#xff0c;发现原本Github&SVN的忽略文件配置的地方在于找不到了 File -> Settings -> Editor -> File Types -> lgnored Files and Folders 除了原有的&#xff0c;还可以加入下面这些 *.hprof;*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Stor…

5. 高阶函数

大型程序成本高昂&#xff0c;这不仅仅是因为构建程序需要花费时间。程序的大小几乎总是涉及复杂性&#xff0c;而复杂性会让程序员感到困惑。混乱的程序员反过来又会在程序中引入错误&#xff08;bug&#xff09;。大型程序则为这些错误提供了大量的隐藏空间&#xff0c;使它们…

如何在调试状态下部署局域网网站

1背景介绍 最近有开发数据统计的网站&#xff0c;老板需及时投放到显示屏&#xff0c;但程序仍需改动&#xff0c;只能先部署到局域网&#xff0c;测试产品不能部署服务器(服务器负担过重&#xff09; 开发框架MVC4sql serverecharts,由于需每隔5分钟刷新&#xff0c;还有ajax…

vue3+vite+qiankun实现微应用

主应用 1、安装qiankun npm install qiankun2、在主应用中创建微应用的入口文件 src\views\micro\index.vue 这个文件主要是用来提供一个 DOM 节点挂载微应用 <template><div class"xin"><p>qiankun入口文档</p><div id"qiankun…

大语言模型水印

来源&#xff1a;ICML-2024 题目&#xff1a;Token-Specific Watermarking with Enhanced Detectability and Semantic Coherence for Large Language Models 参考文献格式&#xff1a;Huo, M., Somayajula, S.A., Liang, Y., Zhang, R., Koushanfar, F. &amp; Xie, P.. …

一文2000字从0到1详解requests接口自动化测试!

前言 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系等。 1、理解什么是接口 接口一般来说有两种…

【JaveEE】——(手把手教你)用IDEA手搓一个定时器Timer

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯&#xff0c;你们的点赞收藏是我前进最大的动力&#xff01;&#xff01;希望本文内容能够帮助到你&#xff01; 目录 一&#xff1a;什么是定时器 二&#xff1a;IDEA中的定时器Timer 1&#xff1a;实例化Timer 2&#…

C语言-动态内存分配讲解

目录 ✨1.什么是动态内存分配 &#x1f495;2.动态内存开辟函数 malloc ✨3.malloc函数的检查&#xff08;两种方法&#xff09; &#x1f495;4.动态内存释放函数 free ✨5.free 函数接收空指针 ✨6.为什么要释放动态内存 &#x1f495;7.动态内存开辟函数calloc &#…