Как активировать стиль VueJS router-link

В моей странице в настоящее время имеется компонент Navigation.vue. Я хочу, чтобы каждый навигация и активный навигация. "Наведение" работает, но "активный" - нет.

Вот как выглядит файл Navigation.vue:

<template>
    <div>
        <nav class="navbar navbar-expand-lg fixed-top row">

                    <router-link tag="li" class="col" class-active="active" to="/" exact>TIME</router-link>
                    <router-link tag="li" class="col" class-active="active" to="/CNN" exact>CNN</router-link>
                    <router-link tag="li" class="col" class-active="active" to="/TechCrunch" exact>TechCrunch</router-link>
                    <router-link tag="li" class="col" class-active="active" to="/BBCSport" exact>BBC Sport</router-link>
        </nav>
    </div>
</template>

И вот стиль.

<style>

   nav li:hover,
   nav li:active{
      background-color: indianred;
      cursor: pointer;
    }

</style>

Вот как выглядит зависание сейчас и ожидалось точно так же в активном режиме. Вот как выглядит зависание сейчас и ожидалось точно так же на активном.

Я был бы признателен, если бы вы дали мне совет по стилизации работы роутера-ссылки. Спасибо.

Ответ 1

Псевдокласс: active - это не то же самое, что добавление класса для стилизации элемента.

Псевдокласс: active CSS представляет элемент (такой как кнопка), который активируется пользователем. При использовании мыши "активация" обычно начинается при нажатии кнопки мыши и заканчивается при ее отпускании.

Мы ищем класс, например .active, который мы можем использовать для .active элемента навигации.

Для более ясного примера различия между :active и .active смотрите следующий фрагмент:

li:active {
  background-color: #35495E;
}

li.active {
  background-color: #41B883;
}
<ul>
  <li>:active (pseudo-class) - Click me!</li>
  <li class="active">.active (class)</li>
</ul>

Ответ 2

Когда вы создаете маршрутизатор, вы можете указать linkExactActiveClass как свойство для установки класса, который будет использоваться для ссылки активного маршрутизатора.

const routes = [
  { path: '/foo', component: Foo },
  { path: '/bar', component: Bar }
]

const router = new VueRouter({
  routes,
  linkActiveClass: "active", // active class for non-exact links.
  linkExactActiveClass: "active" // active class for *exact* links.
})

Это документировано здесь.

Ответ 3

https://router.vuejs.org/en/api/router-link.html добавить атрибут active-class= "active", например:

<ul class="nav navbar-nav">
    <router-link tag="li" active-class="active" to="/" exact><a>Home</a></router-link>
    <router-link tag="li" active-class="active" to="/about"><a>About</a></router-link>
    <router-link tag="li" active-class="active" to="/permission-list"><a>Permisison</a></router-link>
</ul>