学习搭建后台管理系统模板之layout布局

本项目学习对象是优秀的后台系统模板vben-admin,期待通过学习解读该项目,熟悉前端项目工程化。

看了vben-admin的layout布局,感觉好麻烦,我尝试往简单了做,我觉得已经涵盖常见布局类型了。做法是:控制顶栏和侧边栏的【是否显示】【是否固定】,除此之外还需记录【侧边栏宽度】【顶栏高度】,因为布局主要通过position来控制位置。

ps:一开始确实不知道怎么下手,总想着从更广的角度去考虑,浪费了不少时间,还折腾不出啥,唉!人就是想太多,没必要,干就完了,只要把它拆开,其实也没啥东西,先从实现一种效果开始。做着做着想法自然就出来了。

目前达到的效果:
在这里插入图片描述

左侧栏模式:左侧栏始终存在

在这里插入图片描述
我先假设:左侧栏模式为左侧栏始终存在,不管右边如何变动,先搭建出如下的结构,为了方便测试,先给Main区域2000px高度,这样一看,感觉问题就少了很多,也清晰了,这样在眼前就几个问题。【其实更应该从顶栏模式开始设计,因为顶栏模式需要考虑的问题会更少,不需要考虑侧边栏的宽度对顶栏的影响】

  1. header是否存在
  2. header是否固定
  3. 侧边栏是否存在(目前布局下,已假设为一直存在)
  4. 侧边栏是否固定(即是否随内容高度滚动,如果是固定,则始终在哪个位置)

这四个选项意味着需要四个配置项,我用的vue,所以我用vuex来保存这些状态,同时我还有一个初始的配置项,在项目加载时会先加载初始的配置项。为了达到这个布局效果,需要记录6个属性。

headerShow = true // 顶栏是否存在
headerFixed = true // 顶栏是否固定
siderShow = true // 侧边栏是否存在
siderFixed = true // 侧边栏是否固定
headerHeight = 48 // 顶栏高度
siderWidth = 218 // 侧边栏看度

对于是否显示来说最简单了,啥都不用考虑,主要是在开了固定之后,相应的位置就脱离了文档流,父容器得不到他的大小了,所以才需要记录【顶栏高度】【侧边栏宽度】,便于让整体布局知道这里还占着位置。
当不是固定模式下,都是不使用定位的,一般高度都是100%或auto;当开启了固定后,高度便需要通过calc来计算了。实际情况得自己去试,才能发现各种各样的情况。

顶栏模式: 顶部始终存在

在这里插入图片描述
当完成了侧边栏的布局后,顶栏就变得异常简单了,基本不需要改动什么。

ps: 不过当不做限制时,让顶栏和侧边栏都是随意消失时,会感觉很怪异,所以我还做了限制,当顶栏模式下,顶栏的【显示开关】会变得不可用,侧边栏也是如此。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于 Element UI 的后台管理模板的 Vue 布局代码示例: ```html <template> <div class="app-container"> <el-container> <!-- 顶部导航栏 --> <el-header height="60px"> <div class="app-logo">Logo</div> <div class="app-nav">导航栏</div> <div class="app-user">用户信息</div> </el-header> <!-- 主体内容 --> <el-container> <!-- 左侧菜单栏 --> <el-aside width="200px" class="app-menu"> <el-menu :default-openeds="defaultOpeneds" :default-active="defaultActive" unique-opened active-text-color="#409EFF" background-color="#FFFFFF" text-color="#606266" active-color="#409EFF"> <el-submenu index="1"> <template slot="title"> <i class="el-icon-location"></i> <span>导航一</span> </template> <el-menu-item index="1-1">选项1</el-menu-item> <el-menu-item index="1-2">选项2</el-menu-item> <el-menu-item index="1-3">选项3</el-menu-item> </el-submenu> <el-submenu index="2"> <template slot="title"> <i class="el-icon-menu"></i> <span>导航二</span> </template> <el-menu-item index="2-1">选项1</el-menu-item> <el-menu-item index="2-2">选项2</el-menu-item> <el-menu-item index="2-3">选项3</el-menu-item> </el-submenu> </el-menu> </el-aside> <!-- 右侧主体内容 --> <el-main class="app-main"> <router-view></router-view> </el-main> </el-container> <!-- 底部版权信息 --> <el-footer height="60px"> 版权信息 </el-footer> </el-container> </div> </template> <script> export default { data() { return { defaultOpeneds: [], // 默认展开的菜单项数组 defaultActive: '', // 默认选中的菜单项 } }, mounted() { // 从路由中获取默认选中的菜单项 this.defaultActive = this.$route.path // 从菜单配置中获取默认展开的菜单项数组 this.defaultOpeneds = this.$store.getters.menuOpenedList }, } </script> <style> .app-container { height: 100vh; display: flex; flex-direction: column; } .app-logo { font-size: 24px; color: #FFFFFF; } .app-nav { display: flex; align-items: center; justify-content: flex-end; flex: 1; } .app-user { font-size: 14px; color: #FFFFFF; margin-right: 20px; } .app-menu { padding: 10px; background-color: #F8F8F8; } .app-main { padding: 10px; } </style> ``` 以上代码实现了一个基于 Element UI 的后台管理模板布局,包括顶部导航栏、左侧菜单栏、右侧主体内容和底部版权信息等部分。其中使用了 Element UI 的组件,如 `el-container`、`el-header`、`el-aside`、`el-menu`、`el-submenu`、`el-menu-item`、`el-main` 和 `el-footer` 等,实现了响应式的布局,适应不同的设备屏幕大小。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值