尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Vue3-Element-Admin 登录页布局切换器
Vue3-Element-Admin 登录页布局切换器Login Layout Switcher概述登录页支持三种布局模式切换居左left、居中center、居右right用户选择后自动持久化到localStorage刷新页面保持上次选择。灵感来源Vben5 Admin 登录页涉及文件文件类型说明src/views/login/components/AuthLayoutSwitch.vue新增布局切换下拉组件src/views/login/index.vue修改登录页主视图集成布局切换架构设计┌─────────────────────────────────────────────────┐ │ login/index.vue │ │ │ │ authLayout useStorage(auth-layout, right)│ │ │ │ │ ▼ │ │ ┌──────────────────┐ │ │ │ AuthLayoutSwitch │◄── v-modelauthLayout │ │ │ (Dropdown 组件) │ │ │ └──────────────────┘ │ │ │ │ │ ▼ │ │ :classauth-view--${authLayout} │ │ │ │ │ ├── .auth-view--left → 表单居左 │ │ ├── .auth-view--center → 表单居中 │ │ └── .auth-view--right → 表单居右(默认) │ └─────────────────────────────────────────────────┘组件详解AuthLayoutSwitch.vue布局切换下拉组件基于 Element Plusel-dropdown实现。核心设计使用defineModelAuthLayout()实现双向绑定导出AuthLayout类型供父组件使用三种布局对应三个element-plus/icons-vue图标Postcard→ 居左Tickets→ 居中CreditCard→ 居右template el-dropdown triggerclick commandhandleCommand el-icon :size20 component :islayoutIcons[modelValue] / /el-icon template #dropdown el-dropdown-menu el-dropdown-item v-foritem in layoutOptions :keyitem.value :commanditem.value :disabledmodelValue item.value el-icon component :isitem.icon / /el-icon {{ item.label }} /el-dropdown-item /el-dropdown-menu /template /el-dropdown /template script setup langts import { Postcard, Tickets, CreditCard } from element-plus/icons-vue; export type AuthLayout left | center | right; const modelValue defineModelAuthLayout({ default: right }); const layoutIcons: RecordAuthLayout, typeof Postcard { left: Postcard, center: Tickets, right: CreditCard, }; const layoutOptions [ { label: 居左, value: left as AuthLayout, icon: Postcard }, { label: 居中, value: center as AuthLayout, icon: Tickets }, { label: 居右, value: right as AuthLayout, icon: CreditCard }, ]; function handleCommand(val: AuthLayout) { modelValue.value val; } /scriptlogin/index.vue 集成Template 关键改动!-- 根元素动态 class -- div classauth-view :classauth-view--${authLayout} !-- 工具栏中加入布局切换 -- el-tooltip content视图布局 placementbottom div classtoolbar-item AuthLayoutSwitch v-modelauthLayout / /div /el-tooltip !-- 居中模式隐藏产品介绍区域 -- section v-ifauthLayout ! center classauth-feature ... /sectionScript 关键改动import{useStorage}fromvueuse/core;importAuthLayoutSwitchfrom./components/AuthLayoutSwitch.vue;importtype{AuthLayout}from./components/AuthLayoutSwitch.vue;// localStorage 持久化key: auth-layout默认值: rightconstauthLayoutuseStorageAuthLayout(auth-layout,right);三种布局模式 CSS 实现居右默认默认 CSS Grid 布局产品介绍在左登录表单在右。.auth-view--right { .auth-panel { justify-self: end; } }居左利用 CSSdirection: rtl技巧反转 Grid 子元素顺序使登录表单出现在左侧。.auth-view--left { .auth-view__wrapper { direction: rtl; // 反转子元素排列方向 * { direction: ltr; // 子元素内部文字方向恢复正常 } } .auth-panel { justify-self: start; } }为什么用direction: rtl而不是orderorder需要给每个子元素单独设置direction: rtl一行代码反转所有子元素更简洁通过 * { direction: ltr }确保内部文本不受影响居中隐藏产品介绍区域通过v-ifwrapper 改为 flex 居中。.auth-view--center { .auth-view__wrapper { display: flex; align-items: center; justify-content: center; } .auth-panel { justify-self: center; } }持久化方案使用vueuse/core的useStorage实现 localStorage 自动读写constauthLayoutuseStorageAuthLayout(auth-layout,right);存储 keyauth-layout默认值right类型安全泛型约束为AuthLayout left | center | right自动同步值变更时自动写入 localStorage页面加载时自动读取响应式适配移动端≤768px自动隐藏产品介绍区域登录表单全宽显示media (max-width: 768px) { .auth-feature { display: none; } .auth-panel { width: 100%; } }工具栏在小屏≤640px固定在右上角media (max-width: 640px) { .auth-view__toolbar { position: fixed; top: 12px; right: 16px; z-index: 20; } }踩坑记录stylelintno-descending-specificity报错问题布局模式 CSS 块.auth-view--left .auth-panel等最初放在基础.auth-panel选择器之前导致 stylelint 报错Expected selector .auth-panel to come before selector .auth-view--left .auth-panel原因stylelint 的no-descending-specificity规则要求低特异性选择器必须出现在高特异性选择器之前。解决将布局模式块移到所有.auth-panel及其子选择器.auth-panel__brand、.auth-panel__footer等之后keyframes之前。CSS 选择器正确顺序.auth-panel ← 基础选择器先 .dark .auth-panel ← 主题变体 .auth-panel__brand ← 子选择器 .auth-panel__logo-wrap .auth-panel__logo ... .auth-panel__footer ← ↓ 布局模式块放在这里 ↓ .auth-view--left ← 包含 .auth-panel 的高特异性选择器后 .auth-view--center .auth-view--right keyframes ← 动画依赖依赖用途vueuse/coreuseStorage持久化element-plus/icons-vuePostcard/Tickets/CreditCard图标element-plusel-dropdown/el-tooltip组件
RELATED

相关推荐

3分钟掌握eSpeak NG:让计算机开口说话的轻量级语音合成方案

3分钟掌握eSpeak NG:让计算机开口说话的轻量级语音合成方案

3分钟掌握eSpeak NG:让计算机开口说话的轻量级语音合成方案 【免费下载链接】espeak-ng eSpeak NG is an open source speech synthesizer that supports more than hundred languages and accents. 项目地址: https://gitcode.com/GitHub_Trending/es/espeak-ng …

📅 2026/8/24 14:55:38
Spring整合MyBatis源码解析与实战优化

Spring整合MyBatis源码解析与实战优化

1. 项目概述Spring整合MyBatis是Java企业级开发中最常用的持久层框架组合之一。作为一名有多年实战经验的Java开发者,我经常被问到:"为什么我们只需要在接口上添加Mapper注解,就能直接调用SQL方法?"今天,我将…

📅 2026/9/14 23:15:41
专科生论文写作利器:10大AI工具实测推荐

专科生论文写作利器:10大AI工具实测推荐

1. 项目背景与核心价值作为一名经历过专科论文写作全过程的过来人,我深知专科同学在学术写作中面临的独特挑战。去年帮学弟学妹们做论文指导时,发现超过80%的咨询问题都集中在"如何快速完成文献综述"、"怎样降低查重率"这些基础但关…

📅 2026/8/24 14:55:38
MORE NEWS

更多资讯

📰

上帝视角项目实战:三维重建、实时拼接与数字孪生全链路指南

聊到“gods-eye-view”这个项目名,圈内人通常第一反应是做一套全局可视化系统,或者干脆就是无人机航拍的三维重建。但这个词背后的需求其实比字面意思宽得多——从影视级的航拍运镜,到安防监控的全局态势感知,再到数字孪生底座的物…

📰

Web自动化测试4

常用的操作方法元素的常用操作方法方法说明send_keys(*value)输入操作方法,该方法中的参数表示输入的内容clear()清空操作方法submit()提交表单操作方法click()单击操作方法get(url)获取操作方法,该方法中的参数URL表示web页面的资源路径get_screenshout…

📰

榆林GEO服务商核心技术解析与应用实践

1. 榆林GEO服务商的核心业务解析 在当今数字化浪潮中,地理位置服务(GEO)已成为各行业的基础设施需求。榆林作为能源重镇和区域经济中心,对专业GEO服务的需求尤为突出。一家专业的榆林GEO服务商通常需要具备以下核心能力&#xff1…

📰

有光短剧.企业级三端短剧APP系统源码,拿来即可部署运营!

有光短剧.企业级三端短剧APP系统源码包含客户端全端:移动端APP H5网页端 pc电脑端完整管理后台 全套接口服务UI界面参考实拍截图,首页、剧场分类、个人中心、会员VIP体系全部现成。核心功能:✅会员VIP系统:开通会员、解锁剧集、…

📰

MinIO对象存储实战:从选型部署到生态集成完整指南

从事后端开发和数据基础设施这块儿,对象存储基本上是绕不开的话题。MinIO 是目前开源社区里活跃度最高的对象存储方案之一,S3 协议兼容、部署轻量、扩展方便,跟各大云厂商的 S3/OSS 服务用起来几乎无缝切换。这篇文章我想把 MinIO 从选型、部…

📰

Rolldown 分块合并(Chunk Merging)实战:side-effectful barrel 的“已加载即并入“优化

Rolldown 分块合并(Chunk Merging)实战:side-effectful barrel 的"已加载即并入"优化 【免费下载链接】rolldown Fast Rust bundler for JavaScript/TypeScript with Rollup-compatible API. 项目地址: https://gitcode.com/GitH…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬