2017-10-07 6 views
0

J'ai un élément qui glisse sur l'écran à partir de ce que je voudrais ressembler à la page, puis glisser et "atterrir" sur le côté opposé. J'ai l'animation vers le bas mais il semble que pendant le retard, l'image se trouve juste sur la page en attente. Le retard est parce que j'ai une autre animation qui doit finir avant que celle-ci commence.Rendre l'élément caché pendant l'animation-retard en CSS

ici est mon code CSS et je suis référençant par classe avec une réaction extrémité avant

.tester{ 
    position: relative; 
    animation-name: test_css_moving_sideways; 
    animation-duration: 3s; 
    animation-iteration-count: 1; 
    animation-direction: linear; 
    left: 90%; 
    animation-delay: 2s; 
} 


@keyframes test_css_moving_sideways { 
    0% { left: 0px; top: 0px;} 
    100% { left: 90%; top: 0px; } 
} 
+1

* "glisse sur l'écran à partir de ce que je voudrais ressembler à la page" * - Alors pourquoi ne pas le démarrer * en fait * hors de la page? Comme dans, définissez la coordonnée 'left' à un montant négatif. Ensuite, il serait caché jusqu'à ce que l'animation l'amène au-delà du bord gauche de la page. – nnnnnn

Répondre

2

1) Pour corriger cela, vous pouvez définir left propriété dans le css pour qu'il se trouve à 0% depuis alors quand votre animation commence, elle ne doit pas se déplacer à gauche de 0% (où votre animation commence) car elle sera déjà là :)

2) Ajoutez animation-fill-mode - cela contrôle ce qui se passe à la fin de l'animation. La définition de cette valeur à forwards appliquera la css de la fin de l'animation à l'objet

donc modifiant votre code CSS à:

.tester{ 
    position: relative; 
    animation-name: test_css_moving_sideways; 
    animation-duration: 3s; 
    animation-iteration-count: 1; 
    animation-direction: linear; 
    left: 0%; 
    animation-delay: 2s; 
    animation-fill-mode: none, forwards; 
} 
+0

Oui, mais quand l'animation est terminée, elle retourne directement sur le côté gauche de l'écran parce que c'est ce que le CSS dit à 'left: 0%;' comment puis-je le faire démarrer à gauche caché, ou hors écran , animer plus à droite, puis rester à droite – KellysOnTop23

+1

@ KellysOnTop23 ah désolé j'ai mal compris :) Ce que vous devez faire est de définir le mode animation-remplissage: avant; qui va garder l'objet où l'animation se termine :) modifié ma réponse originale avec la nouvelle ligne de code - essayez maintenant – Jesus

+0

animation-remplissage-mode l'a fait! merci @Ryan Earnshaw – KellysOnTop23

0

Vérifiez codepen: https://codepen.io/sasssssha/pen/Nayzpg

Vous devez créer une plus classe (.testerAnimated) et ajoutez ce nom de classe à l'élément avec une fonction js (si vous voulez une animation dans un certain temps) ou vous pouvez l'ajouter immédiatement (dans ce cas, l'animation commence quand la page sera chargée). Vérifiez-le:

.testerAnimated{ 
    animation-name: test_css_moving_sideways; 
    animation-duration: 4.5s;   //play with it 
    animation-delay: 2s; 
    }  

    .tester{ 
    position: relative; 
    animation-name: test_css_moving_sideways; 
    left: 90%; 
    visibility:hidden; 
} 


@keyframes test_css_moving_sideways { 
    0% { left: 0px; top: 0px;visibility:visible;} 
    100% { left: 90%; top: 0px;visibility:visible;} 
} 
+0

J'ai réagi dans ce projet, je sais avec jQery c'est facile mais qu'en est-il réagir? – KellysOnTop23

+1

Plus cet extrait ne reste pas sur le côté droit après que l'animation l'envoie là-bas – KellysOnTop23

+0

@ KellysOnTop23 Où voyez-vous l'utilisation de JQuery dans mon code ?????? – user8685433