Vue.js中触发转换的方式

问题描述 投票:0回答:1

我正在尝试在Vue中进行转换,但我有一个问题如何触发它。

我看到通常情况下,转换是由v-show或v-if触发的。但是还有另一种执行方法吗?

我想

·将元素的不透明度保持为0.2,并在触发转换时变为1

·此外,我还在使用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;
    }

感谢您的帮助:)

javascript vue.js transition
1个回答
0
投票

我认为您可以为此使用常规的CSS过渡(或在某些情况下为JS),而不是Vue过渡。 Vue过渡用于列表/显示/消失。在任何其他情况下,最好使用CSS / JS。他们写了更多关于状态转换的文章here

© www.soinside.com 2019 - 2024. All rights reserved.