vue3+elementPlus 侧边菜单栏 固定logo和头像

 template:

    <el-container>
      <el-aside width="100px" class="aside">
        <!-- 标志 -->
        <img class="log" src="../../assets/static/xxxx.png" alt="xx" />
        <!-- 侧边栏权限按钮 -->
        <el-scrollbar>
          <el-menu router :default-active="$route.path" class="el-menu-vertical-demo" collapse background-color="#C3292A">
            <el-sub-menu :index="menu.path + ''" v-for="(menu, index) in menuList" :key="index"
              :class="{ isActive: route.path.match(menu.path) }">
              <template #title>
                <el-icon>
                  <component :is="menu.icon"></component>
                </el-icon>
                <div class="menu-name">{{ menu.name }}</div>
              </template>
              <el-menu-item-group v-for="(item2, index) in menu.children" :key="index">
                <el-menu-item :index="item2.path + ''" :router="{ path: item2.path }">{{ item2.name }}</el-menu-item>
              </el-menu-item-group>
            </el-sub-menu>
          </el-menu>
        </el-scrollbar>
        <!-- 头像 -->
        <div class="avatar" @click="logout">
          <img class="avatar-log" :src="userAvatar || defaultImage" alt="" />
          <div>{{ userName }}</div>
        </div>
      </el-aside>
      <el-container>

less:

.aside {
  background-color: var(--bg--color);
  text-align: center;

  .log {
    width: 41px;
    height: 41px;
    padding-top: 20px;
    margin-bottom: 20px;
  }

  .el-scrollbar {
    height: calc(100vh - 200px);
  }

  .el-menu {
    border: none;
    border-right-width: 0;
  }

  .el-menu-vertical-demo {
    width: 100%;


    :deep(.el-sub-menu__title) {
      display: flex;
      flex-direction: column;
      justify-content: center;
      color: #ffffff;
      margin: 0;
      padding: 0;
      height: 70px;

      .el-icon {
        margin: 0;

        img {
          width: 17.54px;
          height: 16.75px;
        }
      }

      .menu-name {
        line-height: initial;
        font-size: 12px;
      }
    }
  }
.avatar {
  color: #fff;
  font-size: 12px;
  margin: 20px 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;

  img {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    margin: 0 5px !important;
  }
}

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是使用Vue3和Element Plus实现手机端侧边菜单栏的步骤: 1. 安装Vue3和Element Plus 首先,你需要安装Vue3和Element Plus。你可以通过npm或yarn安装它们。具体安装命令如下: ``` npm install vue@next npm install element-plus@next ``` 或者 ``` yarn add vue@next yarn add element-plus@next ``` 2. 创建侧边菜单组件 接下来,你需要创建一个侧边菜单组件。你可以使用Element Plus的Menu组件来实现。以下是一个基本的侧边菜单组件示例: ``` <template> <div class="sidebar-menu"> <el-menu :default-active="$route.path" class="el-menu-vertical-demo" router> <el-menu-item index="/"> <i class="el-icon-menu"></i> <span>首页</span> </el-menu-item> <el-menu-item index="/about"> <i class="el-icon-info"></i> <span>关于我们</span> </el-menu-item> <el-menu-item index="/contact"> <i class="el-icon-phone"></i> <span>联系我们</span> </el-menu-item> </el-menu> </div> </template> <script> import { defineComponent } from 'vue' export default defineComponent({ name: 'SidebarMenu', }) </script> <style> .sidebar-menu { height: 100%; background-color: #f0f2f5; padding: 20px; } </style> ``` 在这个示例中,我们使用了Vue Router来处理路由。我们还使用了Element Plus的Menu组件来创建菜单项。 3. 在App组件中引入侧边菜单组件 接下来,你需要在App组件中引入侧边菜单组件。以下是一个基本的App组件示例: ``` <template> <div class="app"> <el-container> <el-aside width="200px"> <sidebar-menu></sidebar-menu> </el-aside> <el-container> <router-view></router-view> </el-container> </el-container> </div> </template> <script> import { defineComponent } from 'vue' import SidebarMenu from './components/SidebarMenu.vue' export default defineComponent({ name: 'App', components: { SidebarMenu, }, }) </script> <style> .app { height: 100%; } </style> ``` 在这个示例中,我们使用了Element Plus的Container和Aside组件来创建一个侧边菜单栏和一个主内容区域。我们还引入了我们之前创建的侧边菜单组件。 4. 完成 现在,你已经创建好了一个基本的手机端侧边菜单栏。你可以根据你的需求自定义样式和菜单项。 希望这可以帮助到你!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值