Je veux faire les choses suivantes:transition CSS position ne fonctionne pas du tout lorsqu'il est réglé avec JavaScript
- montrent un élément div;
- le déplacer dans une position initiale;
- définir les propriétés de transition;
- déplacez-le vers la position cible en utilisant la transition CSS.
Un exemple minimal:
function bla() {
/*
var obj = $('#box');
obj.css("left", "200px");
obj.css("display", "initial");
obj.addClass("trans");
obj.css("left", "500px");
*/
var elem = document.getElementById('box');
elem.style.left = "200px";
elem.style.display = "initial";
elem.className = "box trans";
elem.style.left = "500px";
}
#btn {
position: fixed;
top: 60px;
left: 0px;
width: 50px;
height: 50px;
background-color: #FEDCBA;
}
.box {
display: none;
position: fixed;
top: 0px;
left: 0px;
width: 50px;
height: 50px;
background-color: #ABCDEF;
}
.box.trans {
-webkit-transition: left 2s;
-moz-transition: left 2s;
transition: left 2s;
}
<div id="box" class="box"></div>
<div id="btn" onclick="bla()">click here</div>
Cela ne fonctionne pas du tout. Qu'est-ce qui ne va pas?
Si je mets l'élément initialement visible, je reçois une transition en douceur à partir de l'origine left:0
qui est tout à fait étrange parce que je cède elem.style.left = "200px";
avant ajouter réellement les propriétés de transition ...
Si vous utilisez CSS transforme, ne serait-il plus facile de coller vos nouveaux styles dans une classe et simplement ajouter cette classe? – DBS
Malheureusement, je ne peux pas parce que je dois caluler la position. – DyingSoul