CSS Transform - Timing issue on Firefox -
i made css animations, , on webkit (safari/chrome), works fine, on firefox timing messed up.
jsfiddle: http://jsfiddle.net/jmorais/p5xcd/1/
code:
var open = false; var intransition = false; function opencard() { intransition = true; $('.out').addclass('openingout'); $('.in-left').addclass('openingin'); settimeout(function() { $('.out').css("z-index", "2"); $('.in-left').css("z-index", "3"); }, 850); settimeout(function(){ $('.out').removeclass('openingout').addclass('outopen'); $('.in-left').removeclass('openingin').addclass('inopen'); open = true; intransition = false; }, 3000); } function closecard() { intransition = true; $('.out').addclass('closingout'); $('.in-left').addclass('closingin'); settimeout(function() { $('.out').css("z-index", "3"); $('.in-left').css("z-index", "2"); }, 1000); settimeout(function(){ $('.out').removeclass('closingout').removeclass('outopen'); $('.in-left').removeclass('closingin').removeclass('inopen'); open = false; intransition = false; }, 3000); } function togglecard() { if (intransition) { return; } if (open) { closecard(); } else { opencard(); } }
body { margin-left: 350px; } .tile { position:absolute; width:350px; height:400px; left: 50%; margin: 0 auto; background: pink; -webkit-border-radius: 5px; -moz-border-radius: 5px; } .out { z-index: 3; } .in-left { z-index: 2; left: -350px; -webkit-transform: rotatey(-180deg); -webkit-transform-origin: 100% 100%; -moz-transform: rotatey(-180deg); -moz-transform-origin: 100% 100%; } .in-right { z-index: -1; } .content { border: 3px black double; margin: 10px; padding: 20px; height: 335px; } .perspective { -webkit-perspective: 1200px; -moz-perspective: 1200px; position: relative; display: inline-block; } /***************************************** * open ******************************************/ .openingout { /* webkit */ -webkit-animation-name: open-card-out; -webkit-animation-timing-function: ease; -webkit-animation-duration: 3s; -webkit-transition-delay: 0s; -webkit-animation-iteration-count: 1; -webkit-animation-direction: alternate; /* firefox */ -moz-animation-name: open-card-out; -moz-animation-timing-function: ease; -moz-animation-duration: 3s; -moz-transition-delay: 0s; -moz-animation-iteration-count: 1; -moz-animation-direction: alternate; } .openingin { /* webkit */ -webkit-animation-name: open-card-in; -webkit-animation-timing-function: ease; -webkit-animation-duration: 3s; -webkit-transition-delay: 0s; -webkit-animation-iteration-count: 1; -webkit-animation-direction: alternate; /* firefox */ -moz-animation-name: open-card-in; -moz-animation-timing-function: ease; -moz-animation-duration: 3s; -moz-transition-delay: 0s; -moz-animation-iteration-count: 1; -moz-animation-direction: alternate; } .outopen { -webkit-transform: rotatey(180deg); -webkit-transform-origin: 0 0; -moz-transform: rotatey(180deg); -moz-transform-origin: 0 0; } .inopen { -webkit-transform: rotatey(0deg); -webkit-transform-origin: 0 0; -moz-transform: rotatey(0deg); -moz-transform-origin: 0 0; } /* webkit */ @-webkit-keyframes open-card-out { { -webkit-transform-origin: left 0%; -webkit-transform: rotatey(0deg); } { -webkit-transform-origin: left 0%; -webkit-transform: rotatey(-180deg); } } @-webkit-keyframes open-card-in { { -webkit-transform-origin: right 0%; -webkit-transform: rotatey(180deg); } { -webkit-transform-origin: right 0%; -webkit-transform: rotatey(0deg); } } /* firefox */ @-moz-keyframes open-card-out { { -moz-transform-origin: left 0%; -moz-transform: rotatey(0deg); } { -moz-transform-origin: left 0%; -moz-transform: rotatey(-180deg); } } @-moz-keyframes open-card-in { { -moz-transform-origin: right 0%; -moz-transform: rotatey(180deg); } { -moz-transform-origin: right 0%; -moz-transform: rotatey(0deg); } } /***************************************** * close ******************************************/ .closingout { /* webkit */ -webkit-animation-name: close-card-in; -webkit-animation-timing-function: ease; -webkit-animation-duration: 3s; -webkit-transition-delay: 0s; -webkit-animation-iteration-count: 1; -webkit-animation-direction: alternate; /* firefox */ -moz-animation-name: close-card-in; -moz-animation-timing-function: ease; -moz-animation-duration: 3s; -moz-transition-delay: 0s; -moz-animation-iteration-count: 1; -moz-animation-direction: alternate; } .closingin { /* webkit */ -webkit-animation-name: close-card-out; -webkit-animation-timing-function: ease; -webkit-animation-duration: 3s; -webkit-transition-delay: 0s; -webkit-animation-iteration-count: 1; -webkit-animation-direction: alternate; /* firefox */ -moz-animation-name: close-card-out; -moz-animation-timing-function: ease; -moz-animation-duration: 3s; -moz-transition-delay: 0s; -moz-animation-iteration-count: 1; -moz-animation-direction: alternate; } @-webkit-keyframes close-card-in { { -webkit-transform: rotatey(-180deg); -webkit-transform-origin: 0% 0%; } { -webkit-transform: rotatey(0deg); -webkit-transform-origin: 0% 0%; } } @-webkit-keyframes close-card-out { { -webkit-transform-origin: right 0%; -webkit-transform: rotatey(0deg); } { -webkit-transform-origin: right 0%; -webkit-transform: rotatey(180deg); } } @-moz-keyframes close-card-in { { -moz-transform: rotatey(-180deg); -moz-transform-origin: 0% 0%; } { -moz-transform: rotatey(0deg); -moz-transform-origin: 0% 0%; } } @-moz-keyframes close-card-out { { -moz-transform-origin: right 0%; -moz-transform: rotatey(0deg); } { -moz-transform-origin: right 0%; -moz-transform: rotatey(180deg); } }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <div class="perspective" onclick="togglecard();"> <div class="tile out out"> <div class="content"> <p>out</p> </div> </div> <div class="tile in-left"> <div class="content"> <p>in-left</p> </div> </div> <div class="tile in-right"> <div class="content"> <div style="display: table; height: 100%; width: 100%;"> <p>in-right</p> </div> </div> </div> </div>
as can see, in-left div opens in same time out div if you're using safari/chrome, on firefox open @ different times, messing whole animation.
how can fix this?
an answer not needed because animation effects same in both browsers, stable builds tested.
chrome:
19.0.1084.56 (official build 140965) m
firefox:
mozilla/5.0 (windows nt 5.1; rv:13.0) gecko/20100101 firefox/13.0
how ironic non-answer answer.
to sure, flush out browsers cache , test on pc verification.
Comments
Post a Comment