后台管理系统中常见的三栏布局总结:使用element ui构建

news2024/9/29 3:24:40

使用的element ui中el-menu
在这里插入图片描述

  • vue2 使用 el-menu构建的列表布局: 列表可以折叠展开
<template>
  <div class="home">
    <header>
      <el-button type="primary" @click="handleClick">切换</el-button>
    </header>
    <div class="content">
      <el-scrollbar class="sidebar">
        <el-menu
          class="menubox"
          :collapse="this.$store.state.isCollapse"
          background-color="#25D083"
          :class="{ collapse: this.$store.state.isCollapse }"
        >
           <!-- 注意:这里是有扩展的子列表 , title放名称, el-men-item放的是具体内容 ! -->
          <el-submenu index="1">
            <template slot="title">
              <i class="el-icon-location icon"></i>
              <span slot="title">导航一</span>
            </template>
            <el-menu-item index="1-4-1">
              <i class="el-icon-location icon"></i>
              <span>选项1</span>
            </el-menu-item>
            <el-menu-item index="1-4-1">
              <i class="el-icon-location icon"></i>
              <span>选项2</span>
            </el-menu-item>
          </el-submenu>
          <el-menu-item
            index="2"
          >
            <i class="el-icon-menu icon"></i>
            <span slot="title">导航二</span>
          </el-menu-item>
          <el-menu-item index="3">
            <i class="el-icon-document icon"></i>
            <span slot="title">导航三</span>
          </el-menu-item>
          <el-menu-item index="4">
            <i class="el-icon-setting icon"></i>
            <span slot="title">导航四</span>
          </el-menu-item>
        </el-menu>
      </el-scrollbar>
      <div class="mainbox"></div>
    </div>
  </div>
</template>

<script>
// @ is an alias to /src

export default {
  name: "HomeView",
  data() {
    return {
      isCollapse: true,
    };
  },
  methods: {
    handleClick() {
      this.$store.dispatch("change");
    },
  },
};
</script>
<style lang="scss">
$topHeight: 60px;
$minWidth: 50px;
$maxWidth: 160px;
.border {
  border: 1px solid blue;
}
.home {
  box-sizing: border-box;
  overflow: hidden;
  height: 100vh;
  header {
    height: $topHeight;
    line-height: $topHeight;
    background: pink;
  }
  .content {
    display: flex;
    height: calc(100vh - $topHeight);
    // 侧边滚动条
    .sidebar {
      height: 100%;
      background: #25d083;
      // 设置最大高度,当高度超出时候滚动
      .menubox {
        width: $maxWidth;
        max-height: calc(100vh - $topHeight);
        transition: all 0.3s; // 设置过渡效果
        // 自定义修改el-menu的布局, 标题对应关系.el-submenu__title 和 el-menu-item
        .el-submenu > .el-submenu__title,
        .el-menu-item {
          margin: 20px auto;
          display: flex;
          flex-direction: column;
          justify-content: center;
          align-items: center;
          height: 70px;  // 默认的高度是56px, line-height也是56px, 根据需要修改
          line-height: 40px !important; 
          .icon {
            font-size: 25px;
          }
          span {
            font-size: 14px;
          }
        }
        // 折叠后,el-menu-item的图标距离左边很远,发现是padding导致的,要!important
        .el-menu-item {
          .el-tooltip {
            padding: 0 !important;
          }
        }
   // 当el-menu折叠的时候
        &.collapse {
          width: $minWidth;
        }
      }
    }

    .mainbox {
      flex: 1;
      background: rgb(217, 236, 171);
    }
  }
}

</style>

涉及到的知识点整理

  1. el-scrollbar 是element ui中的内置组件,没有官方文档。

    • 使用场景: 当只需要某一部分高度超出滚动,而不影响整体的布局时,将该部分用el-scrollbar包裹即可,一般要设置这部分的最大高度。
      <el-scrollbar>
         <box style="max-height: 200px"> </box>
      </el-scrollbar>
      // 有时可能有横向滚动条
      
      /* 隐藏横向滚动条 */
      .el-scrollbar__wrap{
        overflow-x: hidden;
      }
      
  2. 将控制折叠展开的变量放在store中,防止跨组件通信比较麻烦

  3. 修改el-submenu 和 el-menu-item的样式(css基础不好,这块整理了好久才明白):自定义修改el-menu的布局, 标题对应关系.el-submenu__title 和 el-menu-item (牢记这两个位置)

    • 问题: 折叠后,发现自定义的宽度导致图标并没有居中
    • 解决方法:!important
        .el-menu-item {
            .el-tooltip {
              padding: 0 !important;
            }
      }
      
  4. 小建议: 可以使用scss先定义好 变量(侧边栏)的宽度,如200 -> 60, 在最外层加过渡效果,视觉更友好

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

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

相关文章

Arcgis画等高线

目录 数据准备绘制等高线3D等高线 今天我们将学习如何在ArcGIS中绘制等高线地图。等高线地图是地理信息系统中常见的数据表现形式&#xff0c;它通过等高线将地形起伏展现得一目了然&#xff0c;不仅美观&#xff0c;还能提供重要的地形信息。 数据准备 在开始之前&#xff0c…

【javaSE】 类和对象详解

目录 面向对象的初步认知 什么是面向对象 面向对象与面向过程 类定义和使用 简单认识类 类的定义格式 注意事项 练习定义类 定义一个狗类 定义一个学生类 注意事项 类的实例化 什么是实例化 注意事项 类和对象的说明 this引用 为什么要有this引用 什么是this引…

FSM:Full Surround Monodepth from Multiple Cameras

参考代码&#xff1a;None 介绍 深度估计任务作为基础环境感知任务&#xff0c;在基础上构建的3D感知才能更加准确&#xff0c;并且泛化能力更强。单目的自监督深度估计已经有MonoDepth、ManyDepth这些经典深度估计模型了&#xff0c;而这篇文章是对多目自监督深度估计进行探…

实用科研网站(自用)

网站网址Papers With Codehttps://paperswithcode.com/AMinerhttps://www.aminer.cn/Connected Papershttps://www.connectedpapers.com/ Papers With Code Papers With Code&#xff0c;在这个网站上可以看到最新的机器学习信息&#xff0c;如&#xff1a;当前研究热点、趋势…

matplotlib从起点出发(6)_Tutorial_6_Animations

1 在matplotlib中使用动画 基于其绘图功能&#xff0c;matplotlib还提供了一个使用动画模块生成动画animation的接口。动画是一系列帧&#xff0c;其中每个帧对应于图形Figure 上的一个绘图。本教程介绍了有关如何创建此类动画的一般准则以及可用的不同选项。 import matplot…

ubuntu23.04 flush DNS caches

如何在Ubuntu 23.04中刷新DNS缓存 现在&#xff0c;如果你运行的是Ubuntu 23.04&#xff0c;"系统解决 "的方法将不再适用于你。让我们检查一下你目前的缓存大小。打开你的Ubuntu终端&#xff0c;运行以下command&#xff1a; resolvectl statistics现在&#xff0c…

Android NDK开发

工程目录图 NDK中文官网 请点击下面工程名称&#xff0c;跳转到代码的仓库页面&#xff0c;将工程 下载下来 Demo Code 里有详细的注释 代码&#xff1a;TestNDK 参考文献 Android NDK 从入门到精通&#xff08;汇总篇&#xff09;Android JNI(一)——NDK与JNI基础Android之…

宝塔面板Django项目部署(无数据库版)

近日在学习使用宝塔面板部署Django开发的web项目&#xff0c;走了不少弯路花了3天的时间才完成下面的文字&#xff0c;希望这篇文字能给正在摸索中的人带去点帮助。 一、安装宝塔面板 打开宝塔面板的官方网站(https://www.bt.cn/new/index.html).点击" " 会看到: 当…

C++笔记之vector的reserve()和capacity()用法

C笔记之vector的reserve()和capacity()用法 code review! 代码 #include <vector> #include <iostream>int main() {std::vector<int> myVector;std::cout << "Current size: " << myVector.size() << std::endl;std::cout …

记录每日LeetCode 141.环形链表 Java实现

题目描述&#xff1a; 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链…

生成模型和判别模型工作原理介绍

您解决的大多数机器学习和深度学习问题都是从生成模型和判别模型中概念化的。在机器学习中,人们可以清楚地区分两种建模类型: 将图像分类为狗或猫属于判别性建模生成逼真的狗或猫图像是一个生成建模问题神经网络被采用得越多,生成域和判别域就增长得越多。要理解基于这些模型…

【雕爷学编程】MicroPython动手做(12)——掌控板之Hello World 2

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

如何用电脑同时管理多个微信号,实现多个微信聚合聊天?

我们知道&#xff0c;当使用电脑端微信时&#xff0c;只需要按住enter键并快速点击微信图标&#xff0c;就可以实现微信多开。 缺点&#xff1a;登录微信的数量不好控制&#xff0c;跳出的登录对话框过多需要手动关闭&#xff0c;而且管理起来非常麻烦&#xff01; 那么&#…

SpringSecurity的实现

SpringSecurity的实现 1.依赖 security起步依赖 redis起步依赖 fastjson jjwt生成token mybatis-plus起步依赖 mysql连接 web起步 test起步 <!-- security启动器 --><dependency><groupId>org.springframework.boot</groupId><arti…

万年历【小游戏】(Java课设)

系统类型 Java实现的小游戏 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Idea或eclipse 运行效果 更多Java课设系统源码地址&#xff1a;更多Java课设系统源码地址 更多Java小游戏运行效果展示&#xff1a;更多Java小游戏运行效果展…

Harris角点检测步骤

Harris角点检测步骤

【MySQL】事务之MVCC(多版本并发控制)

【MySQL】事务-MVCC 一、数据库并发的三种场景二、MVCC2.1 3个记录隐藏字段2.2 undo log&#xff08;撤销日志&#xff09;2.3 模拟MVCC---update2.3.1 delete2.3.2 insert2.3.3 select 2.4 Read View2.5 整体流程 三、RR&#xff08;可重复读&#xff09;与RC&#xff08;读提…

Linux之Shell 编程详解(二)

第 9 章 正则表达式入门 正则表达式使用单个字符串来描述、匹配一系列符合某个语法规则的字符串。在很多文 本编辑器里&#xff0c;正则表达式通常被用来检索、替换那些符合某个模式的文本。在 Linux 中&#xff0c;grep&#xff0c; sed&#xff0c;awk 等文本处理工具都支持…

敏捷项目经理和传统项目经理有哪些区别?

敏捷项目经理和传统项目管理有哪些区别&#xff0c;经常有咱们群里的伙伴们问&#xff0c;敏捷项目经理注重迅速响应需求变化、灵活应变&#xff0c;而传统项目经理更为注重计划的制定与执行。作为项目经理&#xff0c;敏捷也是必要的技能&#xff0c;今天就为大家分享一下敏捷…

LeetCode刷题总结 - 面试经典 150 题 -持续更新

LeetCode刷题总结 - 面试经典 150 题 - 持续更新 其他系列数组 / 字符串88. 合并两个有序数组27. 移除元素26. 删除有序数组中的重复项80. 删除有序数组中的重复项 II169. 多数元素189. 轮转数组121. 买卖股票的最佳时机122. 买卖股票的最佳时机 II55. 跳跃游戏274. H 指数380.…