Vue CLI의 active-class를 사용하여 CSS 적용

4885 단어 Vue.jsvue-cli

하고 싶은 일






현재 표시하고 있는 페이지의 아이콘만 색을 바꾼다.
Vuetify를 사용합니다.

방법



active-class 속성을 붙여 CSS를 적용한다.


<router-link active-class="link-active" :to="{name:'Fav'}"> //ハート
 <v-btn icon>
  <v-icon>mdi-heart</v-icon>
 </v-btn>
</router-link>

<router-link active-class="link-active" :to="{name: 'Search'}"> //検索 
 <v-btn icon>
  <v-icon>mdi-magnify</v-icon>
 </v-btn>
</router-link>
<style scoped>
a{
  text-decoration: none;
}
.link-active .v-btn--icon .v-icon{
  color: rgb(202, 96, 114);
}
</style>
.v-btn--icon .v-icon 를 붙이는 것을 잊지 않는다.

문제점



선택되지 않은 링크에도 CSS가 적용됩니다.





검색 페이지에서 하트 아이콘을 적용하지 않지만
URL이 일치하면 그 이후는 모두 active가 되어 버리기 때문에, 하트와 검색의 페이지의 아이콘에 color가 적용되어 버린다.

해결책



exact 추가


active-class 속성에 exact 를 추가해 URL이 정확하게 일치할 때가 아니면 active가 되지 않는다.

최종 코드


<router-link active-class="link-active" exact  :to="{name:'Fav'}">
 <v-btn icon>
  <v-icon>mdi-heart</v-icon>
 </v-btn>
</router-link>

<router-link active-class="link-active" exact  :to="{name: 'Search'}">
 <v-btn icon>
  <v-icon>mdi-magnify</v-icon>
 </v-btn>
</router-link>
<style scoped>
a{
  text-decoration: none;
}
.link-active .v-btn--icon .v-icon{
  color: rgb(202, 96, 114);
}
</style>

좋은 웹페이지 즐겨찾기