찾다

 >  Q&A  >  본문

vuejs에서 부모를 클릭할 때만 자식 표시

내비게이션 사이드바를 만들려고 합니다. 메인 프로젝트와 서브 프로젝트가 있습니다.

상위 항목을 클릭했을 때만 하위 항목을 표시하려고 하고, 하위 항목을 클릭하면 활성 하위 항목이 다른 색상으로 표시되도록 하고 싶습니다. 이를 어떻게 달성합니까?

지금까지 시도한 내용은 다음과 같습니다.

<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>

P粉574695215P粉574695215278일 전407

모든 응답(1)나는 대답할 것이다

  • P粉132730839

    P粉1327308392024-02-26 17:50:45

    아래 스니펫과 같은 것을 시도해 보세요(중첩된 링크에서 다른 ul를 놓친 다음 목록 색인을 사용하여 탐색 표시/숨기기를 전환하세요).

    으아아아 으아아아 으아아아

    회신하다
    0
  • 취소회신하다