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

Popular posts from this blog

assembly - What is the addressing mode for ld, add, and rjmp instructions? -

vowpalwabbit - Interpreting Vowpal Wabbit results: Why are some lines appended by "h"? -

Is there a way to convert an HTML page styled with Bootstrap CSS into email-compatible html? -