vuepress侧边栏展开配置

简介

研究了好长时间vuepress实现类似官网只展开当前页面导航标题的侧边栏效果,一直没找到实现方式,官方文档也没明确提出这个是如何配置,后来突然搜到一篇文档有个介绍,这里我再说下配置方式。

首先看下官网效果:
在这里插入图片描述
上方为当前打开的标题,下方为其他未打开的标题。

配置方法

1、将sidebar配置的children改为对象组

如下所示,将children数组中的值改为对象类型:

    '/web/': [
        {
            title: '语言基础',
            // sidebarDepth: 3,
            collapsable: true,
            children: [
                {title: 'ECMAScript', path: 'language/ECMAScript'},
            ]
        },
        {
            title: '开发框架',
            // sidebarDepth: 2, // 这里对侧边栏目录显示的标题级别深度起作用
            collapsable: true,
            children: [
                {title: 'vue', path: 'framework/vue'},
                {title: 'vue-cli', path: 'framework/vue-cli'},
                {title: 'vue-router', path: 'framework/vue-router'},
                {title: 'vue-vuex', path: 'framework/vue-vuex'},
            ]
        },
    ]

2、修改config.js

注释掉displayAllHeaders属性设置。

module.exports = {
    ...
    themeConfig: {
        // displayAllHeaders: true, // 默认值:false,这里如果为true,将无法实现侧边栏目录动态展开效果

3、效果

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 Vue 侧边导航展开和折叠的源码示例: ``` <template> <div class="sidebar-container"> <div class="sidebar"> <ul> <li v-for="(item, index) in menuList" :key="index"> <a href="#" @click="toggleSubmenu(index)"> <i :class="item.icon"></i> <span>{{ item.title }}</span> <span v-if="item.submenu" class="submenu-toggle"> <i class="fa fa-chevron-down" v-show="!item.open"></i> <i class="fa fa-chevron-up" v-show="item.open"></i> </span> </a> <ul v-if="item.submenu" :class="{ 'submenu-open': item.open }"> <li v-for="(subitem, subindex) in item.submenu" :key="subindex"> <a :href="subitem.link">{{ subitem.title }}</a> </li> </ul> </li> </ul> </div> </div> </template> <script> export default { data() { return { menuList: [ { title: "Dashboard", icon: "fa fa-tachometer", submenu: [ { title: "Analytics", link: "/dashboard/analytics" }, { title: "Sales", link: "/dashboard/sales" } ] }, { title: "Products", icon: "fa fa-cubes", submenu: [ { title: "All Products", link: "/products/all" }, { title: "Add New", link: "/products/add-new" } ] } ] }; }, methods: { toggleSubmenu(index) { this.menuList[index].open = !this.menuList[index].open; } } }; </script> <style> .sidebar-container { display: flex; flex-direction: row; height: 100vh; } .sidebar { background-color: #333; color: #fff; width: 200px; } ul { list-style: none; margin: 0; padding: 0; } li { border-bottom: 1px solid #555; } a { color: #fff; display: flex; align-items: center; padding: 10px; text-decoration: none; transition: background-color 0.2s ease; } a:hover { background-color: #444; } i { margin-right: 10px; } .submenu-toggle { margin-left: auto; } .submenu-open { display: block; } </style> ``` 在这个示例中,我们的侧边被包含在一个 `.sidebar-container` 容器中,并采用了 Flexbox 布局。我们定义了一个简单的样式来呈现侧边的外观。 在 `data` 中,我们定义了一个 `menuList` 数组,其中包含每个菜单项的标题、图标和子菜单(如果有的话)。我们还添加了一个 `open` 属性来追踪每个菜单项的展开状态。 在模板中,我们使用 `v-for` 指令来循环遍历 `menuList`,并使用 `v-if` 指令来检查菜单项是否有子菜单。我们还添加了一个 `@click` 事件监听器,以便在用户单击菜单项时切换子菜单的展开状态。 在样式中,我们定义了一些基本的样式来呈现菜单项和子菜单的外观。我们使用 `.submenu-open` 类来控制子菜单的可见性。 请注意,这只是一个简单的示例,您可能需要根据自己的需求进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值