当NUXT-Link处于活动状态时,请更改图标?

发布于 2025-02-13 08:39:36 字数 1206 浏览 0 评论 0原文

我在Navbar中有3个链接,每个链接包含2个图标(假设Icon-1和Icon-2),但是我只想一次显示1个图标。


iCON-1当NUXT-LINK处于活动状态并悬停的


ICON-2当NUXT-Link不活动时,

这是我的代码,

     <ul>
        <li class="nav-list-item" v-for="(link, i) in navLinks" :key="i">
          <nuxt-link :to="link.path">
            <img :src="link.inactive"> //this is icon-1
            <img :src="link.active"> //this is icon-2
            <span class="nav-title">{{link.title}}</span>
          </nuxt-link>
        </li>
      </ul>

这是我的脚本

data() {
    return {
      

      navLinks: [
        { 
          title: 'Link 1', 
          path: '/' , 
          inactive: './Icons/home-icon-1.svg', 
          active: './Icons/home-icon-2.svg'
        },
        { 
          title: Link 2', 
          path: '/about' , 
          inactive: './Icons/about-icon-1.svg', 
          active: './Icons/about-icon-2.svg'
        },
        { 
          title: 'link 3', 
          path: '/contact' , 
          inactive: './Icons/contact-icon-1.svg', 
          active: './Icons/contact-icon-2.svg'
        },
        
      ]
    }
  },

I have 3 links in navbar and each link contains 2 icons (lets say icon-1 and icon-2), but i want to show only 1 icon at a time.


icon-1 when nuxt-link is active and hovered


icon-2 when nuxt-link is inactive

this is my code

     <ul>
        <li class="nav-list-item" v-for="(link, i) in navLinks" :key="i">
          <nuxt-link :to="link.path">
            <img :src="link.inactive"> //this is icon-1
            <img :src="link.active"> //this is icon-2
            <span class="nav-title">{{link.title}}</span>
          </nuxt-link>
        </li>
      </ul>

this is my script

data() {
    return {
      

      navLinks: [
        { 
          title: 'Link 1', 
          path: '/' , 
          inactive: './Icons/home-icon-1.svg', 
          active: './Icons/home-icon-2.svg'
        },
        { 
          title: Link 2', 
          path: '/about' , 
          inactive: './Icons/about-icon-1.svg', 
          active: './Icons/about-icon-2.svg'
        },
        { 
          title: 'link 3', 
          path: '/contact' , 
          inactive: './Icons/contact-icon-1.svg', 
          active: './Icons/contact-icon-2.svg'
        },
        
      ]
    }
  },

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

避讳 2025-02-20 08:39:36

首先,您需要在每个链接对象中设置活动状态:

    {
      title: 'Link 1',
      path: '/',
      inactive: './Icons/home-icon-1.svg',
      active: './Icons/home-icon-2.svg',
      isActive: false,
    },

然后,您必须在NUXT链接和逻辑上设置两个本机事件侦听器以显示IMG:

<nuxt-link
    :to="link.path"
    @mouseover.native="link.isActive = true"
    @mouseleave.native="link.isActive = false"
  >
    <img v-if="link.isActive"
          :src="link.inactive">
    <img v-else
      :src="link.active">
    <span class="nav-title">{{ link.title }}</span>
</nuxt-link>

First of all you need to set active state in every link object:

    {
      title: 'Link 1',
      path: '/',
      inactive: './Icons/home-icon-1.svg',
      active: './Icons/home-icon-2.svg',
      isActive: false,
    },

then you must set two native event listeners on nuxt link and logic to show img:

<nuxt-link
    :to="link.path"
    @mouseover.native="link.isActive = true"
    @mouseleave.native="link.isActive = false"
  >
    <img v-if="link.isActive"
          :src="link.inactive">
    <img v-else
      :src="link.active">
    <span class="nav-title">{{ link.title }}</span>
</nuxt-link>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文