Make Coin Flip Animation Two Sided - javascript
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>
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.
Preloader for part of content
i have css preloader in wordpress site, and I need the preloader to hide only part of the content. Now preloader hides the entire page. Example: - Site title - Site menu - Content (need to hide) - Footer In header.php: https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js $(window).load(function() { $(".cssload-loader").delay(1300).fadeOut(); $(".preloader").delay(1400).fadeOut("slow"); }) .preloader { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: #fff; z-index: 100501; height: 100%; width: 100%; } .cssload-loader { position: absolute; left: 50%; top: 50%; width: 34.284271247462px; height: 34.284271247462px; margin-left: -17.142135623731px; margin-top: -17.142135623731px; border-radius: 100%; animation-name: cssload-loader; -o-animation-name: cssload-loader; -ms-animation-name: cssload-loader; -webkit-animation-name: cssload-loader; -moz-animation-name: cssload-loader; animation-iteration-count: infinite; -o-animation-iteration-count: infinite; -ms-animation-iteration-count: infinite; -webkit-animation-iteration-count: infinite; -moz-animation-iteration-count: infinite; animation-timing-function: linear; -o-animation-timing-function: linear; -ms-animation-timing-function: linear; -webkit-animation-timing-function: linear; -moz-animation-timing-function: linear; animation-duration: 2.8s; -o-animation-duration: 2.8s; -ms-animation-duration: 2.8s; -webkit-animation-duration: 2.8s; -moz-animation-duration: 2.8s; } .cssload-loader .cssload-side { display: block; width: 4px; height: 14px; background-color: rgba(0,0,0,0.81); margin: 1px; position: absolute; border-radius: 50%; animation-duration: 1.045s; -o-animation-duration: 1.045s; -ms-animation-duration: 1.045s; -webkit-animation-duration: 1.045s; -moz-animation-duration: 1.045s; animation-iteration-count: infinite; -o-animation-iteration-count: infinite; -ms-animation-iteration-count: infinite; -webkit-animation-iteration-count: infinite; -moz-animation-iteration-count: infinite; animation-timing-function: ease; -o-animation-timing-function: ease; -ms-animation-timing-function: ease; -webkit-animation-timing-function: ease; -moz-animation-timing-function: ease; } .cssload-loader .cssload-side:nth-child(1), .cssload-loader .cssload-side:nth-child(5) { transform: rotate(0deg); -o-transform: rotate(0deg); -ms-transform: rotate(0deg); -webkit-transform: rotate(0deg); -moz-transform: rotate(0deg); animation-name: cssload-rotate0; -o-animation-name: cssload-rotate0; -ms-animation-name: cssload-rotate0; -webkit-animation-name: cssload-rotate0; -moz-animation-name: cssload-rotate0; } .cssload-loader .cssload-side:nth-child(3), .cssload-loader .cssload-side:nth-child(7) { transform: rotate(90deg); -o-transform: rotate(90deg); -ms-transform: rotate(90deg); -webkit-transform: rotate(90deg); -moz-transform: rotate(90deg); animation-name: cssload-rotate90; -o-animation-name: cssload-rotate90; -ms-animation-name: cssload-rotate90; -webkit-animation-name: cssload-rotate90; -moz-animation-name: cssload-rotate90; } .cssload-loader .cssload-side:nth-child(2), .cssload-loader .cssload-side:nth-child(6) { transform: rotate(45deg); -o-transform: rotate(45deg); -ms-transform: rotate(45deg); -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); animation-name: cssload-rotate45; -o-animation-name: cssload-rotate45; -ms-animation-name: cssload-rotate45; -webkit-animation-name: cssload-rotate45; -moz-animation-name: cssload-rotate45; } .cssload-loader .cssload-side:nth-child(4), .cssload-loader .cssload-side:nth-child(8) { transform: rotate(135deg); -o-transform: rotate(135deg); -ms-transform: rotate(135deg); -webkit-transform: rotate(135deg); -moz-transform: rotate(135deg); animation-name: cssload-rotate135; -o-animation-name: cssload-rotate135; -ms-animation-name: cssload-rotate135; -webkit-animation-name: cssload-rotate135; -moz-animation-name: cssload-rotate135; } .cssload-loader .cssload-side:nth-child(1) { top: 17.142135623731px; left: 34.284271247462px; margin-left: -2px; margin-top: -7px; animation-delay: 0; -o-animation-delay: 0; -ms-animation-delay: 0; -webkit-animation-delay: 0; -moz-animation-delay: 0; } .cssload-loader .cssload-side:nth-child(2) { top: 29.213203431093px; left: 29.213203431093px; margin-left: -2px; margin-top: -7px; animation-delay: 0; -o-animation-delay: 0; -ms-animation-delay: 0; -webkit-animation-delay: 0; -moz-animation-delay: 0; } .cssload-loader .cssload-side:nth-child(3) { top: 34.284271247462px; left: 17.142135623731px; margin-left: -2px; margin-top: -7px; animation-delay: 0; -o-animation-delay: 0; -ms-animation-delay: 0; -webkit-animation-delay: 0; -moz-animation-delay: 0; } .cssload-loader .cssload-side:nth-child(4) { top: 29.213203431093px; left: 5.0710678163691px; margin-left: -2px; margin-top: -7px; animation-delay: 0; -o-animation-delay: 0; -ms-animation-delay: 0; -webkit-animation-delay: 0; -moz-animation-delay: 0; } .cssload-loader .cssload-side:nth-child(5) { top: 17.142135623731px; left: 0px; margin-left: -2px; margin-top: -7px; animation-delay: 0; -o-animation-delay: 0; -ms-animation-delay: 0; -webkit-animation-delay: 0; -moz-animation-delay: 0; } .cssload-loader .cssload-side:nth-child(6) { top: 5.0710678163691px; left: 5.0710678163691px; margin-left: -2px; margin-top: -7px; animation-delay: 0; -o-animation-delay: 0; -ms-animation-delay: 0; -webkit-animation-delay: 0; -moz-animation-delay: 0; } .cssload-loader .cssload-side:nth-child(7) { top: 0px; left: 17.142135623731px; margin-left: -2px; margin-top: -7px; animation-delay: 0; -o-animation-delay: 0; -ms-animation-delay: 0; -webkit-animation-delay: 0; -moz-animation-delay: 0; } .cssload-loader .cssload-side:nth-child(8) { top: 5.0710678163691px; left: 29.213203431093px; margin-left: -2px; margin-top: -7px; animation-delay: 0; -o-animation-delay: 0; -ms-animation-delay: 0; -webkit-animation-delay: 0; -moz-animation-delay: 0; } #keyframes cssload-rotate0 { 0% { transform: rotate(0deg); } 60% { transform: rotate(180deg); } 100% { transform: rotate(180deg); } } #-o-keyframes cssload-rotate0 { 0% { -o-transform: rotate(0deg); } 60% { -o-transform: rotate(180deg); } 100% { -o-transform: rotate(180deg); } } #-ms-keyframes cssload-rotate0 { 0% { -ms-transform: rotate(0deg); } 60% { -ms-transform: rotate(180deg); } 100% { -ms-transform: rotate(180deg); } } #-webkit-keyframes cssload-rotate0 { 0% { -webkit-transform: rotate(0deg); } 60% { -webkit-transform: rotate(180deg); } 100% { -webkit-transform: rotate(180deg); } } #-moz-keyframes cssload-rotate0 { 0% { -moz-transform: rotate(0deg); } 60% { -moz-transform: rotate(180deg); } 100% { -moz-transform: rotate(180deg); } } #keyframes cssload-rotate90 { 0% { transform: rotate(90deg); transform: rotate(90deg); } 60% { transform: rotate(270deg); transform: rotate(270deg); } 100% { transform: rotate(270deg); transform: rotate(270deg); } } #-o-keyframes cssload-rotate90 { 0% { -o-transform: rotate(90deg); transform: rotate(90deg); } 60% { -o-transform: rotate(270deg); transform: rotate(270deg); } 100% { -o-transform: rotate(270deg); transform: rotate(270deg); } } #-ms-keyframes cssload-rotate90 { 0% { -ms-transform: rotate(90deg); transform: rotate(90deg); } 60% { -ms-transform: rotate(270deg); transform: rotate(270deg); } 100% { -ms-transform: rotate(270deg); transform: rotate(270deg); } } #-webkit-keyframes cssload-rotate90 { 0% { -webkit-transform: rotate(90deg); transform: rotate(90deg); } 60% { -webkit-transform: rotate(270deg); transform: rotate(270deg); } 100% { -webkit-transform: rotate(270deg); transform: rotate(270deg); } } #-moz-keyframes cssload-rotate90 { 0% { -moz-transform: rotate(90deg); transform: rotate(90deg); } 60% { -moz-transform: rotate(270deg); transform: rotate(270deg); } 100% { -moz-transform: rotate(270deg); transform: rotate(270deg); } } #keyframes cssload-rotate45 { 0% { transform: rotate(45deg); transform: rotate(45deg); } 60% { transform: rotate(225deg); transform: rotate(225deg); } 100% { transform: rotate(225deg); transform: rotate(225deg); } } #-o-keyframes cssload-rotate45 { 0% { -o-transform: rotate(45deg); transform: rotate(45deg); } 60% { -o-transform: rotate(225deg); transform: rotate(225deg); } 100% { -o-transform: rotate(225deg); transform: rotate(225deg); } } #-ms-keyframes cssload-rotate45 { 0% { -ms-transform: rotate(45deg); transform: rotate(45deg); } 60% { -ms-transform: rotate(225deg); transform: rotate(225deg); } 100% { -ms-transform: rotate(225deg); transform: rotate(225deg); } } #-webkit-keyframes cssload-rotate45 { 0% { -webkit-transform: rotate(45deg); transform: rotate(45deg); } 60% { -webkit-transform: rotate(225deg); transform: rotate(225deg); } 100% { -webkit-transform: rotate(225deg); transform: rotate(225deg); } } #-moz-keyframes cssload-rotate45 { 0% { -moz-transform: rotate(45deg); transform: rotate(45deg); } 60% { -moz-transform: rotate(225deg); transform: rotate(225deg); } 100% { -moz-transform: rotate(225deg); transform: rotate(225deg); } } #keyframes cssload-rotate135 { 0% { transform: rotate(135deg); transform: rotate(135deg); } 60% { transform: rotate(315deg); transform: rotate(315deg); } 100% { transform: rotate(315deg); transform: rotate(315deg); } } #-o-keyframes cssload-rotate135 { 0% { -o-transform: rotate(135deg); transform: rotate(135deg); } 60% { -o-transform: rotate(315deg); transform: rotate(315deg); } 100% { -o-transform: rotate(315deg); transform: rotate(315deg); } } #-ms-keyframes cssload-rotate135 { 0% { -ms-transform: rotate(135deg); transform: rotate(135deg); } 60% { -ms-transform: rotate(315deg); transform: rotate(315deg); } 100% { -ms-transform: rotate(315deg); transform: rotate(315deg); } } #-webkit-keyframes cssload-rotate135 { 0% { -webkit-transform: rotate(135deg); transform: rotate(135deg); } 60% { -webkit-transform: rotate(315deg); transform: rotate(315deg); } 100% { -webkit-transform: rotate(315deg); transform: rotate(315deg); } } #-moz-keyframes cssload-rotate135 { 0% { -moz-transform: rotate(135deg); transform: rotate(135deg); } 60% { -moz-transform: rotate(315deg); transform: rotate(315deg); } 100% { -moz-transform: rotate(315deg); transform: rotate(315deg); } } #keyframes cssload-loader { 0% { transform: rotate(0deg); transform: rotate(0deg); } 100% { transform: rotate(360deg); transform: rotate(360deg); } } #-o-keyframes cssload-loader { 0% { -o-transform: rotate(0deg); transform: rotate(0deg); } 100% { -o-transform: rotate(360deg); transform: rotate(360deg); } } #-ms-keyframes cssload-loader { 0% { -ms-transform: rotate(0deg); transform: rotate(0deg); } 100% { -ms-transform: rotate(360deg); transform: rotate(360deg); } } #-webkit-keyframes cssload-loader { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } #-moz-keyframes cssload-loader { 0% { -moz-transform: rotate(0deg); transform: rotate(0deg); } 100% { -moz-transform: rotate(360deg); transform: rotate(360deg); } } <div class="preloader"> <div class="cssload-loader"> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> </div> </div> Here is my site so you can see the page code I think i need script to show Site title and menu, or i need change css styles to hide content?
Change the CSS like below. .preloader { position: fixed; background-color: #fff; z-index: 107; height: 100%; width: 100%; } And put preloader element inside content div like this. <div class="col-md-8 col-md-offset-2"> <div class="preloader" style="display: block;"> <div class="cssload-loader" style="display: none;"> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> <div class="cssload-side"></div> </div> </div> <article>.... Article content .....</article> </div>
¿How to create text slider animation?
I have developed an slide automatic, very simple indeed. I would like to add animation effects to the text, as this examples: Demo 1 Demo 2 could help with some example or step that I must follow to adapt the effects of animation in the slide Code complete: $(function() { var SliderModule = (function() { var pb = {}; //Defaul #slider > div pb.el = $('#slider > .carousel'); pb.items = { panel: pb.el } var SliderInterval, currentSlider = 0, nextSlider = 1, lengthSlider = pb.items.panel.length; // Initialize pb.init = function(settings) { this.settings = settings || {duration: 8000} var output = ''; SliderInit(); for(var i = 0; i < lengthSlider; i++) { if (i == 0) { output += '<div class="active"></div>'; } else { output += '<div></div>'; } } } var SliderInit = function() { $("#barra").animate({ width:"100%" }, pb.settings.duration, "linear", pb.startSlider ); } pb.startSlider = function() { $("#barra").css("width", 0); var panels = pb.items.panel, controls = $('#slider-controls div'); if (nextSlider >= lengthSlider) { nextSlider = 0; currentSlider = lengthSlider-1; } controls.removeClass('active').eq(nextSlider).addClass('active'); panels.eq(currentSlider).fadeOut('slow'); panels.eq(nextSlider).fadeIn('slow'); currentSlider = nextSlider; nextSlider += 1; SliderInit(); } var changePanel = function(id) { $("#barra").stop().css("width", 0); var panels = pb.items.panel, controls = $('#slider-controls div'); if (id >= lengthSlider) { id = 0; } else if (id < 0) { id = lengthSlider-1; } controls.removeClass('active').eq(id).addClass('active'); panels.eq(currentSlider).fadeOut('slow'); panels.eq(id).fadeIn('slow'); currentSlider = id; nextSlider = id+1; SliderInit(); } return pb; }()); SliderModule.init({duration: 7000}); }); /*! * #Design slider */ * { margin: 0; padding: 0; } html, body { margin: 0; padding: 0; height: 100%; } .item { width: 100%; height: 548px !important; background-size: cover; background-position: 50% 0; background-repeat: no-repeat; } .slider-container { width: 100%; height: auto; margin: 0 auto; max-width: 100%; background-color:#FFF; } .slider-wrapper { z-index: 90; width: 100%; height: 500px; position: relative; } .slider-wrapper > div { display: none; } div.slide-current { display: block; } .slider-wrapper div .item { top: 0; left: 0; height: auto; max-width: 100%; position: absolute; } .slider-inner { top: 0; left: 0; width: 100%; color: #fff; height: 100%; position: absolute; } .container { margin-left: auto; margin-right: auto; padding-left: 15px; padding-right: 15px; } .carousel-content { text-align: center; } #slider .slider-inner h2 { margin-top: 180px; font-size: 36px; line-height: 1; text-transform: uppercase; color: #fff; } .btn { cursor: pointer; user-select: none; text-align: center; border-radius: 4px; white-space: nowrap; display: inline-block; vertical-align: middle; background-image: none; -ms-user-select: none; -moz-user-select: none; -webkit-user-select: none; } #slider .slider-inner .btn { font-size: 18px; border-width: 0; margin-top: 10px; line-height: 1.33; border-radius: 6px; padding: 10px 16px; background: #72C05B; border-color: #72C05B; } #barra { width: 0%; z-index: 99; height: 10px; margin-top: 15px; position: relative; background: #00c5b9; } <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="slide"> <div id="slider" class="slider-wrapper"> <div class="carousel slide-current"> <div class="item" style="background-image: url('http://themeinthebox.com/demo/color/images/slider/bg1.jpg');"> <div class="slider-inner"> <h2>Hello!!! How to create text animation</h2> </div> </div> </div> <div class="carousel"> <div class="item" style="background-image: url('http://themeinthebox.com/demo/color/images/slider/bg2.jpg');"> <div class="slider-inner"> <h2>Hello!!! How to create text animation 2</h2> </div> </div> </div> <div class="carousel"> <div class="item" style="background-image: url('http://themeinthebox.com/demo/color/images/slider/bg1.jpg');"> <div class="slider-inner"> <h2>Hello!!! How to create text animation 3</h2> </div> </div> </div> </div> <div id="barra"></div> </div>
For your text animation use this css it will help you to build you text animation. This will work for text/image and html elements also. <!DOCTYPE html> <html lang="en"> <head> <title>Bootstrap Example</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> #charset "utf-8"; /* CSS Document */ #charset "utf-8"; /* CSS Document */ /* ============================================== CSS3 ANIMATION CHEAT SHEET ============================================== Made by NK Chaudhary Questions, comments, concerns, love letters: nkchaudhary13#gmail.com ============================================== */ /* ============================================== slideDown ============================================== */ .logo{ height: 52px; margin-top: -15px; } .logo:hover{ opacity:0.8; transiftion:1s; } .slideDown{ animation-name: slideDown; -webkit-animation-name: slideDown; animation-duration: 1s; -webkit-animation-duration: 1s; animation-timing-function: ease; -webkit-animation-timing-function: ease; visibility: visible !important; } #keyframes slideDown { 0% { transform: translateY(-100%); } 50%{ transform: translateY(8%); } 65%{ transform: translateY(-4%); } 80%{ transform: translateY(4%); } 95%{ transform: translateY(-2%); } 100% { transform: translateY(0%); } } #-webkit-keyframes slideDown { 0% { -webkit-transform: translateY(-100%); } 50%{ -webkit-transform: translateY(8%); } 65%{ -webkit-transform: translateY(-4%); } 80%{ -webkit-transform: translateY(4%); } 95%{ -webkit-transform: translateY(-2%); } 100% { -webkit-transform: translateY(0%); } } /* ============================================== slideUp ============================================== */ .slideUp{ animation-name: slideUp; -webkit-animation-name: slideUp; animation-duration: 1s; -webkit-animation-duration: 1s; animation-timing-function: ease; -webkit-animation-timing-function: ease; visibility: visible !important; } #keyframes slideUp { 0% { transform: translateY(100%); } 50%{ transform: translateY(-8%); } 65%{ transform: translateY(4%); } 80%{ transform: translateY(-4%); } 95%{ transform: translateY(2%); } 100% { transform: translateY(0%); } } #-webkit-keyframes slideUp { 0% { -webkit-transform: translateY(100%); } 50%{ -webkit-transform: translateY(-8%); } 65%{ -webkit-transform: translateY(4%); } 80%{ -webkit-transform: translateY(-4%); } 95%{ -webkit-transform: translateY(2%); } 100% { -webkit-transform: translateY(0%); } } /* ============================================== slideLeft ============================================== */ .slideLeft{ animation-name: slideLeft; -webkit-animation-name: slideLeft; animation-duration: 1s; -webkit-animation-duration: 1s; animation-timing-function: ease-in-out; -webkit-animation-timing-function: ease-in-out; visibility: visible !important; } #keyframes slideLeft { 0% { transform: translateX(150%); } 50%{ transform: translateX(-8%); } 65%{ transform: translateX(4%); } 80%{ transform: translateX(-4%); } 95%{ transform: translateX(2%); } 100% { transform: translateX(0%); } } #-webkit-keyframes slideLeft { 0% { -webkit-transform: translateX(150%); } 50%{ -webkit-transform: translateX(-8%); } 65%{ -webkit-transform: translateX(4%); } 80%{ -webkit-transform: translateX(-4%); } 95%{ -webkit-transform: translateX(2%); } 100% { -webkit-transform: translateX(0%); } } /* ============================================== slideRight ============================================== */ .slideRight{ animation-name: slideRight; -webkit-animation-name: slideRight; animation-duration: 1s; -webkit-animation-duration: 1s; animation-timing-function: ease-in-out; -webkit-animation-timing-function: ease-in-out; visibility: visible !important; } #keyframes slideRight { 0% { transform: translateX(-150%); } 50%{ transform: translateX(8%); } 65%{ transform: translateX(-4%); } 80%{ transform: translateX(4%); } 95%{ transform: translateX(-2%); } 100% { transform: translateX(0%); } } #-webkit-keyframes slideRight { 0% { -webkit-transform: translateX(-150%); } 50%{ -webkit-transform: translateX(8%); } 65%{ -webkit-transform: translateX(-4%); } 80%{ -webkit-transform: translateX(4%); } 95%{ -webkit-transform: translateX(-2%); } 100% { -webkit-transform: translateX(0%); } } /* ============================================== slideExpandUp ============================================== */ .slideExpandUp{ animation-name: slideExpandUp; -webkit-animation-name: slideExpandUp; animation-duration: 1.6s; -webkit-animation-duration: 1.6s; animation-timing-function: ease-out; -webkit-animation-timing-function: ease -out; visibility: visible !important; } #keyframes slideExpandUp { 0% { transform: translateY(100%) scaleX(0.5); } 30%{ transform: translateY(-8%) scaleX(0.5); } 40%{ transform: translateY(2%) scaleX(0.5); } 50%{ transform: translateY(0%) scaleX(1.1); } 60%{ transform: translateY(0%) scaleX(0.9); } 70% { transform: translateY(0%) scaleX(1.05); } 80%{ transform: translateY(0%) scaleX(0.95); } 90% { transform: translateY(0%) scaleX(1.02); } 100%{ transform: translateY(0%) scaleX(1); } } #-webkit-keyframes slideExpandUp { 0% { -webkit-transform: translateY(100%) scaleX(0.5); } 30%{ -webkit-transform: translateY(-8%) scaleX(0.5); } 40%{ -webkit-transform: translateY(2%) scaleX(0.5); } 50%{ -webkit-transform: translateY(0%) scaleX(1.1); } 60%{ -webkit-transform: translateY(0%) scaleX(0.9); } 70% { -webkit-transform: translateY(0%) scaleX(1.05); } 80%{ -webkit-transform: translateY(0%) scaleX(0.95); } 90% { -webkit-transform: translateY(0%) scaleX(1.02); } 100%{ -webkit-transform: translateY(0%) scaleX(1); } } /* ============================================== expandUp ============================================== */ .expandUp{ animation-name: expandUp; -webkit-animation-name: expandUp; animation-duration: 0.7s; -webkit-animation-duration: 0.7s; animation-timing-function: ease; -webkit-animation-timing-function: ease; visibility: visible !important; } #keyframes expandUp { 0% { transform: translateY(100%) scale(0.6) scaleY(0.5); } 60%{ transform: translateY(-7%) scaleY(1.12); } 75%{ transform: translateY(3%); } 100% { transform: translateY(0%) scale(1) scaleY(1); } } #-webkit-keyframes expandUp { 0% { -webkit-transform: translateY(100%) scale(0.6) scaleY(0.5); } 60%{ -webkit-transform: translateY(-7%) scaleY(1.12); } 75%{ -webkit-transform: translateY(3%); } 100% { -webkit-transform: translateY(0%) scale(1) scaleY(1); } } /* ============================================== fadeIn ============================================== */ .fadeIn{ animation-name: fadeIn; -webkit-animation-name: fadeIn; animation-duration: 1.5s; -webkit-animation-duration: 1.5s; animation-timing-function: ease-in-out; -webkit-animation-timing-function: ease-in-out; visibility: visible !important; } #keyframes fadeIn { 0% { transform: scale(0); opacity: 0.0; } 60% { transform: scale(1.1); } 80% { transform: scale(0.9); opacity: 1; } 100% { transform: scale(1); opacity: 1; } } #-webkit-keyframes fadeIn { 0% { -webkit-transform: scale(0); opacity: 0.0; } 60% { -webkit-transform: scale(1.1); } 80% { -webkit-transform: scale(0.9); opacity: 1; } 100% { -webkit-transform: scale(1); opacity: 1; } } /* ============================================== expandOpen ============================================== */ .expandOpen{ animation-name: expandOpen; -webkit-animation-name: expandOpen; animation-duration: 1.2s; -webkit-animation-duration: 1.2s; animation-timing-function: ease-out; -webkit-animation-timing-function: ease-out; visibility: visible !important; } #keyframes expandOpen { 0% { transform: scale(1.8); } 50% { transform: scale(0.95); } 80% { transform: scale(1.05); } 90% { transform: scale(0.98); } 100% { transform: scale(1); } } #-webkit-keyframes expandOpen { 0% { -webkit-transform: scale(1.8); } 50% { -webkit-transform: scale(0.95); } 80% { -webkit-transform: scale(1.05); } 90% { -webkit-transform: scale(0.98); } 100% { -webkit-transform: scale(1); } } /* ============================================== bigEntrance ============================================== */ .bigEntrance{ animation-name: bigEntrance; -webkit-animation-name: bigEntrance; animation-duration: 1.6s; -webkit-animation-duration: 1.6s; animation-timing-function: ease-out; -webkit-animation-timing-function: ease-out; visibility: visible !important; } #keyframes bigEntrance { 0% { transform: scale(0.3) rotate(6deg) translateX(-30%) translateY(30%); opacity: 0.2; } 30% { transform: scale(1.03) rotate(-2deg) translateX(2%) translateY(-2%); opacity: 1; } 45% { transform: scale(0.98) rotate(1deg) translateX(0%) translateY(0%); opacity: 1; } 60% { transform: scale(1.01) rotate(-1deg) translateX(0%) translateY(0%); opacity: 1; } 75% { transform: scale(0.99) rotate(1deg) translateX(0%) translateY(0%); opacity: 1; } 90% { transform: scale(1.01) rotate(0deg) translateX(0%) translateY(0%); opacity: 1; } 100% { transform: scale(1) rotate(0deg) translateX(0%) translateY(0%); opacity: 1; } } #-webkit-keyframes bigEntrance { 0% { -webkit-transform: scale(0.3) rotate(6deg) translateX(-30%) translateY(30%); opacity: 0.2; } 30% { -webkit-transform: scale(1.03) rotate(-2deg) translateX(2%) translateY(-2%); opacity: 1; } 45% { -webkit-transform: scale(0.98) rotate(1deg) translateX(0%) translateY(0%); opacity: 1; } 60% { -webkit-transform: scale(1.01) rotate(-1deg) translateX(0%) translateY(0%); opacity: 1; } 75% { -webkit-transform: scale(0.99) rotate(1deg) translateX(0%) translateY(0%); opacity: 1; } 90% { -webkit-transform: scale(1.01) rotate(0deg) translateX(0%) translateY(0%); opacity: 1; } 100% { -webkit-transform: scale(1) rotate(0deg) translateX(0%) translateY(0%); opacity: 1; } } /* ============================================== hatch ============================================== */ .hatch{ animation-name: hatch; -webkit-animation-name: hatch; animation-duration: 2s; -webkit-animation-duration: 2s; animation-timing-function: ease-in-out; -webkit-animation-timing-function: ease-in-out; transform-origin: 50% 100%; -ms-transform-origin: 50% 100%; -webkit-transform-origin: 50% 100%; visibility: visible !important; } #keyframes hatch { 0% { transform: rotate(0deg) scaleY(0.6); } 20% { transform: rotate(-2deg) scaleY(1.05); } 35% { transform: rotate(2deg) scaleY(1); } 50% { transform: rotate(-2deg); } 65% { transform: rotate(1deg); } 80% { transform: rotate(-1deg); } 100% { transform: rotate(0deg); } } #-webkit-keyframes hatch { 0% { -webkit-transform: rotate(0deg) scaleY(0.6); } 20% { -webkit-transform: rotate(-2deg) scaleY(1.05); } 35% { -webkit-transform: rotate(2deg) scaleY(1); } 50% { -webkit-transform: rotate(-2deg); } 65% { -webkit-transform: rotate(1deg); } 80% { -webkit-transform: rotate(-1deg); } 100% { -webkit-transform: rotate(0deg); } } /* ============================================== bounce ============================================== */ .bounce{ animation-name: bounce; -webkit-animation-name: bounce; animation-duration: 1.6s; -webkit-animation-duration: 1.6s; animation-timing-function: ease; -webkit-animation-timing-function: ease; transform-origin: 50% 100%; -ms-transform-origin: 50% 100%; -webkit-transform-origin: 50% 100%; } #keyframes bounce { 0% { transform: translateY(0%) scaleY(0.6); } 60%{ transform: translateY(-100%) scaleY(1.1); } 70%{ transform: translateY(0%) scaleY(0.95) scaleX(1.05); } 80%{ transform: translateY(0%) scaleY(1.05) scaleX(1); } 90%{ transform: translateY(0%) scaleY(0.95) scaleX(1); } 100%{ transform: translateY(0%) scaleY(1) scaleX(1); } } #-webkit-keyframes bounce { 0% { -webkit-transform: translateY(0%) scaleY(0.6); } 60%{ -webkit-transform: translateY(-100%) scaleY(1.1); } 70%{ -webkit-transform: translateY(0%) scaleY(0.95) scaleX(1.05); } 80%{ -webkit-transform: translateY(0%) scaleY(1.05) scaleX(1); } 90%{ -webkit-transform: translateY(0%) scaleY(0.95) scaleX(1); } 100%{ -webkit-transform: translateY(0%) scaleY(1) scaleX(1); } } /* ============================================== pulse ============================================== */ .pulse{ animation-name: pulse; -webkit-animation-name: pulse; animation-duration: 1.5s; -webkit-animation-duration: 1.5s; animation-iteration-count: infinite; -webkit-animation-iteration-count: infinite; } #keyframes pulse { 0% { transform: scale(0.9); opacity: 0.7; } 50% { transform: scale(1); opacity: 1; } 100% { transform: scale(0.9); opacity: 0.7; } } #-webkit-keyframes pulse { 0% { -webkit-transform: scale(0.95); opacity: 0.7; } 50% { -webkit-transform: scale(1); opacity: 1; } 100% { -webkit-transform: scale(0.95); opacity: 0.7; } } /* ============================================== floating ============================================== */ .floating{ animation-name: floating; -webkit-animation-name: floating; animation-duration: 1.5s; -webkit-animation-duration: 1.5s; animation-iteration-count: infinite; -webkit-animation-iteration-count: infinite; } #keyframes floating { 0% { transform: translateY(0%); } 50% { transform: translateY(8%); } 100% { transform: translateY(0%); } } #-webkit-keyframes floating { 0% { -webkit-transform: translateY(0%); } 50% { -webkit-transform: translateY(8%); } 100% { -webkit-transform: translateY(0%); } } /* ============================================== tossing ============================================== */ .tossing{ animation-name: tossing; -webkit-animation-name: tossing; animation-duration: 2.5s; -webkit-animation-duration: 2.5s; animation-iteration-count: infinite; -webkit-animation-iteration-count: infinite; } #keyframes tossing { 0% { transform: rotate(-4deg); } 50% { transform: rotate(4deg); } 100% { transform: rotate(-4deg); } } #-webkit-keyframes tossing { 0% { -webkit-transform: rotate(-4deg); } 50% { -webkit-transform: rotate(4deg); } 100% { -webkit-transform: rotate(-4deg); } } /* ============================================== pullUp ============================================== */ .pullUp{ animation-name: pullUp; -webkit-animation-name: pullUp; animation-duration: 1.1s; -webkit-animation-duration: 1.1s; animation-timing-function: ease-out; -webkit-animation-timing-function: ease-out; transform-origin: 50% 100%; -ms-transform-origin: 50% 100%; -webkit-transform-origin: 50% 100%; } #keyframes pullUp { 0% { transform: scaleY(0.1); } 40% { transform: scaleY(1.02); } 60% { transform: scaleY(0.98); } 80% { transform: scaleY(1.01); } 100% { transform: scaleY(0.98); } 80% { transform: scaleY(1.01); } 100% { transform: scaleY(1); } } #-webkit-keyframes pullUp { 0% { -webkit-transform: scaleY(0.1); } 40% { -webkit-transform: scaleY(1.02); } 60% { -webkit-transform: scaleY(0.98); } 80% { -webkit-transform: scaleY(1.01); } 100% { -webkit-transform: scaleY(0.98); } 80% { -webkit-transform: scaleY(1.01); } 100% { -webkit-transform: scaleY(1); } } /* ============================================== pullDown ============================================== */ .pullDown{ animation-name: pullDown; -webkit-animation-name: pullDown; animation-duration: 1.1s; -webkit-animation-duration: 1.1s; animation-timing-function: ease-out; -webkit-animation-timing-function: ease-out; transform-origin: 50% 0%; -ms-transform-origin: 50% 0%; -webkit-transform-origin: 50% 0%; } #keyframes pullDown { 0% { transform: scaleY(0.1); } 40% { transform: scaleY(1.02); } 60% { transform: scaleY(0.98); } 80% { transform: scaleY(1.01); } 100% { transform: scaleY(0.98); } 80% { transform: scaleY(1.01); } 100% { transform: scaleY(1); } } #-webkit-keyframes pullDown { 0% { -webkit-transform: scaleY(0.1); } 40% { -webkit-transform: scaleY(1.02); } 60% { -webkit-transform: scaleY(0.98); } 80% { -webkit-transform: scaleY(1.01); } 100% { -webkit-transform: scaleY(0.98); } 80% { -webkit-transform: scaleY(1.01); } 100% { -webkit-transform: scaleY(1); } } /* ============================================== stretchLeft ============================================== */ .stretchLeft{ animation-name: stretchLeft; -webkit-animation-name: stretchLeft; animation-duration: 1.5s; -webkit-animation-duration: 1.5s; animation-timing-function: ease-out; -webkit-animation-timing-function: ease-out; transform-origin: 100% 0%; -ms-transform-origin: 100% 0%; -webkit-transform-origin: 100% 0%; } #keyframes stretchLeft { 0% { transform: scaleX(0.3); } 40% { transform: scaleX(1.02); } 60% { transform: scaleX(0.98); } 80% { transform: scaleX(1.01); } 100% { transform: scaleX(0.98); } 80% { transform: scaleX(1.01); } 100% { transform: scaleX(1); } } #-webkit-keyframes stretchLeft { 0% { -webkit-transform: scaleX(0.3); } 40% { -webkit-transform: scaleX(1.02); } 60% { -webkit-transform: scaleX(0.98); } 80% { -webkit-transform: scaleX(1.01); } 100% { -webkit-transform: scaleX(0.98); } 80% { -webkit-transform: scaleX(1.01); } 100% { -webkit-transform: scaleX(1); } } /* ============================================== stretchRight ============================================== */ .stretchRight{ animation-name: stretchRight; -webkit-animation-name: stretchRight; animation-duration: 1.5s; -webkit-animation-duration: 1.5s; animation-timing-function: ease-out; -webkit-animation-timing-function: ease-out; transform-origin: 0% 0%; -ms-transform-origin: 0% 0%; -webkit-transform-origin: 0% 0%; } #keyframes stretchRight { 0% { transform: scaleX(0.3); } 40% { transform: scaleX(1.02); } 60% { transform: scaleX(0.98); } 80% { transform: scaleX(1.01); } 100% { transform: scaleX(0.98); } 80% { transform: scaleX(1.01); } 100% { transform: scaleX(1); } } #-webkit-keyframes stretchRight { 0% { -webkit-transform: scaleX(0.3); } 40% { -webkit-transform: scaleX(1.02); } 60% { -webkit-transform: scaleX(0.98); } 80% { -webkit-transform: scaleX(1.01); } 100% { -webkit-transform: scaleX(0.98); } 80% { -webkit-transform: scaleX(1.01); } 100% { -webkit-transform: scaleX(1); } } </style> </head> <body> <div class="timeline-image pulse"> <h2 class="section-heading">My Amazing Team</h2> </div> </body> </html>
CSS How can I make a particle leave a trail that fades away?
I got the particle to move around which is what I wanted, but I want to add a little trail that will fade a way and I am not sure how to go about doing that Is it possible to do with only css? or do I have to involve jquery in this? Here is a demo: LINK #object{ position: absolute; bottom:-2em; left:0; right:0; margin:0 auto; width: 10px; height: 10px; background: red; -webkit-animation: myOrbit 6s linear infinite; -moz-animation: myOrbit 6s linear infinite; -o-animation: myOrbit 6s linear infinite; animation: myOrbit 6s linear infinite; } #-webkit-keyframes myOrbit { 0% { -webkit-transform: rotate(0deg) translateX(5px) translateY(400px) rotate(0deg) scale(1); } 25% { -webkit-transform: rotate(90deg) translateX(5px) translateY(400px) rotate(-90deg) scale(.60); } 50% { -webkit-transform: rotate(180deg) translateX(5px) translateY(400px) rotate(-180deg) scale(.30); } 75% { -webkit-transform: rotate(270deg) translateX(5px) translateY(400px) rotate(-270deg) scale(.60); } 100% { -webkit-transform: rotate(360deg) translateX(5px) translateY(400px) rotate(-360deg) scale(1); } } #-moz-keyframes myOrbit { 0% { -moz-transform: rotate(0deg) translateX(5px) translateY(400px) rotate(0deg) scale(1); } 25% { -moz-transform: rotate(90deg) translateX(5px) translateY(400px) rotate(-90deg) scale(.60); } 50% { -moz-transform: rotate(180deg) translateX(5px) translateY(400px) rotate(-180deg) scale(.30); } 75% { -moz-transform: rotate(270deg) translateX(5px) translateY(400px) rotate(-270deg) scale(.60); } 100% { -moz-transform: rotate(360deg) translateX(5px) translateY(400px) rotate(-360deg) scale(1); } } #-o-keyframes myOrbit { 0% { -o-transform: rotate(0deg) translateX(5px) translateY(400px) rotate(0deg) scale(1); } 25% { -o-transform: rotate(90deg) translateX(5px) translateY(400px) rotate(-90deg) scale(.60); } 50% { -o-transform: rotate(180deg) translateX(5px) translateY(400px) rotate(-180deg) scale(.30); } 75% { -o-transform: rotate(270deg) translateX(5px) translateY(400px) rotate(-270deg) scale(.60); } 100% { -o-transform: rotate(360deg) translateX(5px) translateY(400px) rotate(-360deg) scale(1); } } #keyframes myOrbit { 0% { transform: rotate(0deg) translateX(5px) translateY(400px) rotate(0deg) scale(1); } 25% { transform: rotate(90deg) translateX(5px) translateY(400px) rotate(-90deg) scale(.60); } 50% { transform: rotate(180deg) translateX(5px) translateY(400px) rotate(-180deg) scale(.30); } 75% { transform: rotate(270deg) translateX(5px) translateY(400px) rotate(-270deg) scale(.60); } 100% { transform: rotate(360deg) translateX(5px) translateY(400px) rotate(-360deg) scale(1); }}
I was doing something similar which is how I found this question. I took what I came up with and adapted it to your answer. Not sure it will work for what you're doing but it's still fun. http://jsfiddle.net/y40kwyhr/2/ var obj = document.getElementById("object"); class Particle { constructor(parent) { this.div = document.createElement("div"); this.div.classList.add("particle"); this.div.classList.add("twinkle"); this.div.id = "particle-" + Date.now(); parent.appendChild(this.div); setTimeout(() => { // remove particle if(this.driftIntervalId) clearInterval(this.driftIntervalId); this.div.remove(); }, 400); } drift(speed = 1) { var rad = Math.PI * Math.random(); this.driftIntervalId = setInterval(() => { var left = +this.div.style.left.replace("px",''); var top = +this.div.style.top.replace("px",''); left += Math.sin(rad) * speed; top += Math.cos(rad) * speed; this.div.style.left = left + "px"; this.div.style.top = top + "px"; }, 10); } } var particleFactory = function(meteor) { var rect = meteor.getBoundingClientRect(); var particle = new Particle(meteor.parentElement); particle.div.style.left = rect.left + "px"; particle.div.style.top = rect.top + "px"; particle.drift(0.4); setTimeout(() => { particleFactory(meteor); }, 100); }; particleFactory(obj);
Something like this? Changed keyframe animation so it orbits correctly Added new animation for the 'trail' to fadeout over time. Is this what you meant? #object{ position: absolute; top: 200px; left:0; right:0; margin:0 auto; width: 10px; height: 10px; background: red; -webkit-animation: myOrbit 6s linear infinite; -moz-animation: myOrbit 6s linear infinite; -o-animation: myOrbit 6s linear infinite; animation: myOrbit 6s linear infinite; } #object:after{ content: ""; position: absolute; top: 0; left:0; right:0; margin: 0 auto; width: 100px; height: 10px; opacity: .1; background-color: red; -webkit-animation: myOrbit-fadeout 6s linear infinite; -moz-animation: myOrbit-fadeout 6s linear infinite; -o-animation: myOrbit-fadeout 6s linear infinite; animation: myOrbit-fadeout 6s linear infinite; } #-webkit-keyframes myOrbit { 0% { -webkit-transform: rotate(0deg) translateY(200px); } 25% { -webkit-transform: rotate(90deg) translateY(200px); } 50% { -webkit-transform: rotate(180deg) translateY(200px); } 75% { -webkit-transform: rotate(270deg) translateY(200px); } 100% { -webkit-transform: rotate(360deg) translateY(200px); } } #-moz-keyframes myOrbit { 0% { -moz-transform: rotate(0deg) translateY(200px); } 25% { -moz-transform: rotate(90deg) translateY(200px); } 50% { -moz-transform: rotate(180deg) translateY(200px); } 75% { -moz-transform: rotate(270deg) translateY(200px); } 100% { -moz-transform: rotate(360deg) translateY(200px); } } #-o-keyframes myOrbit { 0% { -o-transform: rotate(0deg) translateY(200px); } 25% { -o-transform: rotate(90deg) translateY(200px); } 50% { -o-transform: rotate(180deg) translateY(200px); } 75% { -o-transform: rotate(270deg) translateY(200px); } 100% { -o-transform: rotate(360deg) translateY(200px); } } #keyframes myOrbit { 0% { transform: rotate(0deg) translateY(200px); } 25% { transform: rotate(90deg) translateY(200px); } 50% { transform: rotate(180deg) translateY(200px); } 75% { transform: rotate(270deg) translateY(200px); } 100% { transform: rotate(360deg) translateY(200px); } } #-webkit-keyframes myOrbit-fadeout { 0% { opacity: 1.0; } 25% { opacity: .75; } 50% { opacity: .5; } 75% { opacity: .25; } 100% { opacity: 0; } } #-moz-keyframes myOrbit-fadeout { 0% { opacity: 1.0; } 25% { opacity: .75; } 50% { opacity: .5; } 75% { opacity: .25; } 100% { opacity: 0; } } #-o-keyframes myOrbit-fadeout { 0% { opacity: 1.0; } 25% { opacity: .75; } 50% { opacity: .5; } 75% { opacity: .25; } 100% { opacity: 0; } } #keyframes myOrbit-fadeout { 0% { opacity: 1.0; } 25% { opacity: .75; } 50% { opacity: .5; } 75% { opacity: .25; } 100% { opacity: 0; } }
Rotate image 360° every .75 seconds on Loop JS
I need to get a JS script to get this center arrow image (loading.svg) to rotate 360 degrees every .75 seconds on a continuous loop. Here is the button I'm talking about. http://royalidea.com/happyname/pending.html It would been to be a class so that several of these icons could be rotating simultaneously - several loading items at time... Any help would be much appreciated!
Here is CSS answer: JSFIDDLE .loading_arrow { width: 32px; margin-top: 13px; margin-left: 42%; -webkit-animation: rotation .75s infinite linear; -moz-animation: rotation .75s infinite linear; -o-animation: rotation .75s infinite linear; animation: rotation .75s infinite linear; } body { background-color:#000; } #-webkit-keyframes rotation { from { -webkit-transform: rotate(0deg); } to { -webkit-transform: rotate(359deg); } } #-moz-keyframes rotation { from { -moz-transform: rotate(0deg); } to { -moz-transform: rotate(359deg); } } #-o-keyframes rotation { from { -o-transform: rotate(0deg); } to { -o-transform: rotate(359deg); } } #keyframes rotation { from { transform: rotate(0deg); } to { transform: rotate(359deg); } }
Here's a CSS solution which will spin 360deg every 0.75s with a 0.75s delay. If you want the delay to be longer or shorter, just play with the 50% portion of 50%, 100% and adjust the animation time accordingly. img.loading_arrow { -webkit-animation: spin_delay 1.5s linear infinite; animation: spin_delay 1.5s linear infinite; } #-webkit-keyframes spin_delay { 0% { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: rotate3d(0, 0, 1, 0deg); transform: rotate3d(0, 0, 1, 0deg); } 50%, 100% { -webkit-transform: rotate3d(0, 0, 1, 360deg); transform: rotate3d(0, 0, 1, 360deg); } } #keyframes spin_delay { 0% { -webkit-transform-origin: center; -ms-transform-origin: center; transform-origin: center; -webkit-transform: rotate3d(0, 0, 1, 0deg); -ms-transform: rotate3d(0, 0, 1, 0deg); transform: rotate3d(0, 0, 1, 0deg); } 50%, 100% { -webkit-transform: rotate3d(0, 0, 1, 360deg); -ms-transform: rotate3d(0, 0, 1, 360deg); transform: rotate3d(0, 0, 1, 360deg); } } JS Fiddle: http://jsfiddle.net/3na66ug3/
HTML: <!DOCTYPE html> <html style="-webkit-overflow-scrolling: touch;"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Rotate HTML elements by mouse in JavaScript - Propeller.js</title> <meta name="viewport" content="width=device-width, target-densitydpi=device-dpi"> <link rel="stylesheet" href="example/css/turbine.css"> </head> <body> <img id="turbine" src="example/img/turbine.png" onmousedown="showLibraryInfo()" ontouchstart="showLibraryInfo()"> <div class="arrow"> <img src="example/img/arrow.png"> <p> Drag or swipe propeller </p> </div> <script src="src/propeller.js"></script> <script> new Propeller(document.getElementById('turbine'), {inertia: 0.99}); function showLibraryInfo() { if (window.libInfoShown !== true) { var windStuff = document.getElementsByClassName('wind'); var libStuff = document.getElementsByClassName('propeller'); for (var i = 0; i < windStuff.length; i++) { var obj = windStuff[i]; obj.style.display = 'none'; } for (var i = 0; i < libStuff.length; i++) { var obj = libStuff[i]; obj.style.display = 'inline-block'; } window.libInfoShown = true; } } </script> </body> </html> CSS: body, html { background-color: #2d2d2d; width: 100%; height: 100%; font-size:0.8em; font-family: "Helvetica Neue", "Helvetica", "Arial"; color: #ffffff; } #turbine { width: 70%; height: auto; position: absolute; left: 5%; z-index: 99; } .turbine { width: 100%; height: auto; } .arrow { position: relative; top: 5%; left: 5%; width: 70%; } Demo: http://pixelscommander.com/polygon/propeller/example/jquerygrid.html#.VAX2ASiaWJI Source: http://www.techrecite.com/rotate-image-photo-or-object-around-its-axis-using-javascript-animation/
I would suggest using an animated gif as well, however, you can do it with JS like this: $(function() { var loading = $('.loading_arrow'), degree = 0, timer; function rotate() { loading.css({ transform: 'rotate(' + degree + 'deg)'}); timer = setTimeout(function() { ++degree; rotate(); },5); //lower this to increase speed } rotate(); }); JSFiddle
You can do this with CSS animations: #-webkit-keyframes loader { from {-webkit-transform: rotate(0);} to {-webkit-transform: rotate(-360deg);} } #keyframes loader { from {transform: rotate(0);} to {transform: rotate(-360deg);} } img { width: 32px; height: 32px; -webkit-animation: loader 1s infinite linear; animation: loader 1s infinite linear; } jsFiddle Demo.
Here's a pure CSS solution with a jsFiddle demo here: http://jsfiddle.net/cay3j79t/2/ HTML <div class="container"> <img class="loading" src="http://royalidea.com/happyname/img/loading.svg"> </div> CSS .container { background-color: blue; } .loading { -webkit-animation: cycle 0.75s infinite linear; animation: cycle 0.75s infinite linear; } #-webkit-keyframes cycle { from { -ms-transform: rotate(0deg); -webkit-transform: rotate(0deg); transform: rotate(0deg); } to { -ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg); } } #keyframes cycle { from { -ms-transform: rotate(0deg); -webkit-transform: rotate(0deg); transform: rotate(0deg); } to { -ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg); } }