Я пытаюсь выполнить переход в Vue, и у меня есть вопрос, как его запустить.
Я видел, что обычно переход запускается v-show или v-if. но есть ли другой способ казнить?
Я хочу
・ Сохранять непрозрачность моего элемента равной 0,2 и становиться равной 1 при срабатывании перехода
The Также я использую Element.getBoundingClientRect (), чтобы определить область, в которой должен произойти переход.
Но, очевидно, v-show или v-if не позволяют мне этого сделать, поскольку они заставляют элемент исчезать или отображать: none (поэтому я не могу измерить элемент с помощью .getBoundingClientRect ( ))
Это мой шаблон
<ul class="outer-wrapper" >
<li class="slide one" >
<div>
<a href="#">
<transition name="fade-animation">
<img v-show="show" ref="slider1" src="../assets/test.png">
</transition>
</a>
</div>
</li>
.
.
.
</ul>
и Vue скрипт
export default {
name: 'test',
data(){
return{
show: false
}
},
methods: {
opacityChange: function () {
let slider = this.$refs.slider1.getBoundingClientRect();
let sliderLeft = Math.floor(slider.left);
let sliderRight = Math.floor(slider.right);
let centerPoint = Math.floor(window.innerWidth / 2);
let sliderWidth = slider.width;
if(sliderRight <= centerPoint + sliderWidth && sliderLeft >= centerPoint - sliderWidth) {
this.show = true;
} else {
this.show = false;
}
}
}
}
и css
.fade-animation-enter,
.fade-animation-enter-leave-to {
opacity: 0.2;
}
.fade-animation-enter-to,
.fade-animation-enter-leave {
opacity: 1;
}
.fade-animation-enter-active,
.fade-animation-enter-leave-active {
transition: opacity, transform 200ms ease-out;
}
Спасибо за ваша помощь :)