前端:总体布局,侧边栏解析,基于《电商管理系统》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组件的应用。

在前端页面中,菜单组件是非常常用的组件,可以布置在侧栏,也可以布置在顶栏,这只需要在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值

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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Bootstrap是一种流行的开源前端框架,用于开发管理系统前端页面。它提供了许多预定义的CSS样式和JavaScript插件,可以使开发人员快速构建美观、响应式、易于使用的管理系统界面。 首先,Bootstrap具有大量的CSS类和布局组件,开发人员可以轻松地创建清晰、一致的页面布局。例如,可以使用Grid系统来创建栅格布局,将页面分为多个列,并根据需要进行响应式的调整。此外,Bootstrap还提供了各种样式的按钮、表单元素、导航等,使得页面设计更加简单方便。 其次,Bootstrap提供了丰富的JavaScript插件,用于增强页面的交互性和功能性。这些插件包括弹出框、标签页、下拉菜单、轮播图等,可以通过简单的HTML标记和JavaScript调用来实现。这些插件可以提供用户友好的界面效果,使得管理系统的操作更加便捷和直观。 此外,Bootstrap还支持响应式设计,即可以根据用户的设备和屏幕大小自动调整页面布局和样式。这意味着,开发的管理系统前端页面可以在不同的设备上都具有良好的用户体验,无论是在脑、平板还是手机上都能够正常使用。 总体而言,Bootstrap作为一个功能强大的前端框架,可以大大简化管理系统前端页面的开发工作。通过使用Bootstrap的CSS样式和JavaScript插件,开发人员可以快速构建美观、易于使用的管理系统界面,并且可以在不同设备上实现良好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值