Maison > interface Web > Voir.js > le corps du texte

Comment implémenter une transition échelonnée dans vue

藏色散人
Libérer: 2022-12-26 15:38:57
original
2666 Les gens l'ont consulté

Vue implémente des méthodes de Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue échelonnées : 1. Ouvrez le fichier vue correspondant ; 2. Utilisez le composant Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-group pour exécuter par lots le composant de Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue sur chaque élément de la liste packagée ; 3. Ajoutez des délais différents à chaque élément de la liste.

Comment implémenter une transition échelonnée dans vue

L'environnement d'exploitation de ce tutoriel : système Windows 10, Vue version 3, ordinateur Dell G3.

Comment mettre en œuvre une Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue échelonnée dans vue ?

La liste de Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue échelonnée de Vue

Comment implémenter une Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue échelonnée dans vue

est basée sur vue, ce qui nécessite que vous ayez de l'expérience avec la Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue et le Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-groupde vue > Utiliser et comprendre. La documentation de Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vueComment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-group有过使用和了解。

Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue

vue的文档对 transtion 组件已经有了很详细的 分析 了。

这里说一下我的理解:

transtion 是vue提供的一个抽象组件,会在 合适的时机 帮我们操作其包裹的子元素。

这个合适的时机是:

  1. beforeEnter dom 从 js 生成,并刚插入页面的 那一帧(对应下图的动画开始)
  2. enter dom 插入页面之后的 下一帧(对应下图的动画中)
  3. afterEnter dom 动画完成之后的 下一帧(对应下图的动画结束)
Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue

Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-group

ransition-group组件 会对包裹的列表中每一个元素批量进行 transtion组件 的操作。

html
<div>
    <comment impl une comment transition dans vue vue-group>
        <item></item>
    </comment>implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-group>
</div>
Copier après la connexion
css.list-enter {    opacity: 0;    transform: translateY(100%);
}.list-enter-active {    Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue: .3s;
}/* enter-to其实可以不用写, 没有显性写明,就是默认的opacity: 1;transform: none;  */.list-enter-to {    opacity: 1;    transform: translateY(0);
}
Copier après la connexion
Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-group

接下来给 每个列表项 加上不同 延时 即可。

Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-delay

css.list-enter-active:nth-child(5n+2) {    Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-delay: .3s;
}.list-enter-active:nth-child(5n+3) {    Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-delay: .5s;
}.list-enter-active:nth-child(5n+4) {    Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-delay: .7s;
}.list-enter-active:nth-child(5n+5) {    Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-delay: .9s;
}复制代码
Copier après la connexion
Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-delay

用 Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-delay 配合 css选择器,确实可以实现Comment implémenter une Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue échelonnée dans vue,

但是缺点也很明显,要写大量的 css ,修改起来也不灵活。

接下来我们用vue的 JavaScript钩子 来实现。

Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue

html<div>
    <!-- 这里加上 v-bind:css="false" 让vue跳过对css的检测,让我们更好控制 动画完成的时机 -->
    <comment impl une comment transition dans vue vue-group>

        <item></item>

    </comment>implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-group></div>复制代码
Copier après la connexion

当只用 JavaScript 过渡的时候,在 enter 和 leave 中必须使用 done 进行回调。否则,它们将被同步调用,过渡会立即完成。

new Vue({    el: "#app",    data: () => ({        num: 0
    }),    methods: {        //让我们在 beforeEnter enter afterEnter 钩子里,把 vue 帮我们做的事,自己做一遍:
        //添加移除 class 类名,监听 Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vueend 事件。
        beforeEnter(dom) {
            dom.classList.add('list-enter', 'list-enter-active');
        },        enter(dom,done) {            let delay = dom.dataset.delay;            Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue(function () {
                dom.classList.remove('list-enter');
                dom.classList.add('list-enter-to');                //监听 Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vueend 事件
                var Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vueend = window.onComment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vueend ? "Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vueend" : "webkitTransitionEnd";
                dom.addEventListener(Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vueend, function onEnd() {
                  dom.removeEventListener(Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vueend, onEnd);                  done(); //调用done() 告诉vue动画已完成,以触发 afterEnter 钩子
                });
            }, delay)
        },        afterEnter(dom) {
            dom.classList.remove('list-enter-to', 'list-enter-active');
        }
    }
})复制代码
Copier après la connexion
Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue

目前来说,运行良好,实现了Comment implémenter une Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue échelonnée dans vue的效果,也不用写大量的 css。

回头看看我们一共做了2件事,用 .list-enter .list-enter-toComment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue

告诉浏览器,在不同的时间把列表项,从opacity 0 translateY(100%) 过渡到,opacity 1 translateY(0)

Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue

vue contient déjà des informations très détaillées sur le composant transtionAnalyse

.

Voici ma compréhension :

transtion est un composant abstrait fourni par vue, qui nous aidera à faire fonctionner ses sous-éléments enveloppés au moment approprié.

Cet instant approprié est :

  1. beforeEnter dom est généré à partir de js et le cadre vient d'être inséré dans la page (correspondant au début de l'animation dans l'image ci-dessous) li>
  2. enter dom est l'image suivante après insertion dans la page (correspondant à l'animation ci-dessous)
  3. afterEnter dom est l'image suivante une fois l'animation terminée (correspondant à la fin de l'animation dans l'image ci-dessous)

Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue
Comment implémenter une transition échelonnée dans vue

Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-group

ransition-group sera effectuer un traitement par lots sur chaque élément de la liste enveloppée. Le fonctionnement du composant transtion.

html
<div>
        <comment impl une comment transition dans vue vue-group>

            <item></item>

        </comment>implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-group>
    </div>
Copier après la connexion
new Vue({
    el: "#app",
    data: () => ({
        num: 0
    }),
    methods: {        beforeEnter(dom) {
            let { x = 0, y = 0, s = 1, opacity = 0 } = dom.dataset;
            dom.Comment implémenter une transition échelonnée dans vue.cssText = `Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue: .3s;opacity: ${opacity};transform: scale(${s}) translateX(${x}) translateY(${y});`;
        },        enter(dom,done) {
            let delay = dom.dataset.delay;            Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue(function () {
                dom.Comment implémenter une transition échelonnée dans vue.cssText = `Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue: .3s;opacity: 1;transform: scale(1) translateX(0) translateY(0);`;                //监听 Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vueend 事件
                var Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vueend = window.onComment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vueend ? "Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vueend" : "webkitTransitionEnd";
                dom.addEventListener(Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vueend, function onEnd() {
                  dom.removeEventListener(Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vueend, onEnd);                  done(); //调用done() 告诉vue动画已完成,以触发 afterEnter 钩子
                });
            }, delay)
        },        afterEnter(dom) {
            dom.Comment implémenter une transition échelonnée dans vue.cssText = "";
        }
    }
})
Copier après la connexion
Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-group
Comment implémenter une transition échelonnée dans vue
Ensuite, ajoutez simplement des délais différents à chaque élément de la liste.

délai de Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue

html
    <item></item>
Copier après la connexion
Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-delay
🎜🎜🎜En utilisant Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue-delay avec le sélecteur css, vous pouvez en effet réaliser des Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vues échelonnées, 🎜🎜 mais les inconvénients sont aussi évidents, il faut écrire beaucoup de css, et il est difficile à modifier. 🎜🎜Ensuite, nous utilisons le hook JavaScript de vue pour l'implémenter. 🎜

Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue🎜
getRandom() {    var rate = Math.floor(Math.random() * 90 + 10);    return Math.random() > 0.5 ? rate : -1 * rate;
}
Copier après la connexion
🎜🎜Lorsque seul JavaScript est utilisé pour la Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue, done doit être utilisé pour les rappels en entrée et en sortie. Sinon, ils sont appelés de manière synchrone et la Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue s'effectue immédiatement. 🎜🎜rrreee🎜Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue🎜🎜🎜 🎜Jusqu'à présent, cela fonctionne bien, obtenant l'effet d'une Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue échelonnée, et il n'est pas nécessaire d'écrire beaucoup de CSS. 🎜🎜Avec le recul, nous avons fait 2 choses au total, en utilisant .list-enter .list-enter-to et Comment implémenter une Comment implémenter une transition échelonnée dans vue échelonnée dans vue🎜🎜 pour indiquer au navigateur à différents moments Transition l'élément de liste de opacity 0 TranslateY(100%) à opacity 1 TranslateY(0). 🎜🎜 Indiquez au navigateur les différents états des éléments. En plus du nom de la classe, 🎜🎜 nous pouvons directement faire fonctionner le dom et écrire le Comment implémenter une transition échelonnée dans vue en ligne 🎜🎜 En plus de ne pas avoir à écrire du tout le nom de la classe CSS, 🎜🎜. peut également avoir plus de programmabilité. 🎜🎜Comment implémenter une transition échelonnée dans vue🎜rrreeerrreee🎜🎜🎜🎜🎜🎜Oui, mais comme tout est en js, la seule chose qui peut être limitée est votre imagination. 🎜rrreeerrreee🎜🎜🎜🎜Apprentissage recommandé : "🎜Tutoriel vidéo vue.js🎜"🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal