Maison  >  Article  >  interface Web  >  Une introduction à la différence entre transition et animation en CSS3

Une introduction à la différence entre transition et animation en CSS3

高洛峰
高洛峰original
2017-03-16 10:06:092996parcourir

** Je travaille sur un projet depuis longtemps. Les deux attributs CSS3 transition et animation sont souvent utilisés dans les projets réels. Pensez-y et faites le tri. Comme suit :

1 : Introduisez d'abord la transition :

a. Nous rencontrons souvent de telles situations lorsque nous travaillons sur des projets, comme un bouton qui change lorsque la souris est enfoncée. déplacé dedans. Couleur d'arrière-plan du bouton et couleur de la police, à ce moment-là, nous faisons habituellement ceci :

.btn{width: 80px;height: 25px;border: 1px solid #333;color:#333;text-align: center;line-height: 25px;} 
.btn:hover{background:green;color:white;}

Une introduction à la différence entre transition et animation en CSS3

Une introduction à la différence entre transition et animation en CSS3

b. , nous constaterons que la couleur de l'arrière-plan et de la police change instantanément. Cela n'a-t-il pas l'air particulièrement rigide

A ce moment, la transition apparaît, voir le code :


.btn{width: 80px;height: 25px;border: 1px solid #333;color:#333;text-align: center;line-height: 25px;} 

.btn:hover{background:green;color:white;transition:0.4s;}


c. Après avoir ajouté la transition, nous constaterons que la couleur d'arrière-plan du bouton et la couleur de la police ont un processus progressif au fil du temps jusqu'à la fin.

D'où vient cette progressivité ? Oui, c'est 0,4s

Quand on parle de 0,4s, il faut parler des différents attributs de transition dans lesquels je ne vais pas entrer. détail ici. Je les ai tous écrits sur le blog car vous pouvez vérifier les informations vous-même.

(1 : Les 0,4s ci-dessus sont l'abréviation de l'un des attributs de la transition : durée de transition

durée de transition, comme son nom l'indique, représente la durée du animation, qui correspond à 0,4 s ci-dessus. L'animation de la couleur d'arrière-plan et de la couleur de la police est terminée en 0,4 seconde (2 : lorsqu'il s'agit d'une animation continue en 0,4 seconde, nous devons parler de la vitesse de mouvement de l'objet. Sachez qu'une chose a les types de mouvement suivants :

  (a linéaire : uniforme

  (b easy-in : accélérer

) (c easy-out : décélérer

  (d cubique-bézier

Fonction

: Mode vitesse personnalisé (presque non utilisé)

Dans le code ci-dessus, juste transition s'écrit simplement : 0.4 s; Pourquoi a-t-il un mouvement ?

(3 : C'est comme ça, la transition a un attribut appelé transition-timing-function, la valeur par défaut est facilité, et son mouvement est progressivement ralenti.

n'est pas abrégé en transition : facilité de 0,4 s

d Nous voyons qu'après le survol du bouton, tous les changements décrits par CSS dans le style de survol sont décrits par animation de transition. 🎜>

Mon explication de cette phrase est un peu alambiquée. Expliquons-la directement avec le code :

1) Si nous voulons seulement que la couleur de fond change sur une période de temps, nous Que faire ?


transition: 0.4s background ease-in

2) On a vu le fond dans le code ci-dessus, oui, c'est parce qu'il précise que seule la couleur de fond de l'animation a cette période.

C'est l'abréviation d'une des propriétés de transition, appelée : transition-property Comme son nom l'indique, elle précise la propriété 🎜>e, nous constaterons dans des projets réels que parfois nous avons besoin d'une animation pour avoir un affichage différé, et nous ne voulons pas qu'elle génère une animation immédiatement

À l'heure actuelle, un autre attribut de transition est Sortez, transition- délai

voir code :

Nous constaterons que ce bouton L'animation de la police d'arrière-plan démarre après 1 deuxièmement

transition: 0.4s 1s;

----》 Bien que la transition soit simple et facile à utiliser, nous constaterons qu'elle est soumise à diverses limitations.

1 : La transition nécessite un

événement

pour se déclencher, tel qu'un survol, elle ne peut donc pas se produire automatiquement lorsque la page Web est chargée

2 : La transition est unique et ne peut pas se produire de manière répétée, à moins qu'il ne soit déclenché à plusieurs reprises.

3 : La transition ne peut définir que l'état de départ

et l'état final, mais ne peut pas définir l'état intermédiaire, ce qui signifie qu'il n'y a que deux états.

4 : Une règle de transition ne peut définir des modifications que sur un seul attribut et ne peut pas impliquer plusieurs attributs.

(Pour exprimer clairement, les 4 restrictions ci-dessus sont basées sur l'introduction que j'ai citée sur le blog de Ruan Yifeng)

Afin de percer ces restrictions, une animation est sortie.

2 : animation :

a), n'expliquons pas d'abord les différents attributs de l'animation, passons directement au code d'affichage

Le code ci-dessus produira cet effet, voir capture d'écran :
.c{width: 100px;height: 100px;margin: 200px 0 300px 300px;background: orange; }
        .c:hover{animation: 2s change infinite;}

        @keyframes change {
            0% { background: orange; }
            50% { background: pink;width: 200px; }
            100% { background: red;height: 300px; }
        }

Une introduction à la différence entre transition et animation en CSS3Une introduction à la différence entre transition et animation en CSS3

b),当鼠标移入p的时候,p会发生一系列的样式改变(截图无法表现过程),在2秒的时间完成背景颜色以及宽高的变化,并无限制重复这个两秒的动画,是因为什么呢?

 

 c),我准备作这样的解释,此时,你需要做一个animation动画只需要3点

 1. 需要一个承载动画的元素,如p

 2. 当前的元素写一个animation的css,其中定义你所需要这个动画产生的效果。(你暂时不需要知道如何编写这个动画内部的css)

 3. 编写一个动画进程,以@keyframes关键字来定义,而这个动画的进程有一个名字,如change,

  ----------》你可以把这个进程理解成一个函数,@keyframes对应的就是function,而change对应的就是函数名字-----------》最终等待被调用。

 

 好了,明白了以上三点,我们就可以来剖析animation的庐山真面目了。

 a)我们接着再来看这段代码:

animation: 2s change infinite;
    

@keyframes change {
       0% { background: orange; }
       50% { background: pink;width: 200px; }
       100% { background: red;height: 300px; }
}


 

1. 我们先来看这个“所谓的函数change”

    (1):这个change是animation其中的一个属性,叫做动画名字-----》 animation-name:change;

2. 我们再来看这个“百分比”

     (1):这个百分比你只要理解它是这个这个动画在多少时间内完成的一系列样式改变的进度。这个进度你可以描绘这个元素你想改变的的样式属性(可以定义多种)

     (2):当然也可以这样写:

@keyframes change {
            from { background: orange; }
            50% { background: pink;width: 200px; }
            to { background: red;height: 300px; }
}


 

 3.看完了动画制作的过程,现在我们来看如何调用这个动画:见代码:


.c:hover{animation: 2s change infinite;}


 (1),机智的你肯定看到了2s,是的没错,就是它让动画2秒完成。和transition一样,它是animation的一个属性,

                               叫做:animation-duration: 2s;

 (2),机智的你肯定看到了change,是的没错,就是如此调用这个“动画函数”的.只需要在当前元素animation的css样式里写入就可以了。

 

  (3),刚刚前面我们说了,这段代码会在鼠标移入p元素后2秒的时间完成背景颜色以及宽高的变化,并无限制重复这个两秒的动画

     *:注意看到无限制三个字,

     *:无限制怎么来的呢?此时这段代码只剩下infinite了。

      *:不用想,他也是animation其中之一属性:叫做 animation-iteration-count: infinite;

      *:这个属性是用来定义这个动画应该播放多少次,infinite代表的无限制(无数次),当然你也可以在让它播放一个定值的数次,比如3次


animation-iteration-count: 3;


 在这里,你只需要在animation里的css里写入次数就可以了:


.c:hover{animation: 2s change 3;}


 

 

 4:这个动画虽然已经介绍完了,但是我们会发现动画在两秒钟后又会恢复原样(初始状态):

Une introduction à la différence entre transition et animation en CSS3

此时我们想让动画两秒执行完毕之后保持在结束状态,这该怎么办了,此时animation的另一个属性就派上用场了

                                                                        -------------》animation-fill-mode:forwards;

在这里,你只需要在animation里的css里写入forwards就可以了:


.c:hover{animation: 2s change 3 forwards;}


2秒动画结束后就会是这样:

Une introduction à la différence entre transition et animation en CSS3 

 

 

 5:同样的,animation也和transition一样具备延时动画的属性:

                    ------------》animation-delay: 1s;

同样的animation简写写法如下,代表鼠标移入p内,1秒后动画开始


.c:hover{animation: 2s 1s change 3 forwards;}


 

6:同样的,animation也和transition一样具备动画以何种速度呈现的属性:默认是ease,它运动的形式是逐渐放慢的。

                ------------------》animation-timing-function: ease;

    

     (a  linear:匀速

     (b  ease-in:加速

     (c  ease-out:减速

     (d  cubic-bezier函数:自定义速度模式(几乎不用)

 

****要改变运动形势只要添加相应的速度代表参数了,见代码:


.c:hover{animation: 2s 1s change 3 forwards linear;}


 

7:animation还有一个属性我就不打算细写了,--------》animation-direction,默认情况下是normal,

  它是用来改变动画播放不仅只可以从结束状态跳回到起始状态这种形式。

 

8:上面说过,animation浏览器一加载便可以自动触发:


.c{width: 100px;height: 100px;margin: 200px 0 300px 300px;background: orange; animation: 2s change forwards;}


** 此时你会发现,浏览器一运行这个p就开始动画了。至于什么时候触发,那就要看项目具体需求了。

 

结语:自此,css3中的两大动画transition和animation就介绍完了。如有错误,欢迎指正。

 

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!

Déclaration:
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