ruoyi框架修改左侧菜单样式

news2024/10/4 20:24:54

菜单效果

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 $subMenuHover
      background-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.coloradmin.cn/o/1033129.html

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

相关文章

java框架-Springboot3-数据访问

整合SSM SpringSpringMVCMybatis 整合步骤 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"…

k8s master 是如何进行pod的调度的

Master 节点将 Pod 调度到指定的 Node 节点的原理 该工作由 kube-scheduler 来完成&#xff0c;整个调度过程通过执行一些列复杂的算法最终为每个 Pod 计算出一个最佳的目标 Node&#xff0c;该过程由 kube-scheduler 进程自动完成。常见的有轮询调度&#xff08;RR&#xff09…

用HTML、CSS和JavaScript制作的通用进制转换器

随着编程和计算机科学越来越受欢迎&#xff0c;我们经常需要进行进制转换。本文将介绍一个简洁、美观、适用于移动设备的进制转换工具&#xff0c;并详细讨论其实现。 目录 &#x1f30d; 用HTML、CSS和JavaScript制作的通用进制转换器 1.项目图片展示 2. 技术栈 3. 主要功…

Unity Bolt模块间通信

使用Bolt无代码设计开发的时候&#xff0c;我们不能简单的认为只需要一个FlowMachine就可以完成所有流程的开发。我们需要不同的模块进行拆分&#xff0c;以便更好的管理和协作。这就需要不同模块之间的通信处理。经过研究与使用&#xff0c;将常用的通信方式总结如下&#xff…

React中setState的原理及深层理解

1.为什么使用setState React并没有实现类似于Vue2中的Object.defineProperty或者Vue3中的Proxy的方式来监听数据的变化 我们必须通过setState来告知React数据已经发生了变化 setState方法是从Component中继承过来的。 2.setState异步更新 setState设计为异步&#xff0c;可…

23. 图论 - 图的由来和构成

文章目录 图的由来图的构成Hi, 你好。我是茶桁。 从第一节课上到现在,我基本上把和人工智能相关的一些数学知识都教给大家了,终于来到我们人工智能数学的最后一个部分了,让我们从今天开始进入「图论」。 图论其实是一个比较有趣的领域,因为微积分其实更多的是对应连续型的…

【react】使用useEffect操作dom

简言 在学习react时&#xff0c;需要了一个需要在useEffect里操作dom的用法。 一般不推荐这么干&#xff0c;如果是函数组件在一渲染已挂载后立即需要操作dom绑定事件等可以参考下面解决方法。 描述 官网交错运动示例这个示例中&#xff0c;usePointerPosition() Hook 追踪当…

【前段基础入门之】=>初识 HTML

文章目录 前言HTML的详情简介HTML 发展史HTML 入门1. HTML 标签元素2. HTML标签属性3. HTML的标准结构 总结 前言 在整个前端开发中&#xff0c;必须掌握的技术栈为&#xff1a; HTML &#xff0c;CSS&#xff0c;JavaScript&#xff0c;它们三者&#xff0c;共同组成了前端开发…

华为云云耀云服务器L实例评测|认识redis未授权访问漏洞 漏洞的部分复现 设置连接密码 redis其他命令学习

前言 最近华为云云耀云服务器L实例上新&#xff0c;也搞了一台来玩&#xff0c;期间遇到过MySQL数据库被攻击的情况&#xff0c;数据丢失&#xff0c;还好我有几份备份&#xff0c;没有造成太大的损失。昨天收到华为云的邮箱提醒&#xff0c;我的redis数据库没有设置密码&…

MySQL高级语句 Part2(视图表 +存储过程+条件语句+循环语句)

这里写目录标题 一、视图表 create view1.1 视图表概述1.2 视图表能否修改&#xff1f;&#xff08;面试题&#xff09;1.3 基本语法1.3.1 创建1.3.2 查看1.3.3 删除 1.4 通过视图表求无交集值 二、case语句三、空值(null) 和 无值( ) 的区别四、正则表达式4.1 基本语法和匹配模…

pcl--第十二节 2D和3D融合和手眼标定

2D&3D融合 概述 截止目前为止&#xff0c;我们学习了机器人学&#xff0c;学习了2D和3D视觉算法。我们也学习了2D相机(图像数据的来源)和3D相机(点云数据的来源)工作原理。 实际上&#xff0c;我们最终要做的&#xff0c;是一个手眼机器人系统。在这个系统里&#xff0c…

数据仓库整理

数仓 olap vs oltp OLTP主要用于支持日常的业务操作&#xff0c;如银行交易、电子商务等&#xff0c;强调数据的准确性、实时性和并发性。OLAP主要用于支持复杂的数据分析&#xff0c;如数据仓库、决策支持等&#xff0c;强调数据的维度、聚合和可视化。 将OLTP数据库的数据…

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

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

从Langchain到ReAct,在大模型时代下全新的应用开发核心

简介&#xff1a; 什么是ReAct框架关于什么是langchain&#xff0c;可以参考&#xff1a;https://ata.alibaba-inc.com/articles/266839?spmata.23639420.0.0.1dea7536uD7yhh在使用langchain的过程中&#xff0c;大模型给人留下最深刻的印象无疑是Agent功能。大模型会自己分析…

@Cacheable 注解(指定缓存位置)

一、Cacheable的作用 1、缓存使用步骤&#xff1a;Cacheable这个注解&#xff0c;用它就是为了使用缓存的。所以我们可以先说一下缓存的使用步骤&#xff1a; 1、开启基于注解的缓存&#xff0c;使用 EnableCaching 标识在 SpringBoot 的主启动类上。 2、标注缓存注解即可 使用…

【Less-CSS】初识Less,使编写 CSS 变得简洁

初识Less&#xff0c;使编写 CSS 变得简洁 1.Less简述2.LESS 原理及使用方式3.示例4.less语法5.Easy Less插件 作为一门标记性语言&#xff0c;CSS 的语法相对简单&#xff0c;对使用者的要求较低&#xff0c;但同时也带来一些问题&#xff1a;CSS 需要书写大量看似没有逻辑的代…

【初阶数据结构】二叉树链式结构的实现和遍历

个人主页 代码仓库 C语言专栏 初阶数据结构专栏 Linux专栏 目录 前言 二叉树链式结构的实现 二叉树的遍历 前序、中序和后序遍历 前序遍历 中序遍历 后序遍历 求结点个数 求总的结点个数 创建变量求结点 创建静态修饰变量 拆分左右子树加根 求叶子节点的个…

LeetCode【65. 有效数字】

没有完美的傀儡,没有完美的人类,却有绝美的离逝。 有效数字&#xff08;按顺序&#xff09;可以分成以下几个部分&#xff1a; 一个 小数 或者 整数&#xff08;可选&#xff09;一个 e 或 E &#xff0c;后面跟着一个 整数 小数&#xff08;按顺序&#xff09;可以分成以下几…

2023华为杯研究生数学建模竞赛CDEF题思路+模型代码

全程更新华为杯研赛CDEF题思路模型及代码&#xff0c;大家查看文末名片获取 华为杯C题思路分析 问题一 在每个评审阶段&#xff0c;作品通常都是随机分发的&#xff0c;每份作品需要多位评委独立评审。为了增加不同评审专家所给成绩之间的可比性&#xff0c;不同专家评审的作…

【Java毕设项目】基于SpringBoot+Vue校园便利平台的设计与实现

博主主页&#xff1a;一季春秋博主简介&#xff1a;专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发&#xff0c;远程调试部署、代码讲解、文档指导、ppt制作等技术指导。主要内容&#xff1a;毕业设计(Java项目、小程序等)、简历模板、学习资料、面试题…