【问题标题】:Vue.js: transform animation doesn't work on clickVue.js:变换动画在点击时不起作用
【发布时间】:2018-03-02 09:54:53
【问题描述】:

我在菜单项中有一个箭头图标。当我单击此项目时,会下拉一个小的附加菜单。我需要找到一个解决方案,如何在出现下拉菜单的同时旋转我的图标。我的方法不起作用。

这是我在 Vue 组件中的内容:

     <nav>
        <section class="nav-item" @click="showDropdown = !showDropdown">
          <div class="nav-icon">
            <img src="../../../assets/img/users.svg" />
          </div>
          <h4>Users</h4>
          <div class="arrow" :class="arrowLeft">
            <img src="../../../assets/img/arrow_down.svg" />
          </div>
          <div v-if="showDropdown">
            <span class="sub-nav-item">Import</span>
            <span class="sub-nav-item">Invitations</span>
          </div>
        </section>
      <section class="nav-item">
        <div class="nav-icon">
          <img src="../../../assets/img/polls.svg" />
        </div>
        <h4>Poll</h4>
      </section>
    </nav>

在我的脚本标签中:

<script>
export default {
data() {
  return {
    showDropdown: false,
  };
},
computed: {
  arrowLeft() {
    let arrow = 'turn-arrow';
    if (this.showDropdown === true) {
      return arrow;
    }
    return true;
   },
 },
};
</script>

我的 CSS:

.arrow {
display: inline;
height: 7px;
width: 13px;
margin-left: 13px;
} 
.turn-arrow {
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}

【问题讨论】:

  • 试试&lt;div class="arrow" :class="{arrowLeft: arrowLeft}"&gt;
  • 不幸的是,它没有成功。我之前的解决方案实际上添加了一个带有变换的新类,但它并没有移动我的图标......
  • 这是一种非常精细的方法。完全删除计算的 arrowLeft 并将 div 替换为 &lt;div class="arrow" :class="{'turn-arrow': showDropdown}"&gt;
  • 它仍然添加了一个带有转换的类,但没有任何反应。也许动画本身有问题?
  • 没有其他想法。只要确保你的 CSS 被正确加载。

标签: javascript css animation vue.js rotation


【解决方案1】:

有时,旋转不适用于内联元素。

试试

.arrow {
    display: inline-block; /* or block */
}

https://stackoverflow.com/a/28664701/5599288

【讨论】:

猜你喜欢
  • 2016-03-11
  • 1970-01-01
  • 2016-06-30
  • 2019-08-15
  • 1970-01-01
  • 2019-10-16
  • 2014-07-22
  • 1970-01-01
  • 2017-10-01
相关资源
最近更新 更多