欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vue.js中自定义过度类名中的个别属性不起作用的问题

程序员文章站 2022-06-08 17:07:56
...

近日在研究vue.js的过程中发现了一些很费解的问题,以下就是这些问题:
实例主要代码(可以先看问题,再来看代码)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自定义过度类名</title>
    <script src="vue.js"></script>
</head>
<style>
    .Entto {
        color: #ff6666;
    }
    .Ent {
        color: #2bcfff;
    }
    .Lea {
        color: yellow
    }
    .Leato{
        color: purple;
    }
    .EntAct,.LeaAct{
        color: #1c8942;
        transition: all .6s ease;
    }
</style>
<body>
<div id="app">
    <button v-on:click="show=!show">
        Button Hide
    </button>
    <transition
           :duration = "{ enter:500 , leave : 1000}"
            name="hello"
            enter-class="Ent"
            enter-to-class="Entto"
            enter-active-class="EntAct"
            leave-class="Lea"
            leave-active-class="LeaAct"
            leave-to-class="Leato"
    >

        <h1 v-if="show"> Hello world</h1>
    </transition>
</div>
<script>
    new Vue({
        el: '#app',
        data: {
            show: true
        }
    })
</script>
</body>
</html>

1、leave-class中的属性不起作用,(如果你也发现了这个问题不要太纠结了,有解决办法更好,没有就不要用了。)
2、有时候enter-to-class/enter-class/enter-active-class中的渐变属性不起作用:
原因就是:在enter-active-class中有与他们相同的属性,这个时候只有enter-active-class中的属性起作用。(在leave中也有同样的问题)

处理方法:将style中的enter-active-class放到enter-to-class/enter-class前面,这样enter-to-class/enter-class的属性就可以其作用了,(但是enter-active-class中的就没有了作用,也就是说谁放到后面谁其作用。)

三种情况:
1、先后顺序为:enter-class、enter-to-class、enter-active-class或者是enter-to-class、enter-class、enter-active-class;
此时只有enter-active-class的属性有作用。

2、enter-class、enter-active-class、enter-to-class;
此时是由enter-active-class过渡到enter-to-class属性,enter-class不起作用。

3、enter-to-class、enter-active-class、enter-class、
此时是由enter-class过渡到enter-active-class属性,enter-to-class不起作用。

以上就是关于自定义过渡类名问题的见解,leave的问题就自行探索吧。