javascript - Transition not working without querying width property -
i want animate translatex transition on click event adding class div in js. transform , transition properties added in css file.
var widget = document.getelementbyid('widget'); widget.style.display = 'block'; document.getelementbyid('widget2').clientwidth; //comment line out , wont work widget.classname = 'visible';
it works if query width property of any element in dom before adding class.
here jsfiddle: https://jsfiddle.net/5z9flsr5/2/
can explain why not working?
that's because begin transition , modified display
property "at same time". altering display
ruin transition (citation needed, admittedly), idea isolate display
changing , actual transiting:
https://jsfiddle.net/5z9flsr5/3/
document.getelementbyid('showwidget').addeventlistener('click', function(e) { e.preventdefault(); var widget = document.getelementbyid('widget'); widget.style.display = 'block'; //document.getelementbyid('widget2').clientwidth; window.settimeout(function(){ widget.classname = 'visible'; },0); });
#widget { width: 200px; height: 80px; background: black; position: absolute; transition: transform 500ms; transform: translatex(-200px); display: none; } #widget.visible { transform: translatex(200px); } #widget2 { position: absolute; right: 0 }
<a href="#" id="showwidget">show</a> <div id="widget"></div> <div id="widget2">xxx</div>
querying clientwidth
seems "pause" execution time, works too.
Comments
Post a Comment