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 相关文章推荐
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
Jun 02 Javascript
javascript函数以及基础写法100多条实用整理
Jan 13 Javascript
JQuery处理json与ajax返回JSON实例代码
Jan 03 Javascript
jQuery多条件筛选如何实现
Nov 04 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
Jan 29 Javascript
简单谈谈Javascript函数中的arguments
Feb 09 Javascript
javascript编程实现栈的方法详解【经典数据结构】
Apr 11 Javascript
js通过Date对象实现倒计时动画效果
Oct 27 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
Oct 26 Javascript
vue-router命名路由和编程式路由传参讲解
Jan 19 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
Mar 01 Javascript
js实现网页随机验证码
Oct 19 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下的权限算法的实现
2007/04/28 PHP
PHP操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
在PHP中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
2012/09/13 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
你不知道的文件上传漏洞php代码分析
2016/09/29 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
js 浮动层菜单收藏
2009/01/16 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
Jquery插件写法笔记整理
2012/09/06 Javascript
Jquery chosen动态设置值实例介绍
2013/08/08 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
JavaScript中的this机制
2016/01/30 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
详解node登录接口之密码错误限制次数(含代码)
2019/10/25 Javascript
vue实现图片上传到后台
2020/06/29 Javascript
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
python中实现控制小数点位数的方法
2019/01/24 Python
Django的models模型的具体使用
2019/07/15 Python
python读取csv文件指定行的2种方法详解
2020/02/13 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
HTML5通用接口详解
2016/06/12 HTML / CSS
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
高中自我评价分享
2013/12/05 职场文书
师范院校学生自荐信范文
2013/12/27 职场文书
大二法英学生职业生涯规划范文
2014/02/27 职场文书
2014旅游局党组书记党建工作汇报材料
2014/11/02 职场文书