【问题标题】:Change image of selected更改所选图像
【发布时间】:2021-08-06 05:58:42
【问题描述】:

我是 Vue 的新手,所以我需要你的帮助。 我有一个菜单组件,我基本上有一个侧边栏菜单。在我的侧边栏菜单中,我列出了不同的导航。我的 html 代码如下所示:


<template>
  <menu>
    <router-link to="/">
      <li>
        <div class="Pic">
          <img src="Pic1-active” />
        </div>
        <div class="Name">Home</div>
      </li>
    </router-link>
    <router-link to="/distination2">
      <li>
        <div class="Pic">
          <img src=”pic2-inactive" />
        </div>
        <div class="Name">Home2</div>
      </li>
    </router-link>
   <router-link to="/distination3">
      <li>
        <div class="Pic">
          <img src=”pic3-inactive" />
        </div>
        <div class="Name">Home3</div>
      </li>
    </router-link>
  </menu>
</template>

我可以动态更改活动 routerlink 的 css。例如,在我的样式表中,我可以这样做:

menu{

//some styles applied to menu

   a{
      text-decoration: none;

      &.router-link-exact-active{  //these styles are applied only when routerlink is clicked/activated
      li {
        color: red;
      }
    }
}

但是,当我单击其中一个链接时,我还希望能够将我的 img 源更改为不同的图片。每个链接我有两张图片。一张图片称为“pic-active”,另一张称为“pic-inactive”,对于第二个routerlink,我有“pic2-active”和“pic2-inactive”等等。有没有办法在单击路由器时动态更改我的图像源?谢谢!

【问题讨论】:

  • 活动路由器链接将应用一个类。您可以使用它并根据父类隐藏/显示图像
  • 您能详细说明一下吗?我不完全了解使用 routerlink 导航时如何更改图片。对不起,我是初学者..
  • 为活动和非活动图像添加一个 img 标签,给它们类名。默认情况下使用display: none; 隐藏活动的img,当父级具有router-link-exact-active 类时显示它。对非活动图像执行相反的操作。这有意义吗?
  • 好的,谢谢!现在更有意义了,我会尝试这样的事情!

标签: javascript html css vue.js


【解决方案1】:
Basically you can do something like this and give conditional so when they meet requirements you get the style/ image you want

   
 <template>
      <menu>
        <router-link to="/">
          <li>
            <div :class="toggleData ? 'style-one' : 'style-two'"> <!-- Check if toggledata true we use style-one css, if not style-two -->
              <img :src="toggleData ? 'image-one-link' : 'image-link-two'" /> <!-- Check if toggledata true we use image-one-link, if not image-two-link -->
            </div>
            <div class="name" >Home</div>
          </li>
        </router-link>
        <router-link to="/distination2">
          <li>
            <div class="Pic">
              <img src='' />
            </div>
            <div class="Name">Home2</div>
          </li>
        </router-link>
        <router-link to="/distination3">
          <li>
            <div class="Pic">
              <img src='' />
            </div>
            <div class="Name">Home3</div>
          </li>
        </router-link>
        <button @click="buttonClick"> Click Me </button> <!-- When button click we change toggleData value to true -->
      </menu>
    </template>
    
    <script>
    export default {
      data() {
        return {
          toggleData: false,
        };
      },
      methods: {
        buttonClick() {
          this.toggleData = true;
        },
      },
    }
    </script>
    
    <style scoped>
    .style-one {
      background: red;
    }
    .style-two {
      background: blue;
    }
    </style>

【讨论】:

  • 这确实有效,因为我已经尝试过类似的方法。但是,我对每个 routerlink 都有不同的图片,每个路由器都有一个 pic-active 和 pic-inactive 图像。然后我需要为它们中的每一个编写一个新方法,因为我不能为每个 div 使用切换数据(如果它是真的,那么它对所有人都是真的,并且所有人都会同时改变图片,这不是我想要的达到)。无论如何,谢谢你的遮阳篷:)
  • 您是否尝试过使用带有 $route.fullPath 的条件语句?因此,当它满足确切的路由器链接时,我们将更改图像链接。你可以把它放在 Vue.js 中的“计算”下
猜你喜欢
  • 2021-04-14
  • 1970-01-01
  • 2012-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-30
  • 1970-01-01
相关资源
最近更新 更多