vue.js实现左边导航切换右边内容


Posted in Javascript onOctober 21, 2019

本文实例为大家分享了vue.js左边导航切换右边内容的具体代码,供大家参考,具体内容如下

<template>
 <div class="layout-container">
 <y-header>
 <div slot="nav"></div>
 </y-header>
 <div class="w">
 <div class="content">
 <div class="account-sidebar">
  <div class="gray-box ">
  <div class="box-inner">
  <ul class="account-nav">
  <li v-for="(item,i) in nav" :key='i'>
   <a href="javascript:;" >
   <div class="account-nav-primary" @click="tabPrimary(item)" :class="{active:item.isActive}">
    <span>{{item.name}}</span>
    <i class="el-icon-arrow-right"></i>
   </div>
   </a>
   <div v-if="item.secondNav==true">
    <ul class="account-nav-second" v-show="show">
    <li v-for="(itemT,j) in item.navSecond" :key='j' :class="{active:itemT.name===title}"
     @click="tabSecond(itemT)">
     <span>{{itemT.name}}</span>
    </li>
    </ul>
   </div>
  </li>
  </ul>
  </div>
  </div>
  <div class="gray-box sidebar-bottom content-center">
  <div class="img-code">
   <img src="../../assets/static/img-code.png" width="100"/>
  </div>
  <span>扫一扫下载APP</span>
  </div>
 </div>
 <div class="account-content">
  <router-view></router-view>
 </div>
 </div>
 </div>
 <y-footer></y-footer>
 </div>
</template>
<script>
 import YFooter from '/common/footer'
 import YHeader from '/common/header'
 
 export default {
 data () {
 return {
 show: true,
 title: '学院介绍',
 nav: [
  {name: '学院介绍',
  isActive: false,
  secondNav: true, // 是否存在二级菜单,true为存在
  // path: 'background',
  navSecond: [
  {name: '创建背景', path: 'background'},
  {name: '创建单位', path: 'unit'},
  {name: '创建目的'},
  {name: '管理单位'},
  {name: '运行主体'}
  ]
  },
  {name: '关于我们', path: 'aboutMe', isActive: false, secondNav: false}
 ]
 }
 },
 computed: {
 },
 methods: {
 tabSecond (e) {
 this.$router.push({path: '/college/' + e.path})
 },
 tabPrimary (e) {
 let path = this.$route.path.split('/')[2]
 if (e.secondNav) {
 // this.show = !this.show
  if (path === 'aboutMe') {
  this.$router.push({path: '/college/' + e.navSecond[0].path})
  }
 } else {
  this.$router.push({path: '/college/' + e.path})
 }
 }
 },
 created () {
 let path = this.$route.path.split('/')[2]
 this.nav.forEach(item => {
 item.isActive = false
 if (item.secondNav) {
  item.navSecond.forEach(itemT => {
  if (itemT.path === path) {
  this.title = itemT.name
  if (itemT.name === this.title) {
  item.isActive = true // 当属于子菜单时,父菜单高亮
  }
  }
  })
 } else {
  if (item.path === path) {
  this.title = item.name
  item.isActive = true
  }
 }
 })
 },
 components: {
 YFooter,
 YHeader
 },
 watch: {
 $route (to) {
 let path = to.path.split('/')[2]
 this.nav.forEach(item => {
  item.isActive = false
  if (item.secondNav) {
  item.navSecond.forEach(itemT => {
  if (itemT.path === path) {
  this.title = itemT.name
  if (itemT.name === this.title) {
   item.isActive = true // 当属于子菜单时,父菜单高亮
  }
  }
  })
  } else {
  if (item.path === path) {
  this.title = item.name
  item.isActive = true
  }
  }
 })
 }
 }
 }
</script>
<style lang="scss" rel="stylesheet/scss" scoped>
 @import "../../assets/style/mixin";
 .main {
 background: #fff;
 color: #000;
 }
 a {
 color: #000;
 }
 .w {
 padding-top: 40px;
 }
 .img-code {
 margin: 0px auto 12px;
 }
 .content {
 display: flex;
 height: 100%;
 font-size: 16px;
 }
 .sidebar-bottom {
 margin-top: 20px;
 padding: 16px;
 }
 .content-center {
 text-align: center;
 }
 .account-sidebar {
 width: 210px;
 border-radius: 6px;
 .account-nav {
 padding: 15px 0;
 .active {
  color: #0156AC;
 }
 .active a{
  color: #0156AC;
 }
 li:hover {
  a{
  color: #0156AC;
  }
 }
 li {
 position: relative;
 line-height: 48px;
 .account-nav-primary {
  padding: 0px 20px;
  height: 48px;
  span {
  float: left;
  }
  i {
  float: right;
  line-height: 48px;
  font-size: 14px;
  }
 }
 .account-nav-second {
  li {
  list-style: disc;
  list-style-position: inside;
  height: 48px;
  padding: 0 26px;
  text-align: left;
  color: #5B6976;
  cursor: pointer;
  span {
   margin-left: -14px;
   color: #A9B2BC;
  }
  &:hover{
   color: #0156AC;
   span {
   color: #0156AC;
   }
  }
  }
  .active {
  color: #0156AC;
  span {
   color: #0156AC;
  }
  }
 }
 a {
  display: block;
 }
 &.current {
  a {
  position: relative;
  z-index: 1;
  height: 50px;
  background-color: #98AFEE;
  line-height: 50px;
  color: #FFF;
  }
 }
 }
 }
 }
 .account-content {
 margin-left: 24px;
 flex: 1;
 }
</style>

效果图:

vue.js实现左边导航切换右边内容

vue.js实现左边导航切换右边内容

vue.js实现左边导航切换右边内容

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 常用操作整理 基础入门篇
Oct 14 Javascript
jquery 仿QQ校友的DIV模拟窗口效果源码
Mar 24 Javascript
Javascript核心读书有感之类型、值和变量
Feb 11 Javascript
jquery滚动特效集锦
Jun 03 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
Jun 23 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
Oct 25 Javascript
Backbone View 之间通信的三种方式
Aug 09 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
Dec 01 Javascript
微信小程序实现跑马灯效果
Oct 21 Javascript
使用vuex存储用户信息到localStorage的实例
Nov 11 Javascript
JS实现移动端可折叠导航菜单(现代都市风)
Jul 07 Javascript
解决vue init webpack 下载依赖卡住不动的问题
Nov 09 Javascript
vue+element树组件 实现树懒加载的过程详解
Oct 21 #Javascript
JavaScript函数IIFE使用详解
Oct 21 #Javascript
vue实现侧边栏导航效果
Oct 21 #Javascript
vue实现吸顶、锚点和滚动高亮按钮效果
Oct 21 #Javascript
vue-cli基础配置及webpack配置修改的完整步骤
Oct 20 #Javascript
关于Vue中axios的封装实例详解
Oct 20 #Javascript
JavaScript相等运算符的九条规则示例详解
Oct 20 #Javascript
You might like
PHP 选项及相关信息函数库
2006/12/04 PHP
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
访问编码后的中文URL返回404错误的解决方法
2014/08/20 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
javascript 触发事件列表 比较不错
2009/09/03 Javascript
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
如何使用JS在HTML中自定义字符串格式化
2017/07/20 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
2020/05/03 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
2020/08/10 Javascript
Python判断某个用户对某个文件的权限
2016/10/13 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
python实现嵌套列表平铺的两种方法
2018/11/08 Python
Python中捕获键盘的方式详解
2019/03/28 Python
python3.7环境下安装Anaconda的教程图解
2019/09/10 Python
python conda操作方法
2019/09/11 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
Pycharm调试程序技巧小结
2020/08/08 Python
python 使用cycle构造无限循环迭代器
2020/12/02 Python
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
给排水专业应届生求职信
2013/10/12 职场文书
电气工程和自动化自荐信范文
2013/12/25 职场文书
构建高效课堂实施方案
2014/03/13 职场文书
语文课外活动总结
2014/08/27 职场文书
2015入党自传格式范文
2015/06/26 职场文书
小学英语课教学反思
2016/02/15 职场文书
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers