vue+element的el-menu组件实现路由跳转及当前项的设置

本文介绍如何使用 Element UI 的 el-menu 组件结合 Vue Router 实现具有高交互性的侧边栏菜单。通过绑定 :default-active 属性并设置 router 属性,可以使得菜单项能够根据当前路由自动激活相应的项,并实现点击菜单项时的页面跳转。
<el-menu router :default-active="$route.path" class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose" theme="dark">  
    <el-submenu index="1">  
        <template slot="title">  
            <i class="el-icon-location"></i>  
            <span>用户信息</span>  
        </template>  
        <el-menu-item-group>  
            <el-menu-item index="/user/account">账号信息</el-menu-item>  
            <el-menu-item index="/user/password">修改密码</el-menu-item>  
    </el-submenu>  
    <el-submenu index="2">  
            <template slot="title">  
            <i class="el-icon-location"></i>  
            <span>公司信息</span>  
        </template>  
        <el-menu-item-group>  
            <el-menu-item index="/company/userManager">用户管理</el-menu-item>  
            <el-menu-item index="/company/editUser">添加/编辑用户</el-menu-item>  
        </el-menu-item-group>  
        </el-submenu>  
</el-menu>

1.要实现路由跳转,先要在el-menu标签上添加router属性,然后只要在每个el-menu-item标签内的index属性设置一下url即可实现点击el-menu-item实现路由跳转。

2.导航当前项,在el-menu标签中绑定  :default-active="$route.path",注意是绑定属性,不要忘了加“:”,当$route.path等于el-menu-item标签中的index属性值时则该item为当前项。

转载于:https://www.cnblogs.com/luyuefeng/p/8031468.html

### 使用 Vue2、Element UI 和 Vue Router 实现大屏头部导航布局 在 Vue2 目中结合 Element UI 的 `el-menu` 组件Vue Router 可以实现一个结构清晰、功能完整的头部导航布局,适用于大屏展示场景。通过合理的 HTML 结构和样式控制,可以将系统名称居中显示,左右两侧分别放置导航,同时支持路由跳转功能。 #### 基本结构设计 使用 `el-header` 作为容器,内部包含三个主要部分:左侧导航菜单、中间系统名称区域、右侧导航菜单。通过 Flexbox 布局确保内容水平分布并垂直居中: ```html <template> <el-container> <el-header class="header flex-between"> <!-- 左侧导航 --> <el-menu mode="horizontal" background-color="#f5f5f5" text-color="#333" active-text-color="#409EFF" class="left-menu" :default-active="$route.path" router > <el-menu-item index="/"><a href="/">首页</a></el-menu-item> <el-menu-item index="/dashboard"><a href="/dashboard">仪表盘</a></el-menu-item> </el-menu> <!-- 居中系统名称 --> <div class="system-name"> <h1>大屏监控系统</h1> </div> <!-- 右侧导航 --> <el-menu mode="horizontal" background-color="#f5f5f5" text-color="#333" active-text-color="#409EFF" class="right-menu" :default-active="$route.path" router > <el-menu-item index="/users"><a href="/users">用户管理</a></el-menu-item> <el-menu-item index="/settings"><a href="/settings">设置</a></el-menu-item> </el-menu> </el-header> </el-container> </template> ``` 上述代码中使用了 `router` 属性,使 `el-menu-item` 能够直接绑定到 Vue Router 的路径上,实现点击菜单时自动跳转页面的功能[^1]。 #### 样式优化与布局控制 通过 CSS 控制整体布局,确保三部分均匀分布并保持垂直对齐: ```css .header { height: 80px; padding: 0 20px; box-sizing: border-box; display: flex; align-items: center; justify-content: space-between; } .left-menu, .right-menu { flex: 1; display: flex; justify-content: flex-start; } .system-name h1 { margin: 0; font-size: 24px; } ``` Flexbox 提供了灵活的对齐方式,能够很好地适应不同屏幕尺寸下的布局需求,提升大屏展示的整体美观性与可用性[^1]。 #### 避免重复导航问题 为防止用户多次点击相同的菜单导致重复导航错误,可以在 `handleMenuSelect` 方法中判断当前路径是否已匹配目标路径,若一致则阻止再次跳转: ```javascript methods: { handleMenuSelect(index) { const targetPath = '/' + index; if (this.$route.path === targetPath) { return; } this.$router.push({ path: targetPath }); } } ``` 该逻辑可有效避免因重复访问相同路径而触发的 Vue Router 错误提示,提高用户体验[^3]。 #### 动态生成菜单(可选) 如需动态生成菜单,可在组件 `data` 中定义菜单数据,并通过 `v-for` 渲染: ```javascript data() { return { menuItemsLeft: [ { name: '首页', path: '/' }, { name: '仪表盘', path: '/dashboard' } ], menuItemsRight: [ { name: '用户管理', path: '/users' }, { name: '设置', path: '/settings' } ] }; } ``` 模板中渲染菜单: ```html <el-menu-item v-for="(item,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值