当前位置: 首页 > news >正文

uniapp 仿企微左边公司切换页

示例代码:

<template><view class="container"><!-- 遮罩层 --><view class="mask" v-if="showSidebar" @click="closeSidebar"></view><!-- 侧边栏 --><view class="sidebar" :class="{ active: showSidebar }"><!-- 用户信息区域 --><view class="user-info"><image class="avatar" src="/static/default-avatar.png"></image><view class="user-details"><text class="username">用户名</text><text class="company">公司名称</text></view></view><!-- 菜单列表 --><view class="sidebar-content"><view class="sidebar-item"><text class="iconfont icon-message"></text><text class="item-text">消息</text></view><view class="sidebar-item"><text class="iconfont icon-contacts"></text><text class="item-text">通讯录</text></view><view class="sidebar-item"><text class="iconfont icon-workbench"></text><text class="item-text">工作台</text></view><view class="sidebar-item"><text class="iconfont icon-profile"></text><text class="item-text">我的</text></view></view></view><!-- 主内容区域包装器 --><view class="main-content" :class="{ 'content-shifted': showSidebar }"><!-- 主页面内容 --><button @click="openSidebar" class="menu-button"><u-icon name="list" size="28"></u-icon></button><!-- 这里可以放置其他主页面内容 --></view></view>
</template><script>
export default {data() {return {showSidebar: false}},methods: {openSidebar() {this.showSidebar = true},closeSidebar() {this.showSidebar = false}}
}
</script><style>
.container {position: relative;width: 100%;height: 100vh;
}.mask {position: fixed;top: 0;left: 0;right: 0;bottom: 0;background-color: rgba(0, 0, 0, 0.3);z-index: 998;
}/* 主内容区域样式 */
.main-content {position: relative;min-height: 100vh;background-color: #fff;transition: transform 0.3s ease-in-out; /* 确保与sidebar使用相同的过渡时间 */z-index: 997;
}.content-shifted {transform: translateX(70%);
}/* 修改sidebar的样式 */
.sidebar {position: fixed;top: 0;left: 0;width: 70%;height: 100vh;background-color: #2f2f2f;z-index: 999;transition: transform 0.3s ease-in-out; /* 确保与main-content使用相同的过渡时间 */color: #fff;transform: translateX(-100%);
}.sidebar.active {transform: translateX(0);
}.user-info {padding: 20px;background-color: #393939;display: flex;align-items: center;
}.avatar {width: 60px;height: 60px;border-radius: 6px;margin-right: 15px;
}.user-details {flex: 1;
}.username {font-size: 18px;font-weight: 500;margin-bottom: 5px;display: block;
}.company {font-size: 14px;color: #999;display: block;
}.sidebar-content {padding: 10px 0;
}.sidebar-item {padding: 16px 20px;display: flex;align-items: center;
}.sidebar-item:active {background-color: #393939;
}.iconfont {font-size: 24px;margin-right: 12px;
}.item-text {font-size: 16px;
}.menu-button {position: absolute;top: 15px;left: 15px;background: none;border: none;padding: 10px;z-index: 997;
}.menu-button::after {border: none;
}/* 注意:需要引入iconfont字体文件 */
@font-face {font-family: 'iconfont';src: url('/static/iconfont.ttf') format('truetype');
}.iconfont {font-family: 'iconfont';
}
</style>

效果展示:

相关文章:

  • 第11章 面向分类任务的表示模型微调
  • 同步定时器的用户数要和线程组保持一致,否则jmeter会出现接口不执行’stop‘和‘×’的情况
  • MySQL元数据库完全指南:探秘数据背后的数据
  • Axure PR 9 中继器 标签
  • MTKAndroid13-Launcher3 屏蔽部分app不让显示
  • 如何让 HTML 文件嵌入另一个 HTML 文件:详解与实践
  • 电脑温度怎么看 查看CPU温度的方法
  • js数据结构之栈
  • 【Java】Maven3.5.0安装
  • Qt 调试信息重定向到本地文件
  • maven依赖排查与注意点
  • Cursor如何手动添加多个大模型?
  • uni-app中获取用户实时位置完整指南:解决权限报错问题
  • uniapp中检查版本,提示升级app,安卓下载apk,ios跳转应用商店
  • 北斗导航 | 北斗卫星导航单点定位与深度学习结合提升精度
  • 什么是视频上墙
  • 深入剖析扣子智能体的工作流与实战案例
  • spring中的@bean注解详解
  • 在 Windows 系统上升级 Node.js
  • AI智能SEO关键词优化策略
  • 特朗普说克里米亚将留在俄罗斯,泽连斯基:绝不承认
  • 美联储官员:货币政策不会立即改变,金融市场波动或致美国经济增长承压
  • 一季度公募管理规模出炉:44家实现增长,4家规模环比翻倍
  • 贵州赤水被指“整改复耕”存形式主义,当地部署耕地流出整改“回头看”
  • 中宣部版权管理局:微短剧出海面临版权交易不畅、海外维权较难等难题
  • 专访|攸佳宁:手机只是矛盾导火索,重要的是看见孩子的内心