如何使用 VueJS router-link 活动样式

2024-05-01

我的页面当前有 Navigation.vue 组件。 我想让每个导航悬停并处于活动状态。这hover有效但是active没有。

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

这就是悬停现在的样子,与活动状态下的预期完全相同。

如果您能给我造型方面的建议,我将不胜感激router-link积极的作品。 谢谢。


The :活动伪类 https://developer.mozilla.org/en-US/docs/Web/CSS/:active与添加类来设置元素的样式不同。

:active CSS 伪类表示一个元素(例如按钮) 正在被用户激活。使用鼠标时,“激活” 通常在按下鼠标按钮时开始,在以下时间结束 它被释放了。

我们要寻找的是一个类,比如.active,我们可以用它来设置导航项的样式。

有关之间差异的更清晰示例:active and .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>

Vue-路由器

vue-router自动应用两个活动类,.router-link-active and .router-link-exact-active,到<router-link>成分。


router-link-active https://v3.router.vuejs.org/api/#active-class

该类自动应用于<router-link>当组件的目标路由匹配时。

其工作方式是使用包容性匹配行为。例如,<router-link to="/foo">只要当前路径以以下开头,就会应用此类/foo/ or is /foo.

所以,如果我们有<router-link to="/foo"> and <router-link to="/foo/bar">,两个组件都会得到router-link-active当路径为/foo/bar.


router-link-exact-active https://v3.router.vuejs.org/api/#exact-active-class

该类自动应用于<router-link>当组件的目标路径是exact匹配。考虑到两个班级,router-link-active and router-link-exact-active,将应用于本例中的组件。

使用相同的示例,如果我们有<router-link to="/foo"> and <router-link to="/foo/bar">, the router-link-exact-active类会only被应用于<router-link to="/foo/bar">当路径是/foo/bar.


确切的道具 https://v3.router.vuejs.org/api/#exact

假设我们有<router-link to="/">,将会发生的情况是该组件将对每条路线都处于活动状态。这可能不是我们想要的,所以我们可以使用exact像这样的道具:<router-link to="/" exact>。现在,组件仅在完全匹配时才会应用活动类/.


CSS

我们可以使用这些类来设计元素的样式,如下所示:

 nav li:hover,
 nav li.router-link-active,
 nav li.router-link-exact-active {
   background-color: indianred;
   cursor: pointer;
 }

The <router-link>标签已使用更改tag prop, <router-link tag="li" />.


全局更改默认类

如果我们希望更改提供的默认类vue-router在全球范围内,我们可以通过将一些选项传递给vue-router像这样的实例:

const router = new VueRouter({
  routes,
  linkActiveClass: "active",
  linkExactActiveClass: "exact-active",
})

更改每个组件实例的默认类(<router-link>)

相反,如果我们想更改每个的默认类<router-link>并且不是在全球范围内,我们可以通过使用active-class https://v3.router.vuejs.org/api/#active-class and exact-active-class https://v3.router.vuejs.org/api/#exact-active-class像这样的属性:

<router-link to="/foo" active-class="active">foo</router-link>

<router-link to="/bar" exact-active-class="exact-active">bar</router-link>

v 槽 API https://v3.router.vuejs.org/api/#v-slot-api-3-1-0

Vue Router 3.1.0+ 通过以下方式提供低级定制作用域槽 https://v2.vuejs.org/v2/guide/components-slots.html#Scoped-Slots。当我们希望设置包装元素的样式(例如列表元素)时,这会很方便<li>,但仍将导航逻辑保留在锚元素中<a>.

<router-link
  to="/foo"
  v-slot="{ href, route, navigate, isActive, isExactActive }"
>
  <li
    :class="[isActive && 'router-link-active', isExactActive && 'router-link-exact-active']"
  >
    <a :href="href" @click="navigate">{{ route.fullPath }}</a>
  </li>
</router-link>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 VueJS router-link 活动样式 的相关文章

随机推荐

  • 如何向 SDL 线程发送附加参数?

    是的 我知道如何创建 SDL 线程 int myfunc void data my code SDL CreateThread mythread SDL CreateThread myfunc NULL 但如果我想做类似的事情怎么办 int
  • 在列表列表中查找形状

    节目说明 该计划的目的 我的程序旨在计算 20X15 大小的平面中形状的位置 我有一个形状列表 其中包含形状类型 其 ID 半径或高度以及其在平面上的预期 X Y 位置 我有一个不同的二元运算列表 仅包含形状类型 其 id 及其与另一个形状
  • 如何通过 Python 的请求使用 FTP

    是否可以使用requests与 FTP 站点交互的模块 requests获取 HTTP 页面非常方便 但当我尝试使用 FTP 站点时 我似乎遇到架构错误 我有什么遗漏的吗requests允许我执行 FTP 请求 还是不支持 对于像我一样得到
  • char* 与 const char* 作为参数

    我在使用的时候很多时候都会遇到编译错误char 代替const char 所以 我不确定实际的区别 语法和编译机制 如果您追求两者之间的差异 只需将它们视为 char 是一个指针 指向包含也可以更改的 char 类型值的位置 指针的值可以更
  • 使用 nzsql 将数据导出到 CSV

    我想从 netezza 将数据导出为 CSV 数据由数百万行记录组成 数据应位于引号内 并应使用 作为分隔符 例如 a b c 每当您想要从 Netezza 导出数据时 您都会需要使用其外部表功能 如果要导出到 Netezza 主机本地安装
  • 使用 jQuery 的 $.get 和 GMail API 时出现 401(未经授权)错误

    我试图在用户使用 javascript 使用 G API 登录后运行 jQuery 的 get 但在浏览器控制台中收到 401 未经授权 错误 这是我请求的 url 的格式 https www googleapis com gmail v1
  • Office-js for OneNote 对象中的 getRestApiId 函数

    我正在为 OneNote 开发加载项 但在使用 OneNote REST API 时遇到了问题 因为 Office js 不提供与 REST API 兼容的 ID 堆栈溢出 https stackoverflow com questions
  • 使用端口 80 (Ubuntu / Linode) 运行 Node.js 的最佳实践 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在设置我的第一个Node js服务器上的cloud Linux node我对以下细节还很陌生Linux admin 顺便说一句 我并没有尝试
  • 意外运行 Xcode8 模拟器后,Xcode 8 beta 模拟器无法运行应用程序

    无法启动与模拟器的服务连接 尝试清理应用程序 重新安装它 删除派生数据 重置模拟器设置 重新启动 xCode 我还听说其他人通过重新创建模拟器来解决模拟器的问题 我也尝试过 当我按创建时 我收到完全相同的错误消息 回复中返回错误 连接无效
  • Jhipster 实体子生成器:如何创建 liquibase DELTA 变更日志?

    jhipster version 5 3 4 我正在评估 JHipster 并测试它如何处理数据库 DDL 修改 在我的测试中 我创建了一个 Jhipster 项目 然后运行jhipster import jdl model jh JHip
  • OCI 已弃用 Helm Chart 导出命令

    Helm 最近删除了命令 helm Chart Export 有谁知道它的替代品是什么 我们曾经将它用于 ACR 注册表 helm registry login reponame login pass helm chart pull rep
  • 以编程方式设置文本后,自动链接检测在 NSTextView 中不起作用

    我有一个启用了自动链接检测的 NSTextView 当我以编程方式设置文本时 myTextView setString http google com 它不会自动显示链接 如果我在文本视图中输入任何内容 它将添加链接 我希望它添加链接 不得
  • Moq-ing 类或接口有什么区别?

    我一直在使用moq http code google com p moq 在我的单元测试中模拟对象 我在关于最小起订量的网站上看到它能够模拟类和接口 有一天 我与我的一位同事进行了讨论 他们表示没有理由模拟类 我应该只模拟接口 我对此并没有
  • 使用 Vagrant 配置机器并在脚本停止处拾取时是否可以重新启动机器?

    我正在阅读 bash 中的教程 其中他们说重新启动机器 没有直接重新启动服务的选项 这是重新启动机器的问题 然后还有更多命令在配置时仍然需要运行 那么有没有办法在配置过程中重新启动盒子 然后从上次中断的地方继续进行呢 据我所知 如果尝试重新
  • 棒棒糖中的 takePicture 失败

    以下代码正在使用 可在后台拍照 它对于棒棒糖以下的所有版本都工作正常 但在以下版本中给出运行时异常takePicture null null mcall 有任何想法吗 public void takePictures final int d
  • 是否可以强制 Visual Studio 2010 使用 Visual Basic 10?

    要重现我收到的错误 在 Visual Basic 中创建一个新的 Visual Studio 2010 ASP NET 网站 面向 NET 2 0 输入 公共财产测试作为字符串 请注意 Visual Basic 9 0 不支持自动实现的属性
  • C++ 中的类型作为返回类型

    是否有可能从函数返回一个类型作为返回类型 并将其用作成员变量 如下所示 constexpr type myFunction int a int b if a b 8 return int 8t if a b 16 return int 16
  • jQuery UI - 可拖动在放置后无法立即工作

    HTML div class character list div class character list container div img class 1 src http ahna web44 net img charas 13 p
  • 如何从 CGImage 获取原始像素数据[重复]

    这个问题在这里已经有答案了 如何在缩放和移动后获取UIimage的像素数据 我想获取CGImage像素数据 然后从CGImage像素数据中获取UIImage 我们该怎么做 您可以通过调用获取原始数据 CFDataRef rawData CG
  • 如何使用 VueJS router-link 活动样式

    我的页面当前有 Navigation vue 组件 我想让每个导航悬停并处于活动状态 这hover有效但是active没有 这是 Navigation vue 文件的样子