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类型增加方法的实现代码(增加功能)
Dec 29 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
Dec 19 Javascript
JS异常处理的一个想法(sofish)
Mar 14 Javascript
使用js正则控制input标签只允许输入的值
Jul 29 Javascript
让checkbox不选中即将选中的checkbox不选中
Jul 11 Javascript
理解Javascript图片预加载
Feb 23 Javascript
Vue.js 父子组件通讯开发实例
Sep 06 Javascript
基于Javascript倒计时效果
Dec 22 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
Mar 01 Javascript
JavaScript编写一个贪吃蛇游戏
Mar 09 Javascript
纯js代码生成可搜索选择下拉列表的实例
Jan 11 Javascript
Node实现搜索框进行模糊查询
Jun 28 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/11/25 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
传智播客学习之JavaScript基础篇
2009/11/13 Javascript
js 图片等比例缩放代码
2010/05/13 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
vue.js开发环境安装教程
2017/03/17 Javascript
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
小程序分享模块超级详解(推荐)
2019/04/10 Javascript
Vue-cli3项目引入Typescript的实现方法
2019/10/18 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
python实现代码行数统计示例分享
2014/02/10 Python
python数据结构之图的实现方法
2015/07/08 Python
Python中__init__.py文件的作用详解
2016/09/18 Python
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
python获取代理IP的实例分享
2018/05/07 Python
解决python3 pika之连接断开的问题
2018/12/18 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
Python使用pyexecjs代码案例解析
2020/07/13 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
Shell如何接收变量输入
2016/08/06 面试题
代码中finally中的代码会不会执行
2012/02/06 面试题
电大物流学生的自我评价
2013/10/25 职场文书
大学生就业自我鉴定
2013/10/26 职场文书
初中英语演讲稿
2014/04/29 职场文书
社区安全温馨提示语
2015/07/14 职场文书
PyTorch 如何自动计算梯度
2021/05/23 Python
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技
Python中super().__init__()测试以及理解
2021/12/06 Python