Animation not functioning as it is set - javascript
I am wanting text to come out of a bag and in a vertical manner and then do a 90 degree turn, so that the text is in a correct position right where I want it.
Right now, my test goes in a huge circle on my page. It lands where I want it to, but it comes out of the page completely wrong. I created a fiddle, but it is really not doing any justice because it doesn't look mine at all. If there was any way to show what mine was doing I would.
I want it to look like names are being taken from a bag. Just like they would be if you had 10 people in a room pulling names out of a bag.
https://jsfiddle.net/n2o672q3/1/
I have these keyframes set to the fegree I want, so again, I'm not sure why mine do a 360.
#-moz-keyframes spin {
0% {
-moz-transform: rotate(110deg);
}
100% {
-moz-transform: rotate(0deg);
}
}
#-webkit-keyframes spin {
0% {
-webkit-transform: rotate(110deg);
}
100% {
-webkit-transform: rotate(0deg);
}
}
#keyframes spin {
0% {
-webkit-transform: rotate(110deg);
transform:rotate(110deg);
}
Just image a bird flying up and doing a large circle in the air and that is what mine is doing.
Any idea how I can fix this?
Have you considered the use of transform-origin property?
Take a look at this. Is this what you are trying to achieve?
CSS:
.shuffle_results {
position: relative;
z-index: -1;
font-size: 2em;
-webkit-animation:spin 3s linear;
-moz-animation:spin 3s linear;
animation:spin 3s linear;
-webkit-transform-origin: 0% 50%;
-moz-transform-origin: 0% 50%;
transform-origin: 0% 50%;
}
#-moz-keyframes spin {
0% { -moz-transform: translate(0px, 200px) rotate(140deg); }
100% { -moz-transform: translate(0px, 0px) rotate(0deg); }
}
#-webkit-keyframes spin {
0% { -webkit-transform: translate(0px, 200px) rotate(140deg); }
100% { -webkit-transform: translate(0px, 0px) rotate(0deg); }
}
#keyframes spin {
0% { -webkit-transform: translate(100px, 200px) rotate(140deg); transform: translate(100px, 200px) rotate(140deg); }
100% { -webkit-transform: translate(0px, 0px) rotate(0deg); transform: translate(0px, 0px) rotate(0deg); }
}
#paperBag {
position: relative;
bottom: 0px;
left: 0px;
margin-top: 40px;
z-index: 1;
}
Related
How can I remove the pace loading page from the website HTML page?
How can I remove the pace loading page from the website HTML page? css pace file: .pace { -webkit-pointer-events: none; pointer-events: none; -webkit-user-select: none; -moz-user-select: none; user-select: none; -webkit-perspective: 12rem; -moz-perspective: 12rem; -ms-perspective: 12rem; -o-perspective: 12rem; perspective: 12rem; z-index: 2000; position: fixed; height: 6rem; width: 6rem; margin: auto; top: 0; left: 0; right: 0; bottom: 0; } .pace .pace-activity { display: block; position: fixed; z-index: 2000; top: 35px; right: 35px; width: 20px; height: 20px; border: solid 2px transparent; border-top-color: #0aa699; border-left-color: #0aa699; border-radius: 20px; -webkit-animation: pace-spinner 400ms linear infinite; -moz-animation: pace-spinner 400ms linear infinite; -ms-animation: pace-spinner 400ms linear infinite; -o-animation: pace-spinner 400ms linear infinite; animation: pace-spinner 400ms linear infinite; } .pace.pace-inactive .pace-activity { display: none; } #-webkit-keyframes pace-spinner { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } #-moz-keyframes pace-spinner { 0% { -moz-transform: rotate(0deg); transform: rotate(0deg); } 100% { -moz-transform: rotate(360deg); transform: rotate(360deg); } } #-o-keyframes pace-spinner { 0% { -o-transform: rotate(0deg); transform: rotate(0deg); } 100% { -o-transform: rotate(360deg); transform: rotate(360deg); } } #-ms-keyframes pace-spinner { 0% { -ms-transform: rotate(0deg); transform: rotate(0deg); } 100% { -ms-transform: rotate(360deg); transform: rotate(360deg); } } #keyframes pace-spinner { 0% { transform: rotate(0deg); transform: rotate(0deg); } 100% { transform: rotate(360deg); transform: rotate(360deg); } } pace js file : /*! pace 0.4.15 */ (function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O=[].slice,P={}.hasOwnProperty,Q=function(a,b){function c(){this.constructor=a}for(var d in b)P.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},R=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};s={catchupTime:500,initialRate:.03,minTime:500,ghostTime:250,maxProgressPerFrame:10,easeFactor:1.25,startOnPageLoad:!0,restartOnPushState:!0,restartOnRequestAfter:500,target:"body",elements:{checkInterval:100,selectors:["body"]},eventLag:{minSamples:10,sampleCount:3,lagThreshold:3},ajax:{trackMethods:["GET"],trackWebSockets:!1}},z=function(){var a;return null!=(a="undefined"!=typeof performance&&null!==performance?"function"==typeof performance.now?performance.now():void 0:void 0)?a:+new Date},B=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,r=window.cancelAnimationFrame||window.mozCancelAnimationFrame,null==B&&(B=function(a){return setTimeout(a,50)},r=function(a){return clearTimeout(a)}),D=function(a){var b,c;return b=z(),c=function(){var d;return d=z()-b,b=z(),a(d,function(){return B(c)})},c()},C=function(){var a,b,c;return c=arguments[0],b=arguments[1],a=3<=arguments.length?O.call(arguments,2):[],"function"==typeof c[b]?c[b].apply(c,a):c[b]},t=function(){var a,b,c,d,e,f,g;for(b=arguments[0],d=2<=arguments.length?O.call(arguments,1):[],f=0,g=d.length;g>f;f++)if(c=d[f])for(a in c)P.call(c,a)&&(e=c[a],null!=b[a]&&"object"==typeof b[a]&&null!=e&&"object"==typeof e?t(b[a],e):b[a]=e);return b},o=function(a){var b,c,d,e,f;for(c=b=0,e=0,f=a.length;f>e;e++)d=a[e],c+=Math.abs(d),b++;return c/b},v=function(a,b){var c,d,e;if(null==a&&(a="options"),null==b&&(b=!0),e=document.querySelector("[data-pace-"+a+"]")){if(c=e.getAttribute("data-pace-"+a),!b)return c;try{return JSON.parse(c)}catch(f){return d=f,"undefined"!=typeof console&&null!==console?console.error("Error parsing inline pace options",d):void 0}}},null==window.Pace&&(window.Pace={}),A=Pace.options=t(s,window.paceOptions,v()),h=function(a){function b(){return M=b.__super__.constructor.apply(this,arguments)}return Q(b,a),b}(Error),b=function(){function a(){this.progress=0}return a.prototype.getElement=function(){var a;if(null==this.el){if(a=document.querySelector(A.target),!a)throw new h;this.el=document.createElement("div"),this.el.className="pace pace-active",document.body.className=document.body.className.replace("pace-done",""),document.body.className+=" pace-running",this.el.innerHTML='<div class="pace-progress">\n <div class="pace-progress-inner"></div>\n</div>\n<div class="pace-activity"></div>',null!=a.firstChild?a.insertBefore(this.el,a.firstChild):a.appendChild(this.el)}return this.el},a.prototype.finish=function(){var a;return a=this.getElement(),a.className=a.className.replace("pace-active",""),a.className+=" pace-inactive",document.body.className=document.body.className.replace("pace-running",""),document.body.className+=" pace-done"},a.prototype.update=function(a){return this.progress=a,this.render()},a.prototype.destroy=function(){try{this.getElement().parentNode.removeChild(this.getElement())}catch(a){h=a}return this.el=void 0},a.prototype.render=function(){var a,b;return null==document.querySelector(A.target)?!1:(a=this.getElement(),a.children[0].style.width=""+this.progress+"%",(!this.lastRenderedProgress||0|(this.lastRenderedProgress|0!==this.progress))&&(a.children[0].setAttribute("data-progress-text",""+(0|this.progress)+"%"),this.progress>=100?b="99":(b=this.progress<10?"0":"",b+=0|this.progress),a.children[0].setAttribute("data-progress",""+b)),this.lastRenderedProgress=this.progress)},a.prototype.done=function(){return this.progress>=100},a}(),g=function(){function a(){this.bindings={}}return a.prototype.trigger=function(a,b){var c,d,e,f,g;if(null!=this.bindings[a]){for(f=this.bindings[a],g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(c.call(this,b));return g}},a.prototype.on=function(a,b){var c;return null==(c=this.bindings)[a]&&(c[a]=[]),this.bindings[a].push(b)},a}(),J=window.XMLHttpRequest,I=window.XDomainRequest,H=window.WebSocket,u=function(a,b){var c,d,e,f;f=[];for(d in b.prototype)try{e=b.prototype[d],null==a[d]&&"function"!=typeof e?f.push(a[d]=e):f.push(void 0)}catch(g){c=g}return f},i=function(a){function b(){var a,c=this;b.__super__.constructor.apply(this,arguments),a=function(a){var b;return b=a.open,a.open=function(d,e){var f;return f=(null!=d?d:"GET").toUpperCase(),R.call(A.ajax.trackMethods,f)>=0&&c.trigger("request",{type:d,url:e,request:a}),b.apply(a,arguments)}},window.XMLHttpRequest=function(b){var c;return c=new J(b),a(c),c},u(window.XMLHttpRequest,J),null!=I&&(window.XDomainRequest=function(){var b;return b=new I,a(b),b},u(window.XDomainRequest,I)),null!=H&&A.ajax.trackWebSockets&&(window.WebSocket=function(a,b){var d;return d=new H(a,b),c.trigger("request",{type:"socket",url:a,protocols:b,request:d}),d},u(window.WebSocket,H))}return Q(b,a),b}(g),K=null,w=function(){return null==K&&(K=new i),K},A.restartOnRequestAfter!==!1&&w().on("request",function(b){var c,d,e;return e=b.type,d=b.request,Pace.running?void 0:(c=arguments,setTimeout(function(){var b,f,g,h,i,j,k;if(f="socket"===e?d.readyState<2:0<(i=d.readyState)&&4>i){for(Pace.restart(),j=Pace.sources,k=[],g=0,h=j.length;h>g;g++){if(b=j[g],b instanceof a){b.watch.apply(b,c);break}k.push(void 0)}return k}},A.restartOnRequestAfter))}),a=function(){function a(){var a=this;this.elements=[],w().on("request",function(){return a.watch.apply(a,arguments)})}return a.prototype.watch=function(a){var b,c,d;return d=a.type,b=a.request,c="socket"===d?new l(b):new m(b),this.elements.push(c)},a}(),m=function(){function a(a){var b,c,d,e,f,g,h=this;if(this.progress=0,null!=window.ProgressEvent)for(c=null,a.addEventListener("progress",function(a){return h.progress=a.lengthComputable?100*a.loaded/a.total:h.progress+(100-h.progress)/2}),g=["load","abort","timeout","error"],d=0,e=g.length;e>d;d++)b=g[d],a.addEventListener(b,function(){return h.progress=100});else f=a.onreadystatechange,a.onreadystatechange=function(){var b;return 0===(b=a.readyState)||4===b?h.progress=100:3===a.readyState&&(h.progress=50),"function"==typeof f?f.apply(null,arguments):void 0}}return a}(),l=function(){function a(a){var b,c,d,e,f=this;for(this.progress=0,e=["error","open"],c=0,d=e.length;d>c;c++)b=e[c],a.addEventListener(b,function(){return f.progress=100})}return a}(),d=function(){function a(a){var b,c,d,f;for(null==a&&(a={}),this.elements=[],null==a.selectors&&(a.selectors=[]),f=a.selectors,c=0,d=f.length;d>c;c++)b=f[c],this.elements.push(new e(b))}return a}(),e=function(){function a(a){this.selector=a,this.progress=0,this.check()}return a.prototype.check=function(){var a=this;return document.querySelector(this.selector)?this.done():setTimeout(function(){return a.check()},A.elements.checkInterval)},a.prototype.done=function(){return this.progress=100},a}(),c=function(){function a(){var a,b,c=this;this.progress=null!=(b=this.states[document.readyState])?b:100,a=document.onreadystatechange,document.onreadystatechange=function(){return null!=c.states[document.readyState]&&(c.progress=c.states[document.readyState]),"function"==typeof a?a.apply(null,arguments):void 0}}return a.prototype.states={loading:0,interactive:50,complete:100},a}(),f=function(){function a(){var a,b,c,d,e,f=this;this.progress=0,a=0,e=[],d=0,c=z(),b=setInterval(function(){var g;return g=z()-c-50,c=z(),e.push(g),e.length>A.eventLag.sampleCount&&e.shift(),a=o(e),++d>=A.eventLag.minSamples&&a<A.eventLag.lagThreshold?(f.progress=100,clearInterval(b)):f.progress=100*(3/(a+3))},50)}return a}(),k=function(){function a(a){this.source=a,this.last=this.sinceLastUpdate=0,this.rate=A.initialRate,this.catchup=0,this.progress=this.lastProgress=0,null!=this.source&&(this.progress=C(this.source,"progress"))}return a.prototype.tick=function(a,b){var c;return null==b&&(b=C(this.source,"progress")),b>=100&&(this.done=!0),b===this.last?this.sinceLastUpdate+=a:(this.sinceLastUpdate&&(this.rate=(b-this.last)/this.sinceLastUpdate),this.catchup=(b-this.progress)/A.catchupTime,this.sinceLastUpdate=0,this.last=b),b>this.progress&&(this.progress+=this.catchup*a),c=1-Math.pow(this.progress/100,A.easeFactor),this.progress+=c*this.rate*a,this.progress=Math.min(this.lastProgress+A.maxProgressPerFrame,this.progress),this.progress=Math.max(0,this.progress),this.progress=Math.min(100,this.progress),this.lastProgress=this.progress,this.progress},a}(),F=null,E=null,p=null,G=null,n=null,q=null,Pace.running=!1,x=function(){return A.restartOnPushState?Pace.restart():void 0},null!=window.history.pushState&&(L=window.history.pushState,window.history.pushState=function(){return x(),L.apply(window.history,arguments)}),null!=window.history.replaceState&&(N=window.history.replaceState,window.history.replaceState=function(){return x(),N.apply(window.history,arguments)}),j={ajax:a,elements:d,document:c,eventLag:f},(y=function(){var a,c,d,e,f,g,h,i,l;for(Pace.sources=F=[],h=["ajax","elements","document","eventLag"],d=0,f=h.length;f>d;d++)c=h[d],A[c]!==!1&&F.push(new j[c](A[c]));for(l=null!=(i=A.extraSources)?i:[],e=0,g=l.length;g>e;e++)a=l[e],F.push(new a(A));return Pace.bar=p=new b,E=[],G=new k})(),Pace.stop=function(){return Pace.running=!1,p.destroy(),q=!0,null!=n&&("function"==typeof r&&r(n),n=null),y()},Pace.restart=function(){return Pace.stop(),Pace.start()},Pace.go=function(){return Pace.running=!0,p.render(),q=!1,n=D(function(a,b){var c,d,e,f,g,h,i,j,l,m,n,o,r,s,t,u,v,w;for(j=100-p.progress,d=r=0,e=!0,h=s=0,u=F.length;u>s;h=++s)for(n=F[h],m=null!=E[h]?E[h]:E[h]=[],g=null!=(w=n.elements)?w:[n],i=t=0,v=g.length;v>t;i=++t)f=g[i],l=null!=m[i]?m[i]:m[i]=new k(f),e&=l.done,l.done||(d++,r+=l.tick(a));return c=r/d,p.update(G.tick(a,c)),o=z(),p.done()||e||q?(p.update(100),setTimeout(function(){return p.finish(),Pace.running=!1},Math.max(A.ghostTime,Math.min(A.minTime,z()-o)))):b()})},Pace.start=function(a){t(A,a),Pace.running=!0;try{p.render()}catch(b){h=b}return document.querySelector(".pace")?Pace.go():setTimeout(Pace.start,50)},"function"==typeof define&&define.amd?define(function(){return Pace}):"object"==typeof exports?module.exports=Pace:A.startOnPageLoad&&Pace.start()}).call(this); these two css and js files are put as a link in my php file, when removing them, a blank page is coming, everything in the html is disappeared. I don't know how can I get rid of that pace loading feature.
Bootstrap 4 dropdown animation
how can I use some animation on dropdowns? Take a look on stripe.com footer and click on location or language links. I've record a video of this effect: https://www.youtube.com/watch?v=WV0h2zlE7fQ or worse GIF version http://g.recordit.co/w1S4fSrUBA.gif It would be nice if some of those libs can be used: Dynamics.js Animate.css My external html/js/css coder told me, that is impossible due fact, that Bootstrap 4 use transform property for positioning of dropdown menu itself. Prepered jsfiddle with default bootstrap setup. https://jsfiddle.net/7hq03Lov/4/ Additional question - can be some any other animation applied on modal too?
You can do it via css, Change as per your need. .dropdown .dropdown-menu{ -webkit-animation: swing-in-top-fwd 1s cubic-bezier(0.175, 0.885, 0.320, 1.275) alternate both; animation: swing-in-top-fwd 1s cubic-bezier(0.175, 0.885, 0.320, 1.275) alternate both; } #-webkit-keyframes swing-in-top-fwd { 0% { -webkit-transform: rotateX(-100deg); transform: rotateX(-100deg); -webkit-transform-origin: top; transform-origin: top; opacity: 0; } 100% { -webkit-transform: rotateX(0deg); transform: rotateX(0deg); -webkit-transform-origin: top; transform-origin: top; opacity: 1; } } #keyframes swing-in-top-fwd { 0% { -webkit-transform: rotateX(-100deg); transform: rotateX(-100deg); -webkit-transform-origin: top; transform-origin: top; opacity: 0; } 100% { -webkit-transform: rotateX(0deg); transform: rotateX(0deg); -webkit-transform-origin: top; transform-origin: top; opacity: 1; } }
Not able to restart animation
I am trying to restart css animation when contents of div is changed. I have tried all method i can find googling none of them seems to work. I have tried JQUERY $("p1").removeClass("content"); $("p1").addClass("content"); JAVASCRIPT var elm = this, var newone = elm.cloneNode(true); elm.parentNode.replaceChild(newone, elm); and some other methods like setting display to none and then block or changing animationName Here is my code HTML <div id="content"> <div class="content" id="p1"> <div class="person"></div> <img src="img/saying.png" class="statusclound"/> <p class="status"></p> <img class="frame" src="img/splash_1.png" id="frame_1"/> </div> </div> CSS .content { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); display: none; animation-duration: 1s; animation-timing-function: linear; animation-iteration-count: 1; animation-direction: alternate; animation-fill-mode: forwards; } #keyframes buzz-out { 10% { -webkit-transform: translateX(3px) rotate(2deg); transform: translateX(3px) rotate(2deg); } 20% { -webkit-transform: translateX(-3px) rotate(-2deg); transform: translateX(-3px) rotate(-2deg); } 30% { -webkit-transform: translateX(3px) rotate(2deg); transform: translateX(3px) rotate(2deg); } 40% { -webkit-transform: translateX(-3px) rotate(-2deg); transform: translateX(-3px) rotate(-2deg); } 50% { -webkit-transform: translateX(2px) rotate(1deg); transform: translateX(2px) rotate(1deg); } 60% { -webkit-transform: translateX(-2px) rotate(-1deg); transform: translateX(-2px) rotate(-1deg); } 70% { -webkit-transform: translateX(2px) rotate(1deg); transform: translateX(2px) rotate(1deg); } 80% { -webkit-transform: translateX(-2px) rotate(-1deg); transform: translateX(-2px) rotate(-1deg); } 90% { -webkit-transform: translateX(1px) rotate(0deg); transform: translateX(1px) rotate(0deg); } 100% { -webkit-transform: translateX(-1px) rotate(0deg); transform: translateX(-1px) rotate(0deg); } } JAVASCRIPT function test() { var currentPatch = document.getElementById("p" + patchTurn); currentPatch.getElementsByClassName("person")[0].style.backgroundImage = "url(http://localhost:80/slingshot/uploads/" + jsonData[3] + ")"; currentPatch.getElementsByClassName("status")[0].innerHTML = jsonData[2]; currentPatch.getElementsByClassName("frame")[0].src = "img/splash_" + randomFrame + ".png"; currentPatch.style.animationName = "buzz-out"; currentPatch.style.display = "block"; } So when the page loads div is disabled and test() function runs and div animates but when i change some content inside that div and re-run test() function it doesn't animate.
I'm not too clear on what part you need help with so I've made a working JSfiddle that shows all of it working. I created an event listener for changes in the div and adds the class "content-active" to the div. This class adds the animation name and sets the display to block. Then the class is removed and re-added to restart the animation. To get the animation to restart, I set a 10ms delay. (You can also clone the div if you'd like) https://jsfiddle.net/heraldo/zyjuoLt1/ JS: // watch for changes in the DOM $('#content').bind("DOMSubtreeModified",function(){ // clear any previous animation $("#p1").removeClass("content-active"); // setting a timeout allows the animation to restart // NOTE, you can also clone the element and re-add it to do // the same thing. setTimeout(function(){ $("#p1").addClass("content-active"); }, 10); }); // simply adds text to the status <p> $('#modify').click(function(){ $(".person").append('text '); }); CSS: #content { position: relative; } .content { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); display: none; animation-duration: 1s; animation-timing-function: linear; animation-iteration-count: 1; animation-direction: alternate; animation-fill-mode: forwards; } .content-active{ display: block; animation-name: buzzOut; } #keyframes buzzOut { 10% { -webkit-transform: translateX(3px) rotate(2deg); transform: translateX(3px) rotate(2deg); } 20% { -webkit-transform: translateX(-3px) rotate(-2deg); transform: translateX(-3px) rotate(-2deg); } 30% { -webkit-transform: translateX(3px) rotate(2deg); transform: translateX(3px) rotate(2deg); } 40% { -webkit-transform: translateX(-3px) rotate(-2deg); transform: translateX(-3px) rotate(-2deg); } 50% { -webkit-transform: translateX(2px) rotate(1deg); transform: translateX(2px) rotate(1deg); } 60% { -webkit-transform: translateX(-2px) rotate(-1deg); transform: translateX(-2px) rotate(-1deg); } 70% { -webkit-transform: translateX(2px) rotate(1deg); transform: translateX(2px) rotate(1deg); } 80% { -webkit-transform: translateX(-2px) rotate(-1deg); transform: translateX(-2px) rotate(-1deg); } 90% { -webkit-transform: translateX(1px) rotate(0deg); transform: translateX(1px) rotate(0deg); } 100% { -webkit-transform: translateX(-1px) rotate(0deg); transform: translateX(-1px) rotate(0deg); } } HTML: <!-- simply adds text to the div --> <button id="modify">Add Text</button> <div id="content"> <div class="content" id="p1"> <div class="person"></div> <p class="status"></p> </div> </div> Let me know if this works for you!
How to stop marquee text when it gets centered for a few then continue
I want the text to slide in and then when it gets centered wait for a few then continue and repeat the process. Anyone know how to do this? Below is my code: <marquee direction="left" id="artistslide"> <span id="currentartist"><i class="fa fa-spinner fa-spin"></i></span> </marquee> <marquee direction="right" id="currentsongslide"> <span id="currentsong"><i class="fa fa-spinner fa-spin"></i></span> </marquee> Then i have JS to do a timer but its not always right since its constantly timing itself: var start = true; setInterval(passStartMarquee, 3000 ); // adjust the delay function passStartMarquee() { if (start) { document.getElementById('currentsongslide').start(); document.getElementById('artistslide').start(); start = false; } else { document.getElementById('currentsongslide').stop(); document.getElementById('artistslide').stop(); start = true; } }
Here is a code found on this tutorial .example1 { height: 50px; overflow: hidden; position: relative; } .example1 h3 { position: absolute; width: 100%; height: 100%; margin: 0; line-height: 50px; text-align: center; /* Starting position */ -moz-transform: translateX(100%); -webkit-transform: translateX(100%); transform: translateX(100%); /* Apply animation to this element */ -moz-animation: example1 10s linear infinite; -webkit-animation: example1 10s linear infinite; animation: example1 10s linear infinite; } /* Move it (define the animation) */ #-moz-keyframes example1 { 0% { -moz-transform: translateX(100%); } 40% { -moz-transform: translateX(0%); } 60% { -moz-transform: translateX(0%); } 100% { -moz-transform: translateX(-100%); } } #-webkit-keyframes example1 { 0% { -webkit-transform: translateX(100%); } 40% { -webkit-transform: translateX(0%); } 60% { -webkit-transform: translateX(0%); } 100% { -webkit-transform: translateX(-100%); } } #keyframes example1 { 0% { -moz-transform: translateX(100%); /* Firefox bug fix */ -webkit-transform: translateX(100%); /* Firefox bug fix */ transform: translateX(100%); } 40% { -moz-transform: translateX(0%); /* Firefox bug fix */ -webkit-transform: translateX(0%); /* Firefox bug fix */ transform: translateX(0%); } 60% { -moz-transform: translateX(0%); /* Firefox bug fix */ -webkit-transform: translateX(0%); /* Firefox bug fix */ transform: translateX(0%); } 100% { -moz-transform: translateX(-100%); /* Firefox bug fix */ -webkit-transform: translateX(-100%); /* Firefox bug fix */ transform: translateX(-100%); } } <div class="example1"> <h3>I'll pause so you can read me.</h3> </div> <div class="example1"> <h3>I'll pause so you can read me.</h3> </div>
Make Coin Flip Animation Two Sided
I would like this animation taken from animate.css to show a coin with 2 different side and not the same one. I pasted the relevant parts of my code to this Fiddle: jsFiddle Link HTML Code: <div id="coin-flip"> <button id="btnFlip">Flip the Coin</button></br></br></br> <div id="coin-flip-cont"> <div id="coin"></div> </div></br></br></br> <h2 id="result"></h2> </div> Javascript, jQuery Code: $(function() { var coin = { sideOne: "./img/image1.png", sideTwo: "./img/image2.png" } $("#btnFlip").click(function() { $("#coin").html(`<img class="animated flip"src="${coin[result]}" width="200" length="200"/>`); }); }); CSS is from Animate.css, You can view it in the Fiddle. Basically the result I want is the coin to flip showing both different sides and landing on the one that is set by the rest of my code. EDIT: Just adding this as an example of what I would like to achieve http://codepen.io/html5andblog/pen/ea62c27ddb5c7b022ab1e889e2f1b8d2 I feel that this can be done in a much simpler way and with the css that I already have.
First of all, change this line of your HTML code : <button id="btnFlip">Flip the Coin</button> To : <button id="btnFlip" onclick="coin_flip()">Flip the Coin</button> And then change your javascript to this code : function coin_flip{ var coin_1 = "/images/image_1.png" var coin_2 = "/images/image_2.png" // the 8 below is the number of flips in your animation for (var i = 0 ; i<8 ; i++){ if (document.getElementById("coin").src == coin_1){ document.getElementById("coin").src == coin_2 } if (document.getElementById("coin").src == coin_2){ document.getElementById("coin").src == coin_1 } } // below chooses a random side var rand = Math.floor((Math.random() * 2) + 1); document.getElementById("coin").src == "coin_" + rand } This javascript code flips the coin 8 times before choosing a random side to land on.
you can use animationend event to detect when the CSS animation ended. Then you execute code to change the image source. JQuery $('#coin').on('webkitAnimationEnd oanimationend msAnimationEnd animationend', function(e) { $("#coin").removeClass('animateCoin'); setTimeout(function() { var srcImg = $($('#coin img')[0]).attr('src'); if (srcImg === coin.heads) $($('#coin img')[0]).attr('src',coin.tails); else $($('#coin img')[0]).attr('src',coin.heads); $("#coin").addClass('animateCoin'); },50); }); CSS : .animateCoin { animation: flip 1s; }
Here is the complete code you can flip coin 2 sided solution run snippet. To watch correct result see in full page view otherwise you can see on codepen. You can have link of codepen too click here jQuery(document).ready(function($){ var spinArray = ['animation900','animation1080','animation1260','animation1440','animation1620','animation1800','animation1980','animation2160']; function getSpin() { var spin = spinArray[Math.floor(Math.random()*spinArray.length)]; return spin; } $('#flip').on('click', function(){ $('#coin').removeClass(); setTimeout(function(){ $('#coin').addClass(getSpin()); }, 100); }); }); html, body { margin: 0; width: 100%; height: 100%; background-color: #333; } #coin-flip-cont { width: 200px; height: 200px; position: absolute; top: calc(50% - 100px); left: calc(50% - 100px); } #coin { position: relative; width: 200px; transform-style: preserve-3d; } #coin .front, #coin .back { position: absolute; width: 200px; height: 200px; } #coin .front { transform: translateZ(1px); border-radius: 50%; background-color: #3498db; border: solid 5px gray; } #coin .back { transform: translateZ(-1px) rotateY(180deg); border-radius: 50%; background-color: #2ecc71; border: solid 5px gray; } #coin.animation900 { -webkit-animation: rotate900 3s linear forwards; animation: rotate900 3s linear forwards; } #coin.animation1080 { -webkit-animation: rotate1080 3s linear forwards; animation: rotate1080 3s linear forwards; } #coin.animation1260 { -webkit-animation: rotate1260 3s linear forwards; animation: rotate1260 3s linear forwards; } #coin.animation1440 { -webkit-animation: rotate1440 3s linear forwards; animation: rotate1440 3s linear forwards; } #coin.animation1620 { -webkit-animation: rotate1620 3s linear forwards; animation: rotate1620 3s linear forwards; } #coin.animation1800 { -webkit-animation: rotate1800 3s linear forwards; animation: rotate1800 3s linear forwards; } #coin.animation1980 { -webkit-animation: rotate1980 3s linear forwards; animation: rotate1980 3s linear forwards; } #coin.animation2160 { -webkit-animation: rotate2160 3s linear forwards; animation: rotate2160 3s linear forwards; } #-webkit-keyframes rotate900 { from { -webkit-transform: rotateY(0); -moz-transform: rotateY(0); transform: rotateY(0); } to { -webkit-transform: rotateY(900deg); -moz-transform: rotateY(900deg); transform: rotateY(900deg); } } #keyframes rotate900 { from { -webkit-transform: rotateY(0); -moz-transform: rotateY(0); transform: rotateY(0); } to { -webkit-transform: rotateY(900deg); -moz-transform: rotateY(900deg); transform: rotateY(900deg); } } #-webkit-keyframes rotate1080 { from { -webkit-transform: rotateY(0); -moz-transform: rotateY(0); transform: rotateY(0); } to { -webkit-transform: rotateY(1080deg); -moz-transform: rotateY(1080deg); transform: rotateY(1080deg); } } #keyframes rotate1080 { from { -webkit-transform: rotateY(0); -moz-transform: rotateY(0); transform: rotateY(0); } to { -webkit-transform: rotateY(1080deg); -moz-transform: rotateY(1080deg); transform: rotateY(1080deg); } } #-webkit-keyframes rotate1260 { from { -webkit-transform: rotateY(0); -moz-transform: rotateY(0); transform: rotateY(0); } to { -webkit-transform: rotateY(1260deg); -moz-transform: rotateY(1260deg); transform: rotateY(1260deg); } } #keyframes rotate1260 { from { -webkit-transform: rotateY(0); -moz-transform: rotateY(0); transform: rotateY(0); } to { -webkit-transform: rotateY(1260deg); -moz-transform: rotateY(1260deg); transform: rotateY(1260deg); } } #-webkit-keyframes rotate1440 { from { -webkit-transform: rotateY(0); -moz-transform: rotateY(0); transform: rotateY(0); } to { -webkit-transform: rotateY(1440deg); -moz-transform: rotateY(1440deg); transform: rotateY(1440deg); } } #keyframes rotate1440 { from { -webkit-transform: rotateY(0); -moz-transform: rotateY(0); transform: rotateY(0); } to { -webkit-transform: rotateY(1440deg); -moz-transform: rotateY(1440deg); transform: rotateY(1440deg); } } #-webkit-keyframes rotate1620 { from { -webkit-transform: rotateY(0); -moz-transform: rotateY(0); transform: rotateY(0); } to { -webkit-transform: rotateY(1620deg); -moz-transform: rotateY(1620deg); transform: rotateY(1620deg); } } #keyframes rotate1620 { from { -webkit-transform: rotateY(0); -moz-transform: rotateY(0); transform: rotateY(0); } to { -webkit-transform: rotateY(1620deg); -moz-transform: rotateY(1620deg); transform: rotateY(1620deg); } } #-webkit-keyframes rotate1800 { from { -webkit-transform: rotateY(0); -moz-transform: rotateY(0); transform: rotateY(0); } to { -webkit-transform: rotateY(1800deg); -moz-transform: rotateY(1800deg); transform: rotateY(1800deg); } } #keyframes rotate1800 { from { -webkit-transform: rotateY(0); -moz-transform: rotateY(0); transform: rotateY(0); } to { -webkit-transform: rotateY(1800deg); -moz-transform: rotateY(1800deg); transform: rotateY(1800deg); } } #-webkit-keyframes rotate1980 { from { -webkit-transform: rotateY(0); -moz-transform: rotateY(0); transform: rotateY(0); } to { -webkit-transform: rotateY(1980deg); -moz-transform: rotateY(1980deg); transform: rotateY(1980deg); } } #keyframes rotate1980 { from { -webkit-transform: rotateY(0); -moz-transform: rotateY(0); transform: rotateY(0); } to { -webkit-transform: rotateY(1980deg); -moz-transform: rotateY(1980deg); transform: rotateY(1980deg); } } #-webkit-keyframes rotate2160 { from { -webkit-transform: rotateY(0); -moz-transform: rotateY(0); transform: rotateY(0); } to { -webkit-transform: rotateY(2160deg); -moz-transform: rotateY(2160deg); transform: rotateY(2160deg); } } #keyframes rotate2160 { from { -webkit-transform: rotateY(0); -moz-transform: rotateY(0); transform: rotateY(0); } to { -webkit-transform: rotateY(2160deg); -moz-transform: rotateY(2160deg); transform: rotateY(2160deg); } } .button { background-color: #4CAF50; /* Green */ border: none; color: white; padding: 15px 32px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin-top: 125px; position: inherit; } .front-text{ font-weight: 700 !important; margin-top: 45%; } <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <center> <div> <div id="coin-flip-cont"> <div id="coin"> <div class="front"><p class="front-text">Head</p></div> <div class="back"><p class="front-text">Tail</p></div> </div> </div> <button type="button" id="flip" class="button"> Flip Coin</button> </div> </center>