Vue CLIのactive-classを使ってCSSを適用させる
やりたいこと
現在表示しているページのアイコンだけ色を変える。
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>
<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
をつけることを忘れない。
問題点
選択されていないlinkにもcssが適用されてしまう。
検索のページでは、ハートのアイコンは適用してほしくないが
URLが一致しているとそれ以降は全てactiveになってしまうため、ハートと検索のページのアイコンにcolorが適用されてしまう。
解決策
exact
を追加
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>
<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>
Author And Source
この問題について(Vue CLIのactive-classを使ってCSSを適用させる), 我々は、より多くの情報をここで見つけました https://qiita.com/shon-011/items/57fb1c0d683b3a8d94f9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .