J'ai un élément avec style
position: relative;
transition: all 2s ease 0s;
Ensuite, je veux changer sa position en douceur après avoir cliqué dessus, mais lorsque j'ajoute le changement de style, la transition n'a pas lieu, mais l'élément se déplace instantanément.
$$('.omre')[0].on('click',function(){
$$(this).style({top:'200px'});
});
Cependant si je change la color
propriété par exemple, cela change en douceur.
$$('.omre')[0].on('click',function(){
$$(this).style({color:'red'});
});
Quelle pourrait en être la cause? Y a-t-il des propriétés qui ne sont pas «transitoires»?
EDIT : J'imagine que j'aurais dû mentionner que ce n'est pas jQuery, c'est une autre bibliothèque. Le code semble fonctionner comme prévu, des styles sont ajoutés, mais la transition ne fonctionne que dans le second cas?
javascript
css
transition
php_nub_qq
la source
la source
.on()
méthode. Sinon, qu'est-ce que $$?top
semble être dans la liste, ce qui élimine mon doute sur le fait detop
ne pas être disponible pour les transitions.top
valeur définie (à 0 par exemple) avant de la changer (en 200 ou autre)Réponses:
Essayez de définir une valeur par défaut dans le css (pour lui indiquer où vous voulez qu'il commence)
CSS
la source
transition: top 1s ease 0s;
pourtop
seulementPeut-être que vous avez besoin de spécifier une valeur supérieure dans votre jeu de règles css, afin qu'il saura quelle valeur Animer de .
la source
Dans mon cas, la position div a été fixée, l'ajout de la position gauche ne suffisait pas, cela n'a commencé à fonctionner qu'après l'ajout d'un bloc d'affichage
left:0; display:block;
la source
Quelque chose qui n'est pas pertinent pour le PO, mais peut-être pour quelqu'un d'autre dans le futur:
Pour pixels (
px
), si la valeur est "0", l'unité peut être omise:right: 0
et lesright: 0px
deux fonctionnent.Cependant j'ai remarqué que dans Firefox et Chrome ce n'est pas le cas pour l'unité des secondes (
s
). Alors que lestransition: right 1s ease 0s
travaux,transition: right 1s ease 0
(unité manquantes
pour la dernière valeurtransition-delay
) ne pas (il fait cependant le travail Edge).Dans l'exemple suivant, vous verrez que cela
right
fonctionne pour les deux0px
et0
, maistransition
ne fonctionne que pour0s
et cela ne fonctionne pas avec0
.la source
Réponse: Oui .
Si la propriété n'est pas répertoriée ici, elle n'est pas «transitoire» .
Référence: Propriétés CSS animables
la source
J'ai rencontré ce problème aujourd'hui. Voici ma solution hacky.
J'avais besoin d'un élément de position fixe pour effectuer une transition de 100 pixels lors du chargement.
la source