CSS Transitions not working when class is changed by javascript called from child element -
CSS Transitions not working when class is changed by javascript called from child element -
i've created modal window fades in , out when click anchor. html simple:
<div id="main_wrapper" class="displayed"> //some content here </div> <div id="dynamic"> //dynamically generated (ajax) content here //the below anchor skips css transition somehow! <a href='#' onclick='toggledynamic(); homecoming false;'>cancel</a> </div> //this anchor works intended <a href='#' onclick='toggledynamic(); homecoming false;'>dynamic</a> the css more complex, , i've left out properties sake of brevity:
.displayed{ opacity: 1 !important; pointer-events: auto !important; transition: opacity 1s ease-in .5s !important; } #main_wrapper{ max-width: 800px; opacity: 0; pointer-events: none; transition: opacity 1s linear; } #dynamic{ position: fixed; display: block; opacity: 0; pointer-events: none; max-width: 800px; transition: opacity 1s linear; } then utilize toggling javascript function:
function $i(id) { homecoming document.getelementbyid(id); } var dynamic = $i('dynamic'); var main = $i('main_wrapper'); function toggledynamic() { if(dynamic.classname === "") { dynamic.classname = "displayed"; main.classname = ""; } else { dynamic.classname = ""; main.classname = "displayed"; } } all of above code works expected except 1 thing - when anchor within #dynamic clicked, div disappears without transition! can't create sense of this, can click on outside anchor day , nice fading transition.
this occurs in browsers far can tell (ie, ff, chrome, opera).
edit: i've changed javascript wasn't addressing classname before.
i can't see why js work is, since you're not modifying #dynamic class, variable (dynamic). me corrected snippet works charm.
class="snippet-code-js lang-js prettyprint-override">function $i(id) { homecoming document.getelementbyid(id); } var dynamic = $i('dynamic').classname; var main = $i('main_wrapper').classname; function toggledynamic() { if($i('dynamic').classname === "") { $i('dynamic').classname = "displayed"; main = ""; } else { $i('dynamic').classname = ""; main = "displayed"; } } class="snippet-code-css lang-css prettyprint-override">.displayed{ opacity: 1 !important; pointer-events: auto !important; transition: opacity 1s ease-in .5s !important; } #main_wrapper{ max-width: 800px; opacity: 0; pointer-events: none; transition: opacity 1s linear; } #dynamic{ position: fixed; display: block; opacity: 0; pointer-events: none; max-width: 800px; transition: opacity 1s linear; } class="snippet-code-html lang-html prettyprint-override"><div id="main_wrapper" class="displayed"> //some content here </div> <div id="dynamic"> //dynamically generated (ajax) content here //the below anchor skips css transition somehow! <a href='#' onclick='toggledynamic(); homecoming false;'>cancel</a> </div> //this anchor works intended <a href='#' onclick='toggledynamic(); homecoming false;'>dynamic</a>
javascript css css-transitions
Comments
Post a Comment