iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >element实现导航栏收起展开功能及思路
  • 552
分享到

element实现导航栏收起展开功能及思路

摘要

目录element 导航栏收起展开实现思路PS:Vue结合element-ui实现导航菜单展开收缩小功能上篇文章介绍了vue使用ElementUI时导航栏默认展开功能的实现,今天介绍

上篇文章介绍了vue使用ElementUI时导航栏默认展开功能的实现,今天介绍下element 导航栏收起展开功能的实现思路。

element 导航栏收起展开

实现思路

1. 首先给 el-menu 加上 :collapse="isCollapse" 属性,这个属性也是 element 上的一个参数,意思为是否开启折叠动画,在 data 中定义 isCollapse ,用 truefalse 控制展开与收起。

2. 在 html 中写入以下代码。

 <el-menu :collapse="isCollapse" class="el-menu-vertical"></el-menu>

3. 这里还需要把 el-aside 的宽度设置为跟 el-menu 一样,以免出现执行展开收起时宽度不一样。

  <!-- width的宽度跟collapse一样动态控制 -->
  <el-aside width="collapse"></el-aside>

4. 展开和收起按钮利用两个 icon 图标,通过点击事件来动态控制显示与隐藏。

   <el-header>
          <!-- 点击展开收起导航和切换对应图标 -->
          <i class="el-icon-s-fold" @click="isC" v-show="block"></i>
          <i class="el-icon-s-unfold" @click="isC" v-show="toggle"></i>
   </el-header>

5. data 中定义的变量。

export default {
  name: "Main",
  data() {
    return {
      isCollapse: false, //导航栏默认为展开
      toggle: false,//第二个图标默认隐藏
      block: true,//默认显示第一个图标
    };
  },
};

6. methods 中的点击事件。

  methods: {
    // 动态控制展开与收起和切换对应图标
    isC() {
      this.isCollapse = !this.isCollapse;
      this.toggle = !this.toggle;
      this.block = !this.block;
    },
  },

7. 用到的 CSS 代码。

.el-menu-vertical:not(.el-menu--collapse) {
  width: 240px;
}

最后附上完整代码

<template>
  <div>
    <el-container>
      <!-- width的宽度跟collapse一样动态控制 -->
      <el-aside width="collapse">
        <!-- :collapse="isCollapse"  class="el-menu-vertical" 动态控制导航菜单的收起与展开  router:让index作为 path 进行路由跳转 -->
        <el-menu :default-active="$route.path" router :collapse="isCollapse" class="el-menu-vertical" background-color="#393e42"
          text-color="#fff" active-text-color="rgb(64, 158, 255)">
          <el-submenu index="1">
            <!-- 插槽 插入一级导航标题 -->
            <template slot="title">
              <i class="el-icon-s-tools"></i>
              <span>工厂设置</span>
            </template>
            <!-- 二级导航标题 -->
            <el-menu-item-group>
              <el-menu-item index="/A-Business/A-Business">
                <i class="el-icon-s-shop"></i>商户信息
              </el-menu-item>
            </el-menu-item-group>
          </el-submenu>
        </el-menu>
      </el-aside>
      <el-container>
        <el-header>
          <div class="box_bgd" @click="isC">
            <!-- 点击展开收起导航和切换对应图标 -->
            <i class="el-icon-s-fold" v-show="block"></i>
            <i class="el-icon-s-unfold" v-show="toggle"></i>
          </div>
        </el-header>
        <el-main>
          <router-view></router-view>
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isCollapse: false, //导航栏默认为展开
      toggle: false, //第二个图标默认隐藏
      block: true, //默认显示第一个图标
    };
  },
  methods: {
    // 动态控制展开与收起和切换对应图标
    isC() {
      this.isCollapse = !this.isCollapse;
      this.toggle = !this.toggle;
      this.block = !this.block;
    },
  },
};
</script>

<style scoped>
.el-header {
  background-color: #b3c0d1;
  color: #333;
  line-height: 60px;
  height: 100%;
  padding: 0 !important;
}

.el-aside {
  background-color: #393e42;
  color: #333;
  height: 100vh;
}
.el-menu {
  border-right-width: 0;
}
.el-main {
  color: #333;
}
.el-menu-vertical:not(.el-menu--collapse) {
  width: 240px;
}
.box_bgd {
  height: 60px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  width: 54px;
}
.box_bgd i {
  font-size: 20px;
}
.box_bgd:hover {
  background-color: rgb(203, 215, 230);
}
</style>

效果如下

在这里插入图片描述

PS:Vue结合element-ui实现导航菜单展开收缩小功能

1. 先上个效果图 

这里我把控制菜单收缩的放在中间了,是可以随便调整的。 

2. 问题思路想法 

① 首先是布局,这就是个很经典的后台管理系统的容器页面,这里分为上下结构,上面一般放些系统loGo、 登录的用户信息,还有一些小功能等等。然后下面又分为左右结构,左边就是我们的导航菜单,右边那一块儿是我们将来所有的业务页面存放的地方

② 上下结构布局好说,下面左右结构我们采用display:flex布局,但是问题就是宽度该怎么去设置,我们要实现菜单的收缩功能,宽度都是动态的变化的,右边也要随着左边的变动而改变,结论就是,我们给左边设置宽度为 width: auto,然后右边不设置宽度,直接让右边宽度填满剩下的右侧,即给右侧div设置flex: 1,这样布局基本就可以了

③ 第三就是给el-menu 设置 class="el-menu-vertical" :collapse="isCollapse" 属性,一个是class类名,我们一会儿需要用到(就是展开的时候的宽度) ,还一个是isCollapse,表示开启折叠动画

3. 完整代码实现

<doc>
  容器页面
</doc>
<template>
  <div class="main">
    <div class="layout-top"></div>
    <div class="layout-bottom">
      <!-- 左侧 -->
      <div id="LayoutLeft" class="layout-left">
      <el-menu default-active="1" class="el-menu-vertical" :collapse="isCollapse">
        <el-submenu index="1">
          <template slot="title">
            <i class="el-icon-location"></i>
            <span slot="title">导航一</span>
          </template>
          <el-menu-item-group>
            <span slot="title">分组一</span>
            <el-menu-item index="1-1">选项1</el-menu-item>
            <el-menu-item index="1-2">选项2</el-menu-item>
          </el-menu-item-group>
          <el-menu-item-group title="分组2">
            <el-menu-item index="1-3">选项3</el-menu-item>
          </el-menu-item-group>
          <el-submenu index="1-4">
            <span slot="title">选项4</span>
            <el-menu-item index="1-4-1">选项1</el-menu-item>
          </el-submenu>
        </el-submenu>
        <el-menu-item index="2">
          <i class="el-icon-menu"></i>
          <span slot="title">导航二</span>
        </el-menu-item>
      </el-menu>
        <!-- 控制菜单的收缩 -->
        <div @click="shrinkMenu" class="shrink">
          <i :class="isCollapse ? 'el-icon-s-unfold': 'el-icon-s-fold'"></i>
        </div>
      </div>
      <!-- 右侧 -->
      <div id="LayoutRight" class="layout-right">
        <div class="layout-content">
          <router-view></router-view>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  computed: {
    isCollapse: {
      get() {
        return this.$store.state.common.isCollapse
      },
      set(val) {
        this.$store.commit('common/updateisCollapse', val)
      }
    }
  },
  methods: {
    shrinkMenu() {
      this.isCollapse = !this.isCollapse;
    }
  }
}
</script>
<style>
.main {
  width: 100vw;
  height: 100vh;
}

.layout-top {
  width: 100%;
  height: 60px;
  background: #b3c0d1;
}
 

.layout-bottom {
  width: 100%;
  height: calc(100% - 60px);
  
  display: flex;
}
.layout-left {
  
  width: auto;
  height: 100%;
  background: #d3Dce6;
  position: relative;
}
.layout-right {
  height: 100%;
  
  flex: 1;
  background: #e9eef3;
  padding: 25px;
  box-sizing: border-box;
}

.layout-content {
  width: 100%;
  height: 100%;
  background: #fff;
}
 

.el-menu {
  height: 100%;
  border-right-width: 0;
}

.el-menu-vertical:not(.el-menu--collapse) {
  width: 200px;
}
 

.shrink {
  position: absolute;
  top: 50%;
  right: -25px;
  transfORM: translateY(-50%);
  width: 25px;
  height: 30px;
  border: 1px solid #b3c0d1;
  background: #b3c0d1;
  display: flex;
  justify-content: center;
  align-items: center;
  border-radius: 3px;
  cursor: pointer;
  z-index: 9999;
}
</style>

注意:这里我把 isCollapse 存在了Vuex中,然后就是比较简单的一些逻辑,大家稍微看下应该都能明白。

唯一的核心代码我觉得就是下面的左右两侧宽度设置的问题,左侧设置 width: auto,右侧不设置宽度,设置 flex: 1,这是核心的代码。另外还有个核心的是设置 el-menu 展开的宽度即:

.el-menu-vertical:not(.el-menu--collapse) {
  width: 200px;
}

这个也是核心,要不然的话,展开收缩的时候会有问题。

到此这篇关于element 实现导航栏收起展开功能及思路的文章就介绍到这了,更多相关element 导航栏收起展开内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: element实现导航栏收起展开功能及思路

本文链接: https://www.lsjlt.com/news/177923.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • element实现导航栏收起展开功能及思路
    目录element 导航栏收起展开实现思路PS:Vue结合element-ui实现导航菜单展开收缩小功能上篇文章介绍了vue使用ElementUI时导航栏默认展开功能的实现,今天介绍...
    99+
    2023-01-16
    element 导航栏收起展开 element 导航栏收起 element 导航栏 element-ui展开收缩
  • Vue实现文本展开收起功能
    本文实例为大家分享了Vue实现文本展开收起功能的具体代码,供大家参考,具体内容如下 先说说需求,以及实现的需求 1、移动端H5,发表留言后跳转到评论列表,超过5行文字,多余的需要隐藏...
    99+
    2024-04-02
  • jQuery实现文章收起与展开功能
    本文实例为大家分享了jQuery实现文章收起与展开功能的具体代码,供大家参考,具体内容如下 废话不多说,直接上代码 <!DOCTYPE html> <html ...
    99+
    2024-04-02
  • Flutter实现顶部导航栏功能
    本文实例为大家分享了Flutter实现顶部导航栏的具体代码,供大家参考,具体内容如下 import 'package:flutter/material.dart'; class A...
    99+
    2024-04-02
  • vue+elementUl实现展开和收起搜索功能
    目录实现效果如下:需求:需求分析:解决思路:代码解析:实现效果如下: 需求: 由于后台搜索选项有很多,影响页面美观,所以一进来要隐藏一部分搜索项,只保留1行, 点击【展开搜索】...
    99+
    2023-01-16
    vue +elementUl展开和收起 vue 展开和收起
  • CSS3怎么实现侧边栏展开收起动画
    这篇文章主要讲解了“CSS3怎么实现侧边栏展开收起动画”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS3怎么实现侧边栏展开收起动画”吧!@keyfram...
    99+
    2024-04-02
  • jQuery实现带展开动画的导航栏效果
    设计和自定义一个带展开动画效果的导航栏,尝试写了一个demo,加上设计和调试差不多写了一天吧。 这里就来讲讲如何从设计->写布局->写样式->写JS代码 完成一个完...
    99+
    2024-04-02
  • html+css怎么实现简易导航栏功能
    小编给大家分享一下html+css怎么实现简易导航栏功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!二话不说直接上代码<!DOCTYPE htm...
    99+
    2023-06-08
  • React实现复杂搜索表单的展开收起功能
    给时间时间,让过去过去。 上节我们写过了【搜索】表单,以及查询、重置功能。本节对于需要展开收起效果的查询表单 进行概述,主要涉及前端样式知识。 样式效果如下: &nbs...
    99+
    2024-04-02
  • 怎么使用CSS3实现侧边栏展开收起动画
    这篇文章主要介绍了怎么使用CSS3实现侧边栏展开收起动画,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。@keyframes规则用于创建动画。...
    99+
    2024-04-02
  • vue路由如何实现网站导航功能
    这篇文章给大家分享的是有关vue路由如何实现网站导航功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、首先需要按照Vue router支持npm install vue-ro...
    99+
    2024-04-02
  • js如何实现点击导航栏切换页面功能
    可以使用 JavaScript 来实现点击导航栏切换页面的功能。下面是一个简单的示例:首先,在 HTML 中创建导航栏和对应的页面内...
    99+
    2023-08-08
    js
  • Vue实现tab导航栏并支持左右滑动功能
    本文主要介绍:利用Vue实现tab导航栏,并且通过flex布局实现左右滑动,计算按钮的位置,当点击第一屏展示的最后一个且还有元素未展示时,自动滑动显示出未显示的元素。 tab导航栏布...
    99+
    2024-04-02
  • 怎么使用vue路由实现网站导航功能
    本文小编为大家详细介绍“怎么使用vue路由实现网站导航功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用vue路由实现网站导航功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、首先需要按照Vue r...
    99+
    2023-07-04
  • Android 中使用RadioGroup和Fragment实现底部导航栏的功能
    在一些购物商城中经常会遇到这类效果,效果图如下: 先看效果图 步骤一: 完成对主界面main.xml的创建: <?xml version="1.0" enco...
    99+
    2024-04-02
  • 如何实现Android导航栏功能项的显示与屏蔽
    这篇文章给大家分享的是有关如何实现Android导航栏功能项的显示与屏蔽的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 Android 的导航栏有诸多功能,例入 截屏,音量加,音量减,最近任务,菜单.返...
    99+
    2023-06-22
  • element ui table如何实现点击一行展开功能
    这篇文章给大家分享的是有关element ui table如何实现点击一行展开功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言element ui是一个非常不错的vue的U...
    99+
    2024-04-02
  • ASP.NET Web开发框架怎么实现功能导航
    本篇内容主要讲解“ASP.NET Web开发框架怎么实现功能导航”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ASP.NET Web开发框架怎么实现功能导航”吧!功能导航主要解决如何布局功能,把...
    99+
    2023-06-17
  • Python轮播图与导航栏功能的实现流程全讲解
    目录轮播图功能安装依赖模块上传文件相关配置注册home子应用创建轮播图的model模型创建Banner的序列化器创建Banner的视图类配置Banner的路由配置Xadmin配置文件...
    99+
    2024-04-02
  • Bootstrap3.3.7如何实现导航栏下拉菜单鼠标滑过展开效果
    这篇文章将为大家详细讲解有关Bootstrap3.3.7如何实现导航栏下拉菜单鼠标滑过展开效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Bootstrap是Twitt...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作