ruoyi框架修改左侧菜单样式

菜单效果

ruoyi前端框架左侧的菜单很丑,我们需要修改一下样式,下面直接看效果。

修改代码

1、sidebar.scss

.el-menu-item, .el-submenu__title {overflow: hidden !important;text-overflow: ellipsis !important;white-space: nowrap !important;// 每个菜单增加下边框,新增border-bottom: 1px solid #3c4f66;}// menu hover.submenu-title-noDropdown,.el-submenu__title {&:hover {// background-color: rgba(0, 0, 0, 0.06) !important;// 菜单从左网友颜色渐变,新增background: linear-gradient(270deg, rgb(31, 45, 61), rgb(66 105 149)) !important;border-left: 3px solid rgb(145, 196, 247);}}

2、Navbar.vue

因为navbar这个文件,好多页面都引用了,所以在这个页面写的样式会全局通用。

 li.el-menu-item.is-active{background: linear-gradient(270deg, rgb(31, 45, 61), rgb(66 105 149)) !important;border-left: 3px solid rgb(145, 196, 247);font-size: 16px;}li.el-menu-item:hover{background: linear-gradient(270deg, rgb(31, 45, 61), rgb(66 105 149)) !important;border-left: 3px solid rgb(145, 196, 247);font-size: 16px;}.submenu-title-noDropdown:first-child{border-top: 1px solid #3c4f66;}.el-submenu .el-menu-item {padding: 0 20px 0 0px;}#app .sidebar-container .svg-icon{margin-right: 6px;}.el-submenu__title{padding-left: 10px !important;}.el-menu-item{padding-left: 28px !important;}.submenu-title-noDropdown{padding-left: 10px !important;}

 3、修改结束

经过上面的代码,就可以有左侧菜单的效果。


-----华丽的分割线,以下是凑字数,大家不用花时间看,快去改代码-----

-----华丽的分割线,以下是凑字数,大家不用花时间看,快去改代码-----

-----华丽的分割线,以下是凑字数,大家不用花时间看,快去改代码-----

完整的代码

1、sidebar.scss

#app {.main-container {height: 100%;transition: margin-left .28s;margin-left: $base-sidebar-width;position: relative;}.sidebarHide {margin-left: 0!important;}.sidebar-container {-webkit-transition: width .28s;transition: width 0.28s;width: $base-sidebar-width !important;background-color: $base-menu-background;height: 100%;position: fixed;font-size: 0px;top: 0;bottom: 0;left: 0;z-index: 1001;overflow: hidden;-webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35);box-shadow: 2px 0 6px rgba(0,21,41,.35);// reset element-ui css.horizontal-collapse-transition {transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;}.scrollbar-wrapper {overflow-x: hidden !important;}.el-scrollbar__bar.is-vertical {right: 0px;}.el-scrollbar {height: 100%;}&.has-logo {.el-scrollbar {height: calc(100% - 50px);}}.is-horizontal {display: none;}a {display: inline-block;width: 100%;overflow: hidden;}.svg-icon {margin-right: 16px;}.el-menu {border: none;height: 100%;width: 100% !important;}.el-menu-item, .el-submenu__title {overflow: hidden !important;text-overflow: ellipsis !important;white-space: nowrap !important;// 每个菜单增加下边框border-bottom: 1px solid #3c4f66;}// menu hover.submenu-title-noDropdown,.el-submenu__title {&:hover {// background-color: rgba(0, 0, 0, 0.06) !important;background: linear-gradient(270deg, rgb(31, 45, 61), rgb(66 105 149)) !important;border-left: 3px solid rgb(145, 196, 247);}}& .theme-dark .is-active > .el-submenu__title {color: $base-menu-color-active !important;}& .nest-menu .el-submenu>.el-submenu__title,& .el-submenu .el-menu-item {min-width: $base-sidebar-width !important;&:hover {background-color: rgba(0, 0, 0, 0.06) !important;}}& .theme-dark .nest-menu .el-submenu>.el-submenu__title,& .theme-dark .el-submenu .el-menu-item {background-color: $base-sub-menu-background !important;&:hover {background-color: $base-sub-menu-hover !important;}}}.hideSidebar {.sidebar-container {width: 54px !important;}.main-container {margin-left: 54px;}.submenu-title-noDropdown {padding: 0 !important;position: relative;.el-tooltip {padding: 0 !important;.svg-icon {margin-left: 20px;}}}.el-submenu {overflow: hidden;&>.el-submenu__title {padding: 0 !important;.svg-icon {margin-left: 20px;}}}.el-menu--collapse {.el-submenu {&>.el-submenu__title {&>span {height: 0;width: 0;overflow: hidden;visibility: hidden;display: inline-block;}}}}}.el-menu--collapse .el-menu .el-submenu {min-width: $base-sidebar-width !important;}// mobile responsive.mobile {.main-container {margin-left: 0px;}.sidebar-container {transition: transform .28s;width: $base-sidebar-width !important;}&.hideSidebar {.sidebar-container {pointer-events: none;transition-duration: 0.3s;transform: translate3d(-$base-sidebar-width, 0, 0);}}}.withoutAnimation {.main-container,.sidebar-container {transition: none;}}
}// when menu collapsed
.el-menu--vertical {&>.el-menu {.svg-icon {margin-right: 16px;}}.nest-menu .el-submenu>.el-submenu__title,.el-menu-item {&:hover {// you can use $subMenuHoverbackground-color: rgba(0, 0, 0, 0.06) !important;}}// the scroll bar appears when the subMenu is too long>.el-menu--popup {max-height: 100vh;overflow-y: auto;&::-webkit-scrollbar-track-piece {background: #d3dce6;}&::-webkit-scrollbar {width: 6px;}&::-webkit-scrollbar-thumb {background: #99a9bf;border-radius: 20px;}}
}

2、Navbar.vue

<template><div class="navbar"><hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" /><!-- <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/> --><!-- <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/> --><div class="right-menu"><!-- <template v-if="device!=='mobile'"> --><span class="right-menu-item hover-effect" style="color: #ffffff;"><i style="color: #a9abad;" class="el-icon-medal"></i>{{this.$store.state.user.name}}</span><span class="right-menu-item hover-effect">{{topTime}}</span><!-- <search id="header-search" class="right-menu-item" /> --><!-- <el-tooltip content="源码地址" effect="dark" placement="bottom"><ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" /></el-tooltip><el-tooltip content="文档地址" effect="dark" placement="bottom"><ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" /></el-tooltip> --><!-- <screenfull id="screenfull" class="right-menu-item hover-effect" /> --><!-- <el-tooltip content="布局大小" effect="dark" placement="bottom"><size-select id="size-select" class="right-menu-item hover-effect" /></el-tooltip> --><!-- </template> --><el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click"><div class="avatar-wrapper"><!-- <span><img :src="avatar" class="user-avatar"></span> --><span><img src="../../assets/images/user.jpg" class="user-avatar"></span><!-- <i class="el-icon-caret-bottom" /> --></div><el-dropdown-menu slot="dropdown"><router-link to="/user/profile"><el-dropdown-item><div style="height: 30px;"><div style="float: left;height: 30px;padding: 5px 2px 0 0;"><img src="../../assets/images/item2.png" style="width: 20px;" /></div><div style="float: left;">{{$t("userInfo")}}</div></div></el-dropdown-item></router-link><!-- <el-dropdown-item @click.native="setting = true"><span>布局设置</span></el-dropdown-item> --><el-dropdown-item divided @click.native="openLanguageDialog"><div style="height: 30px;"><div style="float: left;height: 30px;padding: 5px 2px 0 0;"><img src="../../assets/images/changeLanguage.png" style="width: 20px;" /></div><div style="float: left;">{{$t("changeLanguage")}}</div></div></el-dropdown-item><el-dropdown-item divided @click.native="logout"><div style="height: 30px;"><div style="float: left;height: 30px;padding: 5px 2px 0 0;"><img src="../../assets/images/item1.png" style="width: 20px;" /></div><div style="float: left;">{{$t("logout")}}</div></div></el-dropdown-item></el-dropdown-menu></el-dropdown></div><!-- 设置语言弹出框 --><el-dialog :title="changeLanguage" :visible.sync="openLanguageFlag" :close-on-click-modal="false" width="300px" append-to-body><div style="width: 100%;height: 218px;overflow-y: auto;border: 1px solid #d8ebfd;padding: 0px 10px;"><el-row v-for="(rowObj, rowIndex) in language " :key="rowObj.id" style="border-bottom:1px solid #d8ebfd;"><el-col :span="24" style="height: 30px;line-height: 30px;"><el-radio style="width:232px;" v-model="chooseLanguage" :label="rowObj.key" :key="rowObj.key" :value="rowObj.key">{{rowObj.value}}</el-radio></el-col></el-row></div><div style="padding-top: 5px;color: #97a6b5;">{{$t("wordCookieTip")}}</div><div slot="footer" class="dialog-footer"><el-button @click="cancelLanguage">{{$t("btnCancel")}}</el-button><el-button type="primary" @click="submitLanguage">{{$t("btnConfirm")}}</el-button></div></el-dialog></div>
</template><script>
import { mapGetters } from 'vuex'
import Breadcrumb from '@/components/Breadcrumb'
import TopNav from '@/components/TopNav'
import Hamburger from '@/components/Hamburger'
import Screenfull from '@/components/Screenfull'
import SizeSelect from '@/components/SizeSelect'
import Search from '@/components/HeaderSearch'
import RuoYiGit from '@/components/RuoYi/Git'
import RuoYiDoc from '@/components/RuoYi/Doc'
import VueCookies from "vue-cookies"export default {data() {return {topTime: "2023年07月26日 11:58:21 星期三",timer: null,openLanguageFlag:false,changeLanguage:"切换语言",chooseLanguage:"",}},create(){},mounted(){// 页面刷新语言进行显示this.$i18n.locale = localStorage.getItem("language");document.title = this.$i18n.t('loginFormTitle');let _this = this;let week = this.$i18n.t('week');_this.timer = setInterval(function(){let date = new Date();let year = date.getFullYear();    //获取当前年份   let mon = date.getMonth()+1;      //获取当前月份   if(mon < 10){mon ="0"+mon;}let da = date.getDate();          //获取当前日if(da < 10){da ="0"+da;}let day = date.getDay();          //获取当前星期几   let h = date.getHours();          //获取小时   if(h < 10){h ="0"+h;}let m = date.getMinutes();        //获取分钟   if(m < 10){m ="0"+m;}let s = date.getSeconds();        //获取秒   if(s < 10){s ="0"+s;}_this.topTime = year+"-"+mon+"-"+da+" "+h+":"+m+":"+s+" "+week[day];  },1000);},components: {Breadcrumb,TopNav,Hamburger,Screenfull,SizeSelect,Search,RuoYiGit,RuoYiDoc},computed: {...mapGetters(['sidebar','avatar','device']),setting: {get() {return this.$store.state.settings.showSettings},set(val) {this.$store.dispatch('settings/changeSetting', {key: 'showSettings',value: val})}},topNav: {get() {return this.$store.state.settings.topNav}}},methods: {submitLanguage(){this.openLanguageFlag = false;VueCookies.set("flowinnIotLanguage", this.chooseLanguage, "30d");// 保存到全局变量中,后面可以使用localStorage.setItem("language", this.chooseLanguage);// 页面刷新语言进行显示this.$i18n.locale = this.chooseLanguage;// 修改页面标题document.title = this.$i18n.t('loginFormTitle');this.$modal.msgSuccess(this.$i18n.t('messageSuccess'));// 刷新页面location.reload();},cancelLanguage(){this.openLanguageFlag = false;},openLanguageDialog(){this.changeLanguage = this.$i18n.t('changeLanguage');this.chooseLanguage = localStorage.getItem("language");this.openLanguageFlag = true;},toggleSideBar() {this.$store.dispatch('app/toggleSideBar')},async logout() {this.$confirm(this.$i18n.t('wordLogout'), this.$i18n.t('wordTips'), {confirmButtonText: this.$i18n.t('btnConfirm'),cancelButtonText: this.$i18n.t('btnCancel'),type: 'warning'}).then(() => {this.$store.dispatch('LogOut').then(() => {location.href = '/index';})}).catch(() => {});}}
}
</script>
<style lang="scss">/* 自定义样式 */.el-button--text {color: #04bef9;}.el-dialog{border: 2px solid #3a71a8;}.el-message-box{border: 2px solid #3a71a8;}.el-dialog__title {color: #fff;padding: 4px 30px 4px 4px;background: linear-gradient(45deg, #304156, #f8f9f9);}.el-message-box__title span {color: #fff;padding: 4px 30px 4px 4px;background: linear-gradient(45deg, #304156, #f8f9f9);}li.el-menu-item.is-active{background: linear-gradient(270deg, rgb(31, 45, 61), rgb(66 105 149)) !important;border-left: 3px solid rgb(145, 196, 247);font-size: 16px;}li.el-menu-item:hover{background: linear-gradient(270deg, rgb(31, 45, 61), rgb(66 105 149)) !important;border-left: 3px solid rgb(145, 196, 247);font-size: 16px;}.submenu-title-noDropdown:first-child{border-top: 1px solid #3c4f66;}.el-submenu .el-menu-item {padding: 0 20px 0 0px;}#app .sidebar-container .svg-icon{margin-right: 6px;}.el-submenu__title{padding-left: 10px !important;}.el-menu-item{padding-left: 28px !important;}.submenu-title-noDropdown{padding-left: 10px !important;}
</style>
<style lang="scss" scoped>.navbar {height: 50px;overflow: hidden;position: relative;background: #304156;box-shadow: 0 1px 4px rgba(0,21,41,.08);.hamburger-container {line-height: 46px;height: 100%;float: left;cursor: pointer;transition: background .3s;-webkit-tap-highlight-color:transparent;&:hover {background: rgba(0, 0, 0, .025)}}.breadcrumb-container {float: left;}.topmenu-container {position: absolute;left: 50px;}.errLog-container {display: inline-block;vertical-align: top;}.right-menu {float: right;height: 100%;line-height: 50px;&:focus {outline: none;}.right-menu-item {display: inline-block;padding: 0 8px;height: 100%;font-size: 16px;color: #ffffff;vertical-align: text-bottom;&.hover-effect {cursor: pointer;transition: background .3s;&:hover {background: rgba(0, 0, 0, .025)}}}.avatar-container {margin-right: 15px;.avatar-wrapper {margin-top: 7px;position: relative;.user-avatar {cursor: pointer;width: 26px;height: 26px;border-radius: 50%;}.el-icon-caret-bottom {cursor: pointer;position: absolute;right: -20px;top: 25px;font-size: 12px;}}}}
}
</style>

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

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

相关文章

微软宣布推广数字助理 Copilot;GPT 应用开发和思考

&#x1f989; AI新闻 &#x1f680; 微软宣布推广基于生成式人工智能的数字助理 Copilot 摘要&#xff1a;微软宣布将基于生成式人工智能的数字助理 Copilot 推广到更多软件产品中。新的 AI 助理 Microsoft Copilot 将在 Windows 中无缝可用&#xff0c;包括 Windows 11 桌面…

【C++面向对象侯捷】12.虚函数与多态 | 13.委托相关设计【设计模式 经典做法,类与类之间关联起来,太妙了,不断的想,不断的写代码】

文章目录 12.虚函数与多态举例&#xff1a;委托 继承【观察者模式】13.委托相关设计Composite 组合模式Prototype 原型模式 12.虚函数与多态 纯虚函数 一定要 子类重新定义的 继承和复合 关系下的构造和析构 举例&#xff1a;委托 继承【观察者模式】 13.委托相关设计 问题…

BOM与DOM--记录

BOM基础&#xff08;BOM简介、常见事件、定时器、this指向&#xff09; BOM和DOM的区别和联系 JavaScript的DOM与BOM的区别与用法详解 DOM和BOM是什么&#xff1f;有什么作用&#xff1f; 图解BOM与DOM的区别与联系 BOM和DOM详解 JavaScript 中的 BOM&#xff08;浏览器对…

蓝桥杯 题库 简单 每日十题 day8

01 扫雷 题目描述 在一个n行列的方格图上有一些位置有地雷&#xff0c;另外一些位置为空。 请为每个空位置标一个整数&#xff0c;表示周围八个相邻的方格中有多少个地雷。 输入描述 输入的第一行包含两个整数n&#xff0c;m。 第2行到第n1行每行包含m个整数&#xff0c;相邻整…

数据结构——单链表

目录 一.前言 二.链表表示和实现&#xff08;单链表&#xff09; 1.1 顺序表的优缺点 1.2 链表的概念及结构 1.3 打印函数 1.4 空间函数 1.5 尾插函数&#xff08;最最最麻烦的&#xff09; 1.5.1 尾插最关键部分&#xff01; 1.6 头插函数 1.7 尾删函数…

深拷贝和浅拷贝

两者区别 深拷贝和浅拷贝是用来描述对象或者对象数组这种引用数据类型的复制场景的。 浅拷贝 浅拷贝&#xff0c;就是只复制某个对象的指针&#xff0c;而不复制对象本身。这种复制方式意味着两个引用指针指向被复制对象的同一块内存地址&#xff0c;如下图&#xff1a; 深拷贝…

conda的安装和使用

参考资料&#xff1a; https://www.bilibili.com/read/cv8956636/?spm_id_from333.999.0.0 https://www.bilibili.com/video/BV1Mv411x775/?spm_id_from333.999.0.0&vd_source98d31d5c9db8c0021988f2c2c25a9620 目录 conda是啥以及作用conda的安装conda的启动conda的配置…

git和github的入门操作

之前因为工作中用的都是SVN版本控制工具&#xff0c;没接触过git和github&#xff0c;现在开始深入自学Django框架技术后&#xff0c;看到官网推荐使用git&#xff0c;然后这两天网上查阅了很多文章教程&#xff0c;学到入门操作需要学习的点&#xff0c;太多的知识点要后面慢慢…

多输入多输出 | MATLAB实现GA-BP遗传算法优化BP神经网络多输入多输出

多输入多输出 | MATLAB实现GA-BP遗传算法优化BP神经网络多输入多输出 目录 多输入多输出 | MATLAB实现GA-BP遗传算法优化BP神经网络多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 多输入多输出 | MATLAB实现GA-BP遗传算法优化BP神经网络多输入多输出…

接入国家能源平台MQTT应用案例

一、项目介绍 随着国家对节能环保措施的力度不断加大&#xff0c;基于物联网技术搭建的国家能源平台在国家相关部门的建设下逐渐成熟。致力于利用实际能耗数据建立能效仿真模型&#xff0c;通过实时寻优运算&#xff0c;获得当前的最优化运行策略&#xff0c;并将控制指令下发…

MDK工程转换Vscode+EIDE方法

MDK工程转换VscodeEIDE方法 1、VscodeEIDE环境搭建方法 请按下方视频完成环境搭建&#xff0c;并编译成功。下载&#xff0c;单步调试如无视频中芯片可暂不执行。 https://www.bilibili.com/video/BV1Zu4y1f72H/?spm_id_from333.337.search-card.all.click&vd_source73…

摩尔信使MThings实用功能盘点

“冗长的用户手册”与“精简的交互设计”之间势必产生一条信息鸿沟&#xff0c;现在就来盘点一下摩尔信使MThings有哪些隐蔽而实用的功能。 01 数据配置类 一键刷新 功能&#xff1a;快速读取所有位数据、寄存器数据的当前数值。 操作&#xff1a;双击“数值”列表头。 一键…

有一个新工具,能让程序员变成高手,优雅撸它!

不知道从什么时候开始&#xff0c;程序员这个职位变得家喻户晓&#xff0c;对程序员的印象也从以前的高深莫测变成如今的加班代名词。对于程序员加班&#xff0c;不懂有话要说。 作为大厂的一枚螺丝钉&#xff0c;接到任务的第一时间需要缕清底层逻辑&#xff0c;并随时关注部门…

AUTOSAR实战篇:手把手带你搞定Watchdog协议栈

AUTOSAR实战篇:手把手带你搞定Watchdog协议栈 前言 小T出品,必是精品! 手把手搞定Watchdog协议栈,你值得拥有! 正文 在进行Watchdog协议栈实战之前,建议先阅读小T之前有关Watchdog协议栈的两篇文章《Watchdog协议栈上》与《Watchdog协议栈下》先了解下在AUTOSAR框架下的W…

SQL模板-用户留存率计算

在这段实习中&#xff0c;我遇到了用户留存率计算的需求&#xff0c;这里做个总结。 首先来讲下&#xff0c;什么是用户留存&#xff1f; 在互联网行业中&#xff0c;用户在某段时间内开始使用应用&#xff0c;经过一段时间后&#xff0c;仍然继续使用该应用的用户。用户留存一…

【数据分享】2005-2022年全国民航机场客货吞吐量和起降架次数据

机场是一个城市对外联系的重要渠道&#xff0c;机场的旅客吞吐量和货物吞吐量是体现一个城市对外联系程度的重要指标。 本次我们给大家分享的是2005-2022年我国民航机场的旅客吞吐量、货邮吞吐量、起降架次数据。数据格式为Excel和Shp两种格式。数据坐标为WGS1984。原始数据来…

根据条件关闭软件

使用下载工具时&#xff0c;经常出现磁盘空间已满&#xff0c;无法下载的情况。 使用shell写一个监控&#xff0c;每2分钟执行一次。判断当前磁盘的空间&#xff0c;低于2G时&#xff0c;关闭下载软件。 获取空间大小 ➜ ~ df -h …

CTF--攻防世界杂项--第二课

下载题目根据文件类型可知&#xff0c;这是一个流量包 那么接下来就是利用分析流量包常用的工具wireshark来分析 利用关键词进行搜索 http contains shell 在最后一条数据中看到了flag。 以上就结束&#xff0c;非常简单的一道题。

使用Visual Leak Detector排查内存泄漏问题

目录 1、VLD工具概述 2、下载、安装VLD 2.1、下载VLD 2.2、安装VLD 3、VLD安装目录及文件说明 3.1、安装目录及文件说明 3.2、关于32位和64位版本的详细说明 4、在工程中引入VLD 5、内存泄漏检测实例讲解 5.1、程序启动报错 5.2、启动调试&#xff0c;查看内存泄漏报…

redis如何清空当前缓存和所有缓存

Windows环境下使用命令行进行redis缓存清理 redis安装目录下输入cmdredis-cli -p 端口号flushdb 清除当前数据库缓存flushall 清除整个redis所有缓存keys * 查看所有key值del key 删除指定索引的值 注意&#xff1a; 我们清空缓存的时候&#xff0c;需要确保redis-…