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 EasyUI 对话框的使用方法
Oct 24 Javascript
js特殊字符转义介绍
Nov 05 Javascript
uploadify多文件上传参数设置技巧
Nov 16 Javascript
在JavaScript中call()与apply()区别
Jan 22 Javascript
js判断复选框是否选中及选中个数的实现代码
May 30 Javascript
Webpack打包慢问题的完美解决方法
Mar 16 Javascript
jQuery实现简单的滑动导航代码(移动端)
May 22 jQuery
vue父组件中获取子组件中的数据(实例讲解)
Sep 27 Javascript
微信小程序wx.request实现后台数据交互功能分析
Nov 25 Javascript
jQuery封装animate.css的实例
Jan 04 jQuery
vue webpack打包后图片路径错误的完美解决方法
Dec 07 Javascript
详解ES6数组方法find()、findIndex()的总结
May 12 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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
论坛头像随机变换代码
2006/10/09 PHP
PHP中实现进程间通讯
2006/10/09 PHP
几个学习PHP的网址
2006/11/25 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
php文件缓存方法总结
2016/03/16 PHP
php依赖注入知识点详解
2019/09/23 PHP
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
2014/04/25 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
原生js结合html5制作简易的双色子游戏
2015/03/30 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
nodejs dgram模块广播+组播的实现示例
2019/11/04 NodeJs
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
python中wx将图标显示在右下角的脚本代码
2013/03/08 Python
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
python正则表达式实例代码
2020/03/03 Python
Python小整数对象池和字符串intern实例解析
2020/03/21 Python
Django form表单与请求的生命周期步骤详解
2020/06/07 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
css3选择器基本介绍
2014/12/15 HTML / CSS
DELPHI中如何调用API,可举例说明
2014/01/16 面试题
电大物流学生的自我评价
2013/10/25 职场文书
教师个人剖析材料
2014/02/05 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
教师工作表现评语
2014/12/31 职场文书
2019求职信:应届生求职信范文
2019/04/24 职场文书
Python实现随机生成迷宫并自动寻路
2021/06/13 Python