vue+Element左树导航右内容区页面跳转

首先在项目中添加Element UI

npm i element-ui -S

修改main.js

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from ‘vue‘
import ElementUI from ‘element-ui‘
import ‘element-ui/lib/theme-chalk/index.css‘
import App from ‘./App‘
import router from ‘./router‘

Vue.config.productionTip = false
Vue.use(ElementUI)

/* eslint-disable no-new */
new Vue({
  el: ‘#app‘,
  router,
  components: { App },
  template: ‘<App/>‘
})

HelloWorld.vue

<template>
  <div class="indexPage">
    <div class="containerWrapper">
      <div class="sidebarWrapper">
        <el-menu default-active="1-4-1" class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose" :collapse="collapseStatus">
          <el-menu-item index="0">
            <i class="el-icon-menu"></i>
            <span slot="title">工作平台</span>
          </el-menu-item>
          <el-submenu index="1">
            <template slot="title">
              <i class="el-icon-location"></i>
              <span slot="title">导航一</span>
            </template>
            <el-menu-item-group>
              <span slot="title">分组一</span>
              <el-menu-item index="1-1">选项1</el-menu-item>
              <el-menu-item index="1-2">选项2</el-menu-item>
            </el-menu-item-group>
            <el-menu-item-group title="分组2">
              <el-menu-item index="1-3">选项3</el-menu-item>
            </el-menu-item-group>
            <el-submenu index="1-4">
              <span slot="title">选项4</span>
              <el-menu-item index="1-4-1">选项1</el-menu-item>
            </el-submenu>
          </el-submenu>
          <el-menu-item index="/demo" @click="goTo(‘/demo‘)">
            <i class="el-icon-menu"></i>
            <span slot="title">导航二</span>
          </el-menu-item>
          <el-menu-item index="/demo3" @click="goTo(‘/demo3‘)">
            <i class="el-icon-document"></i>
            <span slot="title">导航三</span>
          </el-menu-item>
          <el-menu-item index="4">
            <i class="el-icon-setting"></i>
            <span slot="title">导航四</span>
          </el-menu-item>
        </el-menu>
      </div>
      <div class="contentWrapper">
        <div class="mainHeader">
          <!--侧边导航栏控制按钮-->
          <span><i class="el-icon-s-fold" @click="handleFold()"></i></span>
          <div class="userCenter">
            <el-link :underline="false" href="https://www.baidu.com" class="username">Admin</el-link>
            <el-avatar :size="40" :src="avaUrl"></el-avatar>
          </div>
        </div>
        <div class="mainContent">
          <router-view></router-view>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: ‘HelloWorld‘,
  data () {
    return {
      isCollapse: false,
      collapseStatus: false,
      avaUrl: ‘https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png‘
    }
  },
  methods: {
    handleOpen (key, keyPath) {
      console.log(key, keyPath)
    },
    handleClose (key, keyPath) {
      console.log(key, keyPath)
    },
    handleFold () {
      this.collapseStatus = !this.collapseStatus
    },
    goTo (path) {
      this.$router.replace(path)
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
  .containerWrapper{
    display: flex;
    flex-direction: row;
  }
  .sidebarWrapper{/*设置侧边栏导航高度*/
    min-height: 100vh;
  }
  .el-menu-vertical-demo:not(.el-menu--collapse) {/*设置侧边栏不折叠的宽度*/
    width: 250px;
    height: 100%;
  }
  .el-menu--collapse{/*设置侧边栏折叠后的高度*/
    height: 100%;
  }
  .indexPage .el-aside{
    width: 300px;/*设置侧边导航栏宽度*/
    overflow-x: hidden;
    overflow-y: hidden;
  }
  .contentWrapper{/*设置内容区包裹样式*/
    flex: 1;
    min-height: 100vh;
  }
  .mainHeader{/*头部样式设置*/
    height: 56px;
    padding: 0 10px;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
  }
  .mainContent{/*内容区样式设置*/
    padding: 0 10px;
    background: #F0F2F5;
    height: 100%;
  }
  .userCenter{/*头部右侧个人中心*/
    display: flex;
    align-items: center;
  }
  .userCenter .username{
    margin-right: 15px;
  }
</style>

Demo.vue目标页面代码

<template>
  <div class="Demo">
    <h1>样例页面二</h1>
  </div>
</template>

<script>
export default {
  name: ‘Demo‘,
  data () {
    return {}
  }
}
</script>

<style scoped>

</style>

router/index.js路由代码为

 1 import Vue from ‘vue‘
 2 import Router from ‘vue-router‘
 3 import HelloWorld from ‘@/components/HelloWorld‘
 4 import Demo from ‘../components/Demo‘
 5 import Demo3 from ‘../components/Demo3‘
 6
 7 Vue.use(Router)
 8
 9 export default new Router({
10   // 为了去掉吗默认情况下路由中出现的#号
11   mode: ‘history‘,
12   routes: [
13     {
14       path: ‘/‘,
15       name: ‘HelloWorld‘,
16       component: HelloWorld,
17       children: [
18         {
19           path: ‘/demo‘,
20           name: ‘Demo‘,
21           component: Demo
22         },
23         {
24           path: ‘/demo3‘,
25           name: ‘Demo3‘,
26           component: Demo3
27         }
28       ]
29     }
30   ]
31 })

原文地址:https://www.cnblogs.com/Jayeblog/p/11540033.html

时间: 2024-08-29 03:10:47

vue+Element左树导航右内容区页面跳转的相关文章

Vue如何实现swiper左右滑动内容区控制导航tab同时切换高亮

Vue如何实现左右滑动内容区控制导航tab同时切换高亮,实现的效果是:点击导航按钮时内容区发生改变,左右滑动内容区时导航按钮跟随切换高亮,停留在某个内容区时刷新页面后仍然停留在当前内容区. 这里涉及到几个点: 1.左右滑动,那就需要用到swiper,当然你可以自己写一个类似的功能,虽然不难但是项目开发中可能会比你引入插件要耗时很多: 2.Vue开发鼓励组件化,所以在这我是分为nav和swiper两个组件,那么就要用到事件发射与接收,我在前面的博文有关于事件发射与接收的心得,具体点击查看: 3.利

Vue Element 导航子路由不选中问题

首先说下遇到的问题 1.进入嵌套路由,当前父导航无法高亮显示 2.页面刷新后导航重置问题 3.在嵌套路由刷新页面也会导致导航重置问题 接下来是解决方案: elementUI 里面有个属性 default-active(当前激活菜单的 index) <el-menu :default-active="activeIndex" @select="handleSelect" router></el-menu> data () { return {

C++:浅谈c++资源管理以及对[STL]智能指针auto_ptr源码分析,左值与右值

C++:浅谈c++资源管理以及对[STL]智能指针auto_ptr源码分析 by 小威威 1. 知识引入 在C++编程中,动态分配的内存在使用完毕之后一般都要delete(释放),否则就会造成内存泄漏,导致不必要的后果.虽然大多数初学者都会有这样的意识,但是有些却不以为意.我曾问我的同学关于动态内存的分配与释放,他的回答是:"只要保证new和delete成对出现就行了.如果在构造函数中new(动态分配内存),那么在析构函数中delete(释放)就可以避免内存泄漏了!" 事实果真如此么?

什么是左值和右值

第一次让左值右值引起我注意的时候是在刚接触字符串和指针的时候编译器对代码的一段错误提示 那什么是左值(l-value)那: 说的通俗一点就是可以放在赋值号左边的叫左值 就是可以被赋值的.是一个地址 左值一般是是一个变量可以被赋值的变量.(const变量是一个例外只能做右值) 那什么是右值(r-value)那: 同样我们可以说是可以放在赋值号右边的 就是可以给其他变量赋值的, 它可以是一个变量也可以是一个常量也可以是一个表达式.是一个内容 例如: #include<stdio.h> int ma

(vue.js)Vue element tab 每个tab用一个路由来管理?

(vue.js)Vue element tab 每个tab用一个路由来管理? 来源:网络整理     时间:2017/5/13 0:24:01     关键词: 关于网友提出的“ (vue.js)Vue element tab 每个tab用一个路由来管理?”问题疑问,本网通过在网上对“ (vue.js)Vue element tab 每个tab用一个路由来管理?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下: 问题: (vue.js)Vue element tab 每个tab用一个

Vue+Element实现网页版个人简历系统

这篇文章介绍一个使用Vue+Element实现的个人简历系统,主要用到的技术有:vue.element.css3.css定位. 作者在window10进行开发,目前只在chrome上进行过测试,没有大的毛病.但是还有很多小功能还不完善,代码也未进行优化,后续会继续完善功能,优化代码. 声明:项目相对来说就是一个纯静态页面,代码都比较简单,大佬可闭眼绕过,或者看一眼留下宝贵意见也可 一.项目介绍 本项目是一个网页版的个人简历系统,主要使用的技术为vue2+element进行实现. 个人简历系统主要

Vue Element+Node.js开发企业通用管理后台系统

第1章 课程介绍介绍项目背景.达到的目标.技术栈和功能演示 第2章 课程分析课程分析 第3章 Vue进阶(上)对Vue的进阶知识进行讲解,包括$emit和$on.directive指令.组件化.Vue插件等相关内容. 第4章 Vue进阶(下)对Vue的进阶知识进行讲解,包括组件通信.过滤器.监听器.Vue2.6重要新特性等相关内容. 第5章 Element-UI入门对Element-UI的内容进行讲解,包括如何搭建Element-UI使用环境,如何使用插件快速集成Element-UI,并通过el

Oracle左连接、右连接、全外连接以及(+)号用法(转)

Oracle  外连接(OUTER JOIN) 左外连接(左边的表不加限制) 右外连接(右边的表不加限制) 全外连接(左右两表都不加限制) 对应SQL:LEFT/RIGHT/FULL OUTER JOIN. 通常省略OUTER关键字, 写成:LEFT/RIGHT/FULL JOIN. 在左连接和右连接时都会以一张A表为基础表,该表的内容会全部显示,然后加上A表和B表匹配的内容. 如果A表的数据在B表中没有记录. 那么在相关联的结果集行中列显示为空值(NULL). 对于外连接, 也可以使用“(+)

c++中的左值与右值

++(a++) a++相当于 int a; { int temp=a; a++; teturn temp; } 所以我们可以将++(a++)看成++temp;而temp 显然是一个右值,所以不能用啊~~ L-value中的L指的是Location,表示可寻址.The "l" in lvalue can be though of as locationR-value中的R指的是Read,表示可读.The "r" in rvalue can be thought of