vue过渡模式(out-in)不生效问题

2019-07-24  本文已影响0人  redpeanuts

用vue的过渡模式来实现一个开关,实现点击之后延迟切换的效果.但是一开始mode='out-in'一直不生效,原因是切换的元素tag名相同时,vue会直接替换这两个元素的content而不是切换。所以需给元素加一个distinct key。

 <div>
      <transition name="fade"
                  mode="out-in">
        <button @click="co"
                v-if="on"
                key="1">{{bt}}</button>
        <button @click="co"
                key='2'>{{bt}}</button>
      </transition>
    </div>

//script
export default {
  data () {
    return {
      show: false,
      docState: 'saved',
      on: false,
      bt: 'on'
    }
  },
  methods: {
    co () {
      this.on = this.on === false
      this.bt = this.on ? 'on' : 'off'
    }
  }
}

//style
.fade-enter-active,
.fade-leave-active {
  transition: opacity 0.5s;
}

.fade-enter,
.fade-leave-active {
  opacity: 0;
}
上一篇下一篇

猜你喜欢

热点阅读