Element ui侧边导航栏的使用笔记

news/2024/7/9 23:50:33 标签: elementui, vue

Element ui侧边导航栏

  • 一、Vue使用Element ui
    • 1、npm安装
    • 2、main.js 引入 Element
    • 3、拷贝导航组件
  • 二、样式调整
    • 1、导航栏宽度
    • 2、导航栏高度
    • 3、默认颜色设置
    • 4、el-submenu样式设置
    • 5、.el-menu-item样式设置
  • 三、数据
    • 1、导航标题
    • 2、vue页面引入数据
    • 3、循环生成导航栏
    • 4、点击跳转路由

一、Vue使用Element ui

1、npm安装

npm i element-ui -S

2、main.js 引入 Element

import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import App from './App.vue';

Vue.use(ElementUI);

3、拷贝导航组件

        <el-row>
          <el-col>
            <div class="tachead">
               <img src="static/images/leftico.png" alt="">
               <span>菜单管理</span>
            </div>
            <el-menu
              default-active="1-1"
              class="el-menu-vertical-demo"
              @open="handleOpen"
              @close="handleClose"
              background-color="#f0f9fd"
              text-color="black"
              active-text-color="white"
            >
              <el-submenu index="1">
                <template slot="title">
                  <i class="el-icon-location"></i>
                  <span>管理信息</span>
                </template>
                <el-menu-item-group>
                  <el-menu-item index="1-1">首页</el-menu-item>
                  <el-menu-item index="1-2">用户管理</el-menu-item>
                  <el-menu-item index="1-3">退出</el-menu-item>
                </el-menu-item-group>
              </el-submenu>
            </el-menu>
          </el-col>
        </el-row>

二、样式调整

1、导航栏宽度

<el-col :span="12"> 

官网用的是span比例,我改为1太窄,2太宽,所以删除,自己定个宽度。

2、导航栏高度

(1)、整个页面index为上下两部分,最上面部分为header,下面section又分左边导航el-row、右边内容显示main,header固定高度,导航占满剩余页面高度。
(2)、整个页面设置成flex,方向column,section设置flex: 1,el-row设置height: 100%;同时设置#app{height: 100%;}和index{height: 100%;}

3、默认颜色设置

     <el-menu
        default-active="1-1"
        class="el-menu-vertical-demo"
        @open="handleOpen"
        @close="handleClose"
        background-color="#f0f9fd"  //导航栏背景色
        text-color="black"  //字体颜色
        active-text-color="white"  //选中时字体颜色
      >

4、el-submenu样式设置

官网没有提供属性设置el-submenu样式,我觉得el-submenu高度太高,需要降低高度。去源文件中修改el-submenu高度。源文件地址:./node_modules/element-ui/lib/theme-chalk/index.css。

el-menu-item,.el-submenu__title{height:40px;line-height:40px;position:relative;-webkit-box-sizing:border-box;white-space:nowrap;list-style:none}

修改height和line-height:40px;
这里也可以修改el-submenu字体和颜色等

5、.el-menu-item样式设置

(1)、和el-submenu空隙太大

.el-menu-item-group {
                margin-top: -13px;

(2)、字体大小、宽度、高度、选中时背景色

    .el-menu-item-group {
      margin-top: -13px;
      .el-menu-item {
        font-size: 12px;
        min-width: 100%;
        height: 35px;
        line-height: 35px;
          }                        
      .el-menu-item.is-active {
        background-color: @small-blue !important;
      }
    }

三、数据

1、导航标题

export let menudata = [
  {
    menufirst: "管理信息",
    menusecond: [
      { title: "首页", url: "/" },
      { title: "用户管理", url: "/user" },
      { title: "退出", url: "/logout" }
    ]
  },
  {
    menufirst: "产品管理",
    menusecond: [
      { title: "产品分类列表", url: "/category/show" },
      { title: "产品列表", url: "/product/show" }
    ]
  },
  {
    menufirst: "采购管理",
    menusecond: [
      { title: "供应商管理", url: "/purchase/vender" },
      { title: "新添采购单", url: "/purchase/pomain/add" },
      { title: "采购单了结", url: "/purchase/pomain/end" },
      { title: "采购单查询", url: "/purchase/pomain/queryItem" }
    ]
  },
  {
    menufirst: "仓管管理",
    menusecond: [
      { title: "入库登记", url: "/stock/instock" },
      { title: "出库登记", url: "/stock/outstockr" },
      { title: "库存查询", url: "/stock/query" },
      { title: "库存盘点", url: "/stock/checkstock" }
    ]
  },
  {
    menufirst: "销售管理",
    menusecond: [
      { title: "客户管理", url: "/customer" },
      { title: "新添销售单", url: "/sell/somain/add" },
      { title: "销售单了结", url: "/sell/somain/end" },
      { title: "销售单查询", url: "/sell/somain/query" }
    ]
  },
  {
    menufirst: "财务收支",
    menusecond: [
      { title: "收款登记", url: "/finance/receipt" },
      { title: "付款登记", url: "/finance/pay" },
      { title: "收支查询", url: "/finance/query" }
    ]
  },
  {
    menufirst: "月度报表",
    menusecond: [
      { title: "月度采购报表", url: "/report/pomain/main" },
      { title: "月度销售报表", url: "/report/somain/main" },
      { title: "月度出库报表", url: "/report/outstock/main" },
      { title: "月度入库报表", url: "/report/instock/main" },
      { title: "月度库存报表", url: "/report/stock/main" },
      { title: "月度收支报表", url: "/report/payment/main" }
    ]
  }
];

vue_163">2、vue页面引入数据

<script>
import { systime } from "../api/index.js"; // 引入方法
import { menudata } from '../comdata/indexdata'
export default {
  name: "index",
  data() {
    return {
      date: new Date(),
      menudata,
    };
  },

3、循环生成导航栏

<el-submenu v-for="(item,index) in menudata" :key="index" :index="index + ''">
   <template slot="title">
     <i class="el-icon-postcard"></i>
     <span>{{ item.menufirst }}</span>
   </template>
   <el-menu-item-group v-if="item.menusecond&&item.menusecond.length>0">
     <el-menu-item v-for="(menuse,menusei) in item.menusecond" :key="menusei" :index="menuse.url" @click="routhTo(menuse.url)">
          <i class="el-icon-caret-right"></i>
           <span>{{ menuse.title }}</span>
     </el-menu-item>

   </el-menu-item-group>
</el-submenu>

4、点击跳转路由

 methods: {
    // 导航栏跳转
    routhTo(value) {
      this.$router.push(value);
      if (value == "/login") {
        // 退出登录
        getLogout().then((res) => {
          if (res.code == 2) {
            this.$message({
              message: res.message,
              type: "success",
            });
          } else {
            this.$message({
              message: res.message,
              type: "error",
            });
          }
        });
      }
    },
  },

http://www.niftyadmin.cn/n/1409630.html

相关文章

浅谈Java分布式计算

http://www.cnblogs.com/dennisit/archive/2013/03/19/2969175.html

itunes备份包括哪些内容_品牌宣传片包括哪些内容?

点击上面“蓝字”关注&#xff0c;匠仁影视传媒在如今信息化的时代&#xff0c;人们更愿意接声话同步的自媒体表达方式。各大企业、品牌也开始选择用宣传片的方式&#xff0c;扩大自身影响力。那么品牌宣传片包括哪些内容?1.品牌优势品牌宣传片&#xff0c;本就是通过声音画面…

leetcode 485. Max Consecutive Ones

485. Max Consecutive Ones 最大连续1的个数 Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: [1,1,0,1,1,1] Output: 3 Explanation: The first two digits or the last three digits are consecutive 1s.The maximum num…

JS对象的浅拷贝和深拷贝

JS对象的浅拷贝和深拷贝一、值类型和引用类型1、js数据类型2、引用拷贝二、浅拷贝1、循环拷贝&#xff08;for of&#xff09;2、spread运算符&#xff08;...&#xff09;3、object.assign()方法三、深拷贝1、JSON方法2、递归循环四、浅拷贝和深拷贝的应用1、concat()方法2、f…

hibernate回滚

首先看一段代码 public class UserManagerImpl implements UserManager { public void addUser(User user) {Session session null;try {//session HibernateUtils.getSession();session HibernateUtils.getSessionFactory().getCurrentSession();session.beginTransaction(…

安卓手机怎么设置蓝牙耳机弹窗动画_难道是智商税?TWS降噪耳机对比:贵的就是好的?...

原标题&#xff1a;难道是智商税&#xff1f;TWS降噪耳机对比&#xff1a;贵的就是好的&#xff1f;自从iPhone 7取消耳机孔开始&#xff0c;拥有耳机孔的手机变得越来越少。厂商会在包装里附带一条充电口转接音频线作为替代&#xff0c;但明显增加的日常充电需求也在促使着有线…

索引长度过长 ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

1.发现问题 今天在修改innodb表的某个列的长度时&#xff0c;报如下错误&#xff1a; [html] view plaincopy print?alter table test2 modify column id varchar(500); ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes alter table test2 mo…

阻塞和非阻塞的区别

简单点说: 阻塞就是干不完不准回来&#xff0c; 非阻塞就是你先干&#xff0c;我现看看有其他事没有&#xff0c;完了告诉我一声 我们拿最常用的send和recv两个函数来说吧... 比如你调用send函数发送一定的Byte,在系统内部send做的工作其实只是把数据传输(Copy)到TCP/IP协议…