首页 > 其他分享 >左侧菜单栏实现

左侧菜单栏实现

时间:2024-08-19 22:38:06浏览次数:9  
标签:index 菜单 name 实现 menu 菜单栏 -- 左侧 path

效果图

代码

<template>
  <div class="app">
    <span class="menu-btn">菜单列表</span>
    <div class="menu-container">
      <div class="menu-list">
        <!-- <div class="menu-list-item">主页</div> -->
        <div
          v-for="(item_x, index_x) in menu_list"
          :key="index_x"
          @mouseenter="menuMouseEnter(index_x)"
          @mouseleave="menuMouseLeave"
          :class="[
            'menu-list-item',
            active_menu_index == index_x ? 'active' : '',
          ]"
        >
          {{ item_x.name }}
          <template v-if="item_x.child">
            <span class="el-icon-arrow-right icon-right"></span>
            <div class="menu-c-list">
              <div
                class="menu-list-item"
                v-for="(item_y, index_y) in item_x.child"
                :key="index_x + '_' + index_y"
              >
                {{ item_y.name }}
              </div>
              <!-- <div class="menu-list-item">菜单-1.2</div>
            <div class="menu-list-item">菜单-1.3</div>
            <div class="menu-list-item">菜单-1.4</div> -->
            </div>
          </template>
        </div>
        <!-- <div class="menu-list-item">
          菜单-2
          <span class="el-icon-arrow-right icon-right"></span>
          <div class="menu-c-list">
            <div class="menu-list-item">菜单-2.1</div>
            <div class="menu-list-item">菜单-2.2</div>
            <div class="menu-list-item">菜单-2.3</div>
          </div>
        </div>
        <div class="menu-list-item">
          菜单-3
          <span class="el-icon-arrow-right icon-right"></span>
          <div class="menu-c-list">
            <div class="menu-list-item">菜单-3.1</div>
            <div class="menu-list-item">菜单-3.2</div>
          </div>
        </div> -->
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      menu_list: [
        {
          name: '主页',
          path: '/home',
        },
        {
          name: '菜单-1',
          child: [
            {
              name: '菜单-1.1',
              path: '/menu-1.1',
            },
            {
              name: '菜单-1.2',
              path: '/menu-1.2',
            },
            {
              name: '菜单-1.3',
              path: '/menu-1.3',
            },
            {
              name: '菜单-1.4',
              path: '/menu-1.4',
            },
          ],
        },
        {
          name: '菜单-2',
          child: [
            {
              name: '菜单-2.1',
              path: '/menu-2.1',
            },
            {
              name: '菜单-2.2',
              path: '/menu-2.2',
            },
          ],
        },
        {
          name: '菜单-3',
          child: [
            {
              name: '菜单-3.1',
              path: '/menu-3.1',
            },
          ],
        },
      ],
      active_menu_index: 0,
    }
  },
  methods: {
    menuMouseEnter(index) {
      this.active_menu_index = index
    },
    menuMouseLeave() {
      this.active_menu_index = 0
    },
  },
}
</script>

<style lang="less" scoped>
.app {
  --menu-width: 100px;
}
.menu-btn {
  display: inline-block;
  padding: 4px 6px;
  background-color: blue;
  color: #fff;
  cursor: pointer;
}
.menu-container {
  .menu-list {
    display: flex;
    flex-direction: column;
    width: var(--menu-width);
    background-color: #bbbbbb;
    border: 1px solid #000;
    border-bottom: none;
    .menu-list-item {
      position: relative;
      display: flex;
      justify-content: center;
      align-items: center;
      padding: 4px 10px;
      border-bottom: 1px solid #000;
      cursor: pointer;
      .icon-right {
        position: absolute;
        right: 0;
      }
      &.active {
        .menu-c-list {
          display: block;
        }
      }
    }
    .menu-c-list {
      display: none;
      position: absolute;
      left: 100%;
      top: -1px;
      width: var(--menu-width);
      background-color: #bbbbbb;
      border: 1px solid #000;
      border-bottom: none;
    }
  }
}
</style>

标签:index,菜单,name,实现,menu,菜单栏,--,左侧,path
From: https://www.cnblogs.com/it774274680/p/18368250

相关文章

  • 万兆以太网协议栈的FPGA实现(三):万兆网CRC
    参考:基于FPGA的千兆以太网的实现(3)_以太网crc计算-CSDN博客 CRC802.11来自将8位数据同时输入,再输出32位CRC数值;其能成功实现的原因就是因为并行化。(下路仅是部分的计算步骤)结合千兆网CRC的计算思想,我们只需要把第一轮单字节CRC的结果作为第二轮CRC的开始,就可以完成任务。......
  • 生产者消费者问题-C++代码实现
    生产者消费者问题C++代码本文主要记录面试中手撕代码环节比较经常考察的生产者消费者问题,方便后续巩固和查看#include<iostream>#include<thread>#include<mutex>#include<condition_variable>#include<queue>#include<functional>usingnamespacestd;classProd......
  • lvs+keepalive大战haproxy+keepalive实现高可用集群
    华子目录lvs+keepalive实验架构实验前的准备工作1.主机准备2.KA1和KA2上安装`lvs+keepalive`3.webserver1和webserver2上安装httpd4.制作测试效果网页内容5.所有主机关闭`firewalld`和`selinux`6.开启httpd服务实验步骤1.webserver1和webserver2上配置vip2.webserver1和......
  • 深度解析软件开发中的视频“上墙”技术实现
    目录引言技术概述1.有线连接技术2.无线连接技术2.1Miracast2.2AirPlay2.3Chromecast3.软件解决方案3.1AirServer3.2ApowerMirror4.实现细节与注意事项5.开发工具与资源结论引言   随着科技的发展,视频上墙技术已成为现代生活中不可或缺的一部......
  • 层次聚类算法原理及Python实现
    层次聚类算法(HierarchicalClusteringMethod)是一种基于簇间相似度在不同层次上分析数据,从而形成树形聚类结构的算法。它主要分为两种形式:凝聚层次聚类(自下而上)和分裂层次聚类(自上而下)。以下将详细介绍凝聚层次聚类的原理与步骤:一、原理凝聚层次聚类算法的基本思想是将每个样......
  • 谱聚类算法原理及Python实现
    谱聚类算法(SpectralClustering)是一种基于图论的聚类算法,其原理与步骤可以详细阐述如下:一、原理谱聚类算法建立在谱图理论基础上,它将聚类问题转化为图的最优划分问题。具体来说,算法将数据集中的每个对象看作是图的顶点V,将顶点间的相似度量化作为相应顶点连接边E的权值,从而得......
  • 用UDP协议实现跨主机文件传输,实现下载与上传文件(FTFP)
    要求:实现下载服务器目录上任意文件与上传本地文件到服务器特定目录下tftp协议概述简单文件传输协议,适用于在网络上进行文件传输的一套标准协议,使用UDP传输特点:是应用层协议基于UDP协议实现数据传输模式:octet:二进制模式(常用)服务器端:tftp下载模型TFTP通信过程总结......
  • 实现网络聊天室(UDP)
    项目需求:如果有用户登录,其他用户可以收到这个人的登录信息如果有人发送信息,其他用户可以收到这个人的群聊信息如果有人下线,其他用户可以收到这个人的下线信息服务器可以发送系统信息服务器端:#include<myhead.h>structsockaddr_inserveraddr,caddr;enumtype_t//枚举{......
  • 牛客网习题——通过C++实现
    一、目标实现下面4道练习题增强C++代码能力。1.求1+2+3+...+n_牛客题霸_牛客网(nowcoder.com)2.计算日期到天数转换_牛客题霸_牛客网(nowcoder.com)3.日期差值_牛客题霸_牛客网(nowcoder.com)4.打印日期_牛客题霸_牛客网(nowcoder.com)二、对目标的实现 1.求1+2+3+......
  • springboot+vue电子商务网站的设计与实现【程序+论文+开题】-计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,电子商务已成为全球经济的重要组成部分,深刻改变了人们的消费习惯与商业模式。电子商务网站作为连接商家与消费者的桥梁,不仅拓宽了市场边界,还极大提升了交易的便捷性和效率。然而,随着市场竞争的日益激烈,用户对......