【Vue2+Element ui通用后台】头部

news2024/11/26 4:37:00

文章目录

  • header

header

在 components 中新建 CommonHeader.vue 组件来完成头部组件的编写

<template>
  <div class="header-container">
    <div class="l-content">
      <el-button icon="el-icon-menu" size="mini"></el-button>
      <span class="text">首页</span>
    </div>
    <div class="r-content">
      <el-dropdown>
        <span class="el-dropdown-link">
          <img class="user" src="../assets/logo.png"/>
        </span>
        <el-dropdown-menu slot="dropdown">
          <el-dropdown-item>个人中心</el-dropdown-item>
          <el-dropdown-item>退出</el-dropdown-item>
        </el-dropdown-menu>
      </el-dropdown>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {};
  },
  methods: {},
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="less" scoped>
.header-container {
  padding: 0 20px;
  background-color: #333;
  height: 60px;
  display: flex;
  justify-content: space-between;
  align-items: center;

  .text {
    color: white;
    font-size: 14px;
    margin-left: 10px;
  }

  .r-content{
    .user{
      width: 40px;
      height: 40px;
      border-radius: 50%;
    }
  }
}
</style>

然后在 Main.vue 中引入,同时去掉左侧的空隙,增加样式

<template>
  <div>
    <el-container>
      <el-aside width="200px">
        <CommonAside />
      </el-aside>
      <el-container>
        <el-header>
          <common-header/>
        </el-header>
        <el-main><router-view></router-view></el-main>
      </el-container>
    </el-container>
  </div>
</template>

<script>
import CommonAside from "@/components/CommonAside";
import CommonHeader from "@/components/CommonHeader";
export default {
  name: "Main",
  components:{
    CommonAside,
    CommonHeader
  }
}
</script>

<style scoped>
.el-header{
  padding: 0;
}
</style>

其中右侧我们用的是 Dropdown 下拉菜单,直接复制示例代码改下就可以,运行程序,效果如下:
在这里插入图片描述
下面我们实现点击头部的图标切换左侧菜单的展开、收缩状态,要实现这个功能,我们用到了 Vuex,由于我们用的是 vue2,所以可以看这个文档:VueX v3.x,在之前的学习中,我写过关于 vuex 的笔记了,可以点击:之前Vuex的学习笔记 来查看

首先需要引入 npm i vuex@3.6.2,安装成功后,我们在 src 下新建 store 文件夹,然后新建 tab.js 用来管理左侧菜单

export default {
    state:{
        isCollapse:false//控制菜单展开/收起
    },
    mutations:{
        // 修改菜单展开、收起的方法
        collapseMenu(state){
            state.isCollapse = !state.isCollapse;
        }
    }
}

然后新建 index.js

import Vue from 'vue'
import Vuex from 'vuex'
import tab from './tab'

Vue.use(Vuex)

export default new Vuex.Store({
    modules:{
        tab
    }
})

最后需要在 main.js 中挂载的 vue 实例中


import store from './store'
......

new Vue({
  router,
  store,
  render: h => h(App),
}).$mount('#app')

接下来我们在头部的按钮增加点击事件,修改 CommonHeader.vue

<template>
  <div class="header-container">
    <div class="l-content">
      <el-button icon="el-icon-menu" size="mini" @click="handleMenu"></el-button>
      ......
    </div>
    ......
  </div>
</template>

<script>
export default {
  data() {
    return {};
  },
  methods: {
    handleMenu(){
      this.$store.commit('collapseMenu')
    }
  },
}
</script>

之所以我们能在这里使用this.$store就是因为我们在上一步把在 main.js 中把 store 挂载到了 vue 实例上,按钮增加了点击事件,调用了collapseMenu方法,修改了 isCollapse 的值

然后我们在 CommonAside.vue 中使用即可,我们需要在 computed 下定义一个变量,返回 vuex 对应模块的对应字段即可

computed:{
    ......
    isCollapse(){
      return this.$store.state.tab.isCollapse;
    }
  }

而菜单中 collapse 来控制是否展开或折叠,直接使用刚才 computed 中定义的变量即可

<el-menu
        ......
        :collapse="isCollapse"
       	......>
     ......
    </el-menu>

现在效果如下:
在这里插入图片描述
现在修改一些细节,当折叠后,左侧的 通用后台管理 的文字 需要展示为 后台,修改 CommonAside 页面,根据是否折叠展示相应文字即可

<h3>{{isCollapse?'后台':'通用后台管理'}}</h3>

然后折叠后,头部和左侧有一段距离,这是因为在 Main.vue 中,我们的el-aside有一个固定宽度,我们改为自适应即可

<el-aside width="auto">
	<CommonAside />
</el-aside>

然后左侧菜单的右侧和头部连接的地方有一个空隙,查看样式是因为有一个 border,所以修改 CommonAside 的样式:

<style lang="less" scoped>
......
.el-menu{
  ......
  border-right: none;
}
</style>

运行程序:
在这里插入图片描述

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

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

相关文章

【MySQL】索引基础介绍

一、常见的存储引擎有哪些&#xff1f;区别是什么&#xff1f; Mysql 默认的存储引擎是&#xff1a;InnoDB&#xff0c;具有支持事务、行级锁、高并发访问性能。MyIsAM&#xff1a;访问速度快&#xff0c;实际运用如果是以读和插入操作为主&#xff0c;并对事物完整性和并发性…

面向对象程序设计期末项目总结

面向对象程序设计期末项目总结 开发前准备 MysqlNavicatTomCatIDEA 一&#xff0c;配置项目环境 右键项目名&#xff0c;添加新模块 命名后右键新建的模块 选中Web模块 到此项目创建完毕&#xff0c;接下来是配置环境。 打开IDEA–>File找到Project Structure 添加所…

Pikachu(皮卡丘)靶场中SQL注入

Pikachu靶场中SQL注入1.Pikachu(皮卡丘)靶场中SQL注入1.1.数字型注入1.2.字符型注入1.3.搜索型注入1.4.xx型注入1.5.insert/update注入1.6.delete注入1.7.http头注入1.8.盲注(base on boolian)1.9.盲注(base on time)1.10.宽字节注入1.Pikachu(皮卡丘)靶场中SQL注入 若遇到不链…

基于java+springboot+mybatis+vue+mysql的冬奥会科普平台

项目介绍 基于SpringBoot框架的冬奥会科普平台利用网络沟通、计算机信息存储管理&#xff0c;有着与传统的方式所无法替代的优点&#xff0c;系统采用java语言开发&#xff0c;前端采用vue技术&#xff0c;数据库采用mysql进行数据存储。比如计算检索速度特别快、可靠性特别高…

大数据如何在制造业中进行应用?数据宝董事长汤寒林现身数字化年会讲了这个事

12月8日1670923102263472480日&#xff0c;2022中国数字化年会成功在线上举办&#xff01;本届年会以“向变而生”为主题&#xff0c;历时三天&#xff0c;特别打造了主论坛、高峰论坛与行业数智化论坛三大板块&#xff0c;60余位专家学者与来自各领域各行业数字化领军人物 通过…

前端基础(五)_CSS文本文字属性

CSS文本文字属性 1、文字属性 1.1、字号 font-size&#xff1a;38px; 浏览器默认16px; 1.2、字体 font-family: 如果字体名称包含空格&#xff0c;字体名称上加引号&#xff1b; 中文字体名称加引号&#xff1b; 多个字体名称作为一个回退系统来保存&#xff0c;如果第一个不…

什么才是写博客初心如何坚持

为何写机器人课程博客并一直坚持&#xff1f;&#xff08;2021&#xff09; 创新源自真心&#xff0c;“乱”创新的课程徒有其表&#xff0c;“不”创新的课程逐渐凋零。 个人觉得&#xff0c;课程教学创新宏观上的目标是让学生更好的认识自己并适应社会发展和变化&#xff1b…

停车场管理系统

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 主要用jsp,数据库用MySQL 分为前台用户和后台管理员 前台用户 主界面是一个区域内的两到三个停车场&#xff0c;然后 可…

virtualenv系列 (2) · 系统环境与虚拟环境

文章目录1. 怎样算是一套Python环境&#xff1f;2. 系统环境 VS 虚拟环境3. 虚拟环境最佳实践1. 怎样算是一套Python环境&#xff1f; 首先&#xff0c;我们得先弄清楚&#xff1a;怎样算是一个Python环境&#xff1f;然后再去区分系统环境和虚拟环境。简单地说&#xff0c;在…

[附源码]Python计算机毕业设计SSM基于web的家教管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

阿里5位高级架构师耗时两年共同研发《Redis入门手册》

在我们日常的开发中&#xff0c;无不都是使用数据库来进行数据的存储&#xff0c;由于一般的系统任务中通常不会存在高并发的情况&#xff0c;所以这样看起来并没有什么问题&#xff0c;可是一旦涉及大数据量的需求&#xff0c;比如一些商品抢购的情景&#xff0c;或者是主页访…

喜报!Coremail两大方案入选“2022年软件行业典型应用案例”

12月5日&#xff0c;由中国软件行业协会联合中软国际有限公司、江苏省软件行业协会主办的2022中国程序员节在江苏南京圆满落幕&#xff0c;本次活动聚焦当前我国对数字技术创新及应用发展的现实需求&#xff0c;以开源创新、软件根技术、平台工具等热点议题&#xff0c;探讨影响…

Spring Boot 配置文件 · properties 基本语法 · yml 基本语法 · yml 配置不同数据以及 null · yml 配置文件读取

一、配置文件作用二、配置文件的格式三、properties 配置文件说明3.1 properties 基本语法3.2 读取配置文件3.3 properties 缺点分析四、yml 配置文件说明4.1 yml 基本语法4.2 yml 与 properties 格式对比4.3 yml 配置不同数据类型以及 null4.4 yml 配置读取4.4.1 读取配置文件…

Win11十二月系统更新了什么内容?

微软今天发布了12月最新的累积更新补丁&#xff0c;根据Microsoft 支持页面&#xff0c;build 22621.963 现在会在用户 OneDrive 上的存储空间不足时在“设置”应用程序中警告用户&#xff0c;将 Windows Spotlight 与主题设置相结合&#xff0c;修复任务管理器应用程序的界面问…

SSM垃圾分类网站

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 1,系统&#xff1a;Vindows10 2.软件&#xff1a;IDEA.SQLyog 3.数据库环境&#xff1a;ySQL 4.开源框架&#xff1a;sp…

毕业设计-基于SpringBoot幼儿园管理系统

环境&#xff1a;开发工具&#xff1a;idea&#xff0c;数据库&#xff1a;MySQL5.7 jdk1.8 架构&#xff1a;SpringBoot&#xff0c;前端HTML 主要功能 管理员&#xff1a; 用户管理&#xff08;编辑用户、删除用户、添加用户、查询指定用户&#xff09; 角色管理&#xff08;…

软件测试进阶——测试划分

文章目录按照测试对象划分界面测试可靠性测试容错性测试文档测试兼容性测试易用性测试安装和卸载测试安全测试性能测试按照是否查看代码黑盒测试白盒测试灰盒测试按照开发阶段划分单元测试集成测试系统测试回归测试冒烟测试验收测试按照实施组织划分α测试β测试按照是否运行划…

数据可视化常用工具推荐

数据可视化是将数据分析的结果以图形、表格等形式展示出来&#xff0c;这样能我们更加清晰、明了的理解分析结果、判断数据走势等&#xff0c;让没有进行过数据分析的人也能清楚的了解数据中所含有的规律、趋势等。下面小编将向大家介绍几种常用的数据可视化工具&#xff0c;分…

计算机毕业设计php+vue基于微信小程序的高校新生报到管理小程序

项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理程序应运而生,各行各业相继进入信息管理时代,高校新生报到管理小程序就是信息时代变革中的产物之一。 任何程序都要…

外汇天眼:爆雷跑路!DingHui索要高额佣金,结果客户一分钱没拿到!

我们都知道&#xff0c;外汇交易佣金是外汇平台杠杆进入中国市场时的产物&#xff0c;也可以将其简单的理解为是在自己原本的手续费之外&#xff0c;额外增加的一些交易成本。 不过随着外汇市场的发展&#xff0c;在外汇交易平台进行交易也是越来越正规化&#xff0c;现如今正…