IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 前端:总体布局,侧边栏解析,基于《电商管理系统》Element UI组件库 -> 正文阅读

[JavaScript知识库]前端:总体布局,侧边栏解析,基于《电商管理系统》Element UI组件库

在这篇文章中,我们依然基于《电商管理系统》。

此次我们分析界面的总体布局,应用ElementUI的布局容器和侧边栏组件,

目录

界面总体布局(采用Container布局容器组件)?

一级菜单

二级菜单


界面总体布局(采用Container布局容器组件)?

界面的总体布局采用ElementUI组件库的Container布局容器

代码如下:?

<el-container>
  <el-header>Header</el-header>
  <el-container>
    <el-aside width="200px">Aside</el-aside>
    <el-main>Main</el-main>
  </el-container>
</el-container>

实现页面如下:

header区域为系统名字和退出按钮;

aside区域采用Menu菜单组件;

main区域采用<router-view>,以子路由的形式,匹配组件。

????????路由配置如下:

    {
        path: '/home',
        component: Home,
        redirect: '/welcome',
        children: [
            { path: '/welcome', component: Welcome },
            { path: '/users', component: Users },
            { path: '/rights', component: Rights },
            { path: '/roles', component: Roles }
        ]
    }

Menu组件?

文章的第二部分,我们主要分析侧边栏中Menu组件的应用。

在前端页面中,菜单组件是非常常用的组件,可以布置在侧栏,也可以布置在顶栏,这只需要在el-menu组件中,设置mode属性,默认为垂直模式,mode="horizontal"则可以改成水平模式,侧边栏代码如下:

            <el-aside :width="isCollapse ? '64px' : '200px'">
                <div class="toggle-button"
                    @click="toggleCollapse">|||</div>
                <!-- 侧边栏菜单区域 -->
                <el-menu :uniqueOpened="true"
                    background-color="#333744"
                    text-color="#fff"
                    active-text-color="#409FFF"
                    :unique-opened="false"
                    :collapse="isCollapse"
                    :collapse-transition="false"
                    router
                    :default-active="activePath">
                    <!-- 一级菜单 -->
                    <el-submenu :index="item.id+''"
                        v-for="item in menuList"
                        :key="item.id">
                        <!-- 一级菜单的模板区域 -->
                        <template #title>
                            <!-- 图标 -->
                            <i :class="iconsObj[item.id]"></i>
                            <!-- 文本 -->
                            <span>{{item.authName}}</span>
                        </template>
                        <!-- 二级菜单 -->
                        <el-menu-item :index="'/' + subItem.path"
                            v-for="subItem in item.children"
                            :key="subItem.id"
                            @click="saveNavState('/' + subItem.path)">
                            <template #title>
                                <!-- 图标 -->
                                <i class="el-icon-menu"></i>
                                <!-- 文本 -->
                                <span>{{subItem.authName}}</span>
                            </template>
                        </el-menu-item>
                    </el-submenu>

                </el-menu>
            </el-aside>

我们通过el-submenu来设置一级菜单,通过el-menu-item设置二级菜单。

Menu组件提供了background-color来设置背景色,text-color设置菜单的文字颜色,active-text-color设置当前激活菜单的文字颜色,unique-opened这里动态绑定为false,表示不限制只保持一个子菜单的打开(可以多个菜单同时打开),collapse表示是否水平折叠收起菜单(仅在 mode 为 vertical 时可用),collapse-transition此处设为false,表示不开启折叠动画,

router表示启用vue-router 模式。 启用该模式会在激活导航时以 index 作为 path 进行路由跳转,

default-active动态绑定当前激活菜单的 index,设置值为动态的activePath


我们需要在created生命周期函数中,获取菜单列表,存储在menuList中

        created() {
            this.getMenuList();
            this.activePath = window.sessionStorage.getItem('activePath');
        },
            // 获取所有的菜单
            async getMenuList() {
                const { data: res } = await this.$axios.get('menus');
                if (res.meta.status !== 200) return this.$message.error('res.meta.msg');
                this.menuList = res.data;
                console.log(res);
            },

?从接口返回菜单数据如下:

?分为两级菜单,对于每一级,我们需要用for循环取到。

一级菜单

对于一级菜单,代码如下:

                    <!-- 一级菜单 -->
                    <el-submenu :index="item.id+''"
                        v-for="item in menuList"
                        :key="item.id">
                        <!-- 一级菜单的模板区域 -->
                        <template #title>
                            <!-- 图标 -->
                            <i :class="iconsObj[item.id]"></i>
                            <!-- 文本 -->
                            <span>{{item.authName}}</span>
                        </template>

index动态绑定ID,作为唯一标示

通过v-for指令取得menulist中的每一项

在模板区域放置图标 和 文本,图标采用class动态绑定图标指代字符串

二级菜单

对于二级菜单,代码如下:

                        <!-- 二级菜单 -->
                        <el-menu-item :index="'/' + subItem.path"
                            v-for="subItem in item.children"
                            :key="subItem.id"
                            @click="saveNavState('/' + subItem.path)">
                            <template #title>
                                <!-- 图标 -->
                                <i class="el-icon-menu"></i>
                                <!-- 文本 -->
                                <span>{{subItem.authName}}</span>
                            </template>
                        </el-menu-item>

index绑定激活导航时的path路径

v-for指令循环当前item项的children列表

click事件为saveNavState('/' + subItem.path)

代码如下:

            // 保存链接的激活状态
            saveNavState(activePath) {
                window.sessionStorage.setItem('activePath', activePath);
                this.activePath = activePath;
            }

首先在sessionStorage中保存Item项activePath

并将Menu组件default-active属性动态绑定当前激活菜单的activePath,置为传入的path值

然后再二级菜单模板区域放置图标和文本

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-11 17:25:59  更:2021-10-11 17:27:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:11:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码