【问题标题】:vue - transform rotate doesn't rotate back when toggle statevue - 切换状态时变换旋转不会旋转回来
【发布时间】:2021-10-21 03:30:49
【问题描述】:

当我点击按钮时,showMore 状态将被切换。

如果我第一次单击它,它会按预期旋转。
但是当我再次单击该按钮时,动画不起作用。

App.vue

<template>
  <div class="item">
    <button class="learn-more-btn" @click="toggleShow">
      <span>Rotate</span>
      <img
        src="./assets/logo.png"
        alt="arrow"
        :class="arrowLeft"
        width="50"
        height="50"
      />
    </button>
  </div>
</template>
<script>
export default {
  components: {},
  data() {
    return {
      showMore: false,
    };
  },
  methods: {
    toggleShow() {
      this.showMore = !this.showMore;
    },
  },
  computed: {
    arrowLeft() {
      let arrow = "turn-arrow";
      if (this.showMore === true) {
        return arrow;
      }
      return true;
    },
  },
};
</script>
<style scoped lang="scss">
.item {
  display: flex;
  border: 1px solid grey;
  width: 150px;
  .learn-more-btn {
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: transparent;
    border: none;
    &:hover {
      cursor: pointer;
    }
    img {
      display: inline-block;
    }
    .turn-arrow {
      -moz-transform: rotate(180deg);
      -ms-transform: rotate(180deg);
      -webkit-transform: rotate(180deg);
      transform: rotate(180deg);
      transition: all 3000ms;
    }
    span {
      padding: 0 0.5rem;
    }
  }
}
</style>

代码沙盒:
https://codesandbox.io/s/headless-fire-ng001?file=/src/App.vue

【问题讨论】:

    标签: javascript html css vue.js


    【解决方案1】:

    我只是稍微重构了你的代码并简化了一些事情。

    我没有使用transitions,而是将它们替换为animations,并在使用此动画的.rotate-down.rotate-up 类之间切换。

    查看:https://codesandbox.io/s/wonderful-wescoff-icnnm?file=/src/App.vue

    希望对你有帮助:)!

    【讨论】:

    • 我希望 animations 依赖于 showMore 状态。有可能吗?
    • 我认为你有你想要实现的确切上下文,只需修改我发送给你的代码以满足你的需要。如果你有任何障碍,现在就告诉我。
    猜你喜欢
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    相关资源
    最近更新 更多