如何在vue-cli中更改每个页面的CSS样式

问题描述 投票:0回答:1

这是App.vue文件

<template>
  <div id="app">
    <main-header/>
    <router-view/>
    <main-footer/>
  </div>
</template>

<script>
  import MainHeader from './components/layouts/MainHeader'
  import MainFooter from './components/layouts/MainFooter'

  export default {
    name: 'App',
    components: {
      'main-header': MainHeader,
      'main-footer': MainFooter
    }
  }
</script>

Header.vue文件是

<ul class="nav nav-pills" id="mainNav">
    <li class="dropdown">
        <a class="active" href="/">
            Home
        </a>
    </li>
    <li>
        <a class="dropdown-item dropdown-toggle" href="/test1">
            test1
        </a>
    </li>
    <li>
        <a class="dropdown-item dropdown-toggle" href="/test2">
            test2
        </a>
    </li>
</ul>

我想为每个页面分别激活“活动班级”。我不知道该怎么办

如果我单击“ test2”,则活动类必须仅使用带有“ test2”的标记进行维护如何解决此问题?

vue.js vue-cli
1个回答
0
投票

您可以考虑将Vue-routeractive-class属性一起使用

<ul class="nav nav-pills" id="mainNav">
  <router-link to="/" tag="li" class="dropdown" active-class="active">Home</router-link>
  <router-link to="/test1" tag="li" class="dropdown-item dropdown-toggle" active-class="active">Test1</router-link>
  <router-link to="/test2" tag="li" class="dropdown-item dropdown-toggle" active-class="active">Test2</router-link>
</ul>

另一个朴素的解决方案是检查window.location.href,但要涵盖所有可能的情况并不简单。

<ul class="nav nav-pills" id="mainNav">
    <li class="dropdown">
        <a class="active" href="/">
            Home
        </a>
    </li>
    <li>
        <a class="dropdown-item dropdown-toggle" href="/test1" :class="getClass('/test1')">
            test1
        </a>
    </li>
    <li>
        <a class="dropdown-item dropdown-toggle" href="/test2" :class="getClass('/test2')">
            test2
        </a>
    </li>
</ul>
<script>
export default {
  methods: {
    getClass(url) {
      if (window.location.href.includes(url)) {
        return "active"
      }
      return ""
    }
  }
}
</script>
© www.soinside.com 2019 - 2024. All rights reserved.