Ich versuche eine Navigationsseitenleiste zu erstellen. Es wird Hauptprojekte und Unterprojekte geben.
Ich versuche, die untergeordneten Elemente nur anzuzeigen, wenn auf das übergeordnete Element geklickt wird, und ich möchte, dass das aktive untergeordnete Element eine andere Farbe hat, wenn ich auf das untergeordnete Element klicke. Wie erreiche ich das?
Hier ist, was ich bisher versucht habe.
<template> <div> <nav> <ul> <li v-for="(link, index) in navLinks" :key="index"> <router-link :to="link.path" class-active="active"> <span class="items"> {{ link.text }} </span> </router-link> <div v-if="link.sublinks && link.sublinks.length > 0"> //I want it to show only when the parent item is clicked <li v-for="(link, index) in belowLinks" :key="index"> <router-link :to="link.path" class-active="sub-active"> //trying to add the sub-active class but it's not working <span class="sub-items"> {{ link.text }} </span> </router-link> </li> </div> </li> </ul> </nav> </div> </template> <script> export default { data() { return { navLinks: [ { text: 'Contact', path: '/contact', sublinks: [ { text: 'Email', path: '/email', }, ], }, { text: 'About', path: '/about', }, ], belowLinks: [ { text: 'Blog', path: '/blog', }, { text: 'Portfolio', path: '/portfolio', }, ], }; }, }; </script> <style scoped > nav { height: 100vh; display: flex; flex-direction: column; background: #040521; justify-content: space-between; } ul { display: flex; align-items: center; margin-block-start: 0; margin-block-end: 0; padding-inline-start: 0; flex-direction: column; } a { text-decoration: none; display: flex; align-items: center; color: white; } a:hover { color: white; } li { list-style-type: none; padding: 10px 0px; width: 100%; } .page-link .active, .router-link-active { background-color: green; color: white !important; border-color: inherit !important; } .sub-active { background-color: yellow !important; color: white !important; border-color: inherit !important; } .items { padding: 10px 20px; } .sub-items { padding: 10px 0px 10px 40px; } </style>
尝试像下面的代码片段(您在嵌套链接中错过了另一个
ul
,然后只需使用列表索引切换显示/隐藏导航):