Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CodeMyUI/91594532ab5add63f879 to your computer and use it in GitHub Desktop.
Save CodeMyUI/91594532ab5add63f879 to your computer and use it in GitHub Desktop.
Spinning wheel with svg text
<section class="full-screen">
<div class="wheel-03">
<svg preserveAspectRatio="xMinYMin meet" class="wheel-svg" version="1.1"
width="800" height="400"
viewBox="0 0 800 400">
<g transform="translate(0,0)">
<g transform="translate(0,250)" class="wheel-container">
<text x="0" y="-225" class="term term00">SMELL</text>
<text x="0" y="-150" class="term term01">HELL</text>
<text x="0" y="-75" class="term term02">SHOCK</text>
<text x="0" y="0" class="term term03">BRAND</text>
<text x="0" y="75" class="term term04">COOL</text>
<text x="0" y="150" class="term term05">NICE</text>
<text x="0" y="225" class="term term06">EYE</text>
<text x="0" y="300" class="term term07">SMELL</text>
<text x="0" y="375" class="term term08">HELL</text>
<text x="0" y="450" class="term term09">SHOCK</text>
<text x="0" y="525" class="term term10">BRAND</text>
<text x="0" y="600" class="term term11">COOL</text>
<text x="0" y="675" class="term term12">NICE</text>
<text x="0" y="750" class="term term13">EYE</text>
</g>
</g>
</svg>
</div>
</section>
$(window).load(function () {
var term01 = $('.wheel-03 .term01');
var term02 = $('.wheel-03 .term02');
var term03 = $('.wheel-03 .term03');
var term04 = $('.wheel-03 .term04');
var term05 = $('.wheel-03 .term05');
var term06 = $('.wheel-03 .term06');
var term07 = $('.wheel-03 .term07');
var term08 = $('.wheel-03 .term08');
var term09 = $('.wheel-03 .term09');
var term10 = $('.wheel-03 .term10');
var term11 = $('.wheel-03 .term11');
var term12 = $('.wheel-03 .term12');
var term13 = $('.wheel-03 .term13');
var stepFrame = 0.5
// css classes
tl01 = new TimelineLite();
tl01
.to(term01, stepFrame, {
css: {className: 'term term00'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
tl02 = new TimelineLite();
tl02
.to(term02, stepFrame, {
css: {className: 'term term01'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term02, stepFrame, {
css:{className: 'term term00'},
attr: {y: '-=75'},
ease: Linear.easeNone
});
tl03 = new TimelineLite();
tl03
.to(term03, stepFrame, {
css: {className: 'term term02'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term03, stepFrame, {
css: {className: 'term term01'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term03, stepFrame, {
css:{className: 'term term00'},
attr: {y: '-=75'},
ease: Linear.easeNone
});
tl04 = new TimelineLite();
tl04
.to(term04, stepFrame, {
css: {className: 'term term03'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term04, stepFrame, {
css: {className: 'term term02'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term04, stepFrame, {
css: {className: 'term term01'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term04, stepFrame, {
css:{className: 'term term00'},
attr: {y: '-=75'},
ease: Linear.easeNone
});
tl05 = new TimelineLite();
tl05
.to(term05, stepFrame, {
css: {className: 'term term04'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term05, stepFrame, {
css: {className: 'term term03'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term05, stepFrame, {
css: {className: 'term term02'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term05, stepFrame, {
css: {className: 'term term01'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term05, stepFrame, {
css:{className: 'term term00'},
attr: {y: '-=75'},
ease: Linear.easeNone
});
tl06 = new TimelineLite();
tl06
.to(term06, stepFrame, {
css: {className: 'term term05'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term06, stepFrame, {
css: {className: 'term term04'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term06, stepFrame, {
css: {className: 'term term03'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term06, stepFrame, {
css: {className: 'term term02'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term06, stepFrame, {
css: {className: 'term term01'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term06, stepFrame, {
css:{className: 'term term00'},
attr: {y: '-=75'},
ease: Linear.easeNone
});
tl07 = new TimelineLite();
tl07
.to(term07, stepFrame, {
css: {className: 'term term06'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term07, stepFrame, {
css: {className: 'term term05'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term07, stepFrame, {
css: {className: 'term term04'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term07, stepFrame, {
css: {className: 'term term03'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term07, stepFrame, {
css: {className: 'term term02'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term07, stepFrame, {
css: {className: 'term term01'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term07, stepFrame, {
css:{className: 'term term00'},
attr: {y: '-=75'},
ease: Linear.easeNone
});
tl08 = new TimelineLite();
tl08
.to(term08, stepFrame, {
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term08, stepFrame, {
css: {className: 'term term06'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term08, stepFrame, {
css: {className: 'term term05'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term08, stepFrame, {
css: {className: 'term term04'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term08, stepFrame, {
css: {className: 'term term03'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term08, stepFrame, {
css: {className: 'term term02'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term08, stepFrame, {
css: {className: 'term term01'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
;
tl09 = new TimelineLite();
tl09
.to(term09, stepFrame, {
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term09, stepFrame, {
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term09, stepFrame, {
css: {className: 'term term06'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term09, stepFrame, {
css: {className: 'term term05'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term09, stepFrame, {
css: {className: 'term term04'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term09, stepFrame, {
css: {className: 'term term03'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term09, stepFrame, {
css: {className: 'term term02'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
;
tl10 = new TimelineLite();
tl10
.to(term10, stepFrame, {
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term10, stepFrame, {
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term10, stepFrame, {
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term10, stepFrame, {
css: {className: 'term term06'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term10, stepFrame, {
css: {className: 'term term05'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term10, stepFrame, {
css: {className: 'term term04'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term10, stepFrame, {
css: {className: 'term term03'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
;
tl11 = new TimelineLite();
tl11
.to(term11, stepFrame, {
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term11, stepFrame, {
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term11, stepFrame, {
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term11, stepFrame, {
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term11, stepFrame, {
css: {className: 'term term06'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term11, stepFrame, {
css: {className: 'term term05'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term11, stepFrame, {
css: {className: 'term term04'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
;
tl12 = new TimelineLite();
tl12
.to(term12, stepFrame, {
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term12, stepFrame, {
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term12, stepFrame, {
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term12, stepFrame, {
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term12, stepFrame, {
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term12, stepFrame, {
css: {className: 'term term06'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
.to(term12, stepFrame, {
css: {className: 'term term05'},
attr: {y: '-=75'},
ease: Linear.easeNone
})
;
var wheelTurn = 0.3;
wheel03 = new TimelineMax({repeat: 20, timeScale: 2});
wheel03.add(tl01, 0);
wheel03.add(tl02, 0);
wheel03.add(tl03, 0);
wheel03.add(tl04, 0);
wheel03.add(tl05, 0);
wheel03.add(tl06, 0);
wheel03.add(tl07, 0);
wheel03.add(tl08, 0);
wheel03.add(tl09, 0);
wheel03.add(tl10, 0);
wheel03.add(tl11, 0);
wheel03.add(tl12, 0);
wheel03.play();
TweenMax.to(wheel03, 0.1, {timeScale: 8, ease: Circ.easeOut})
TweenMax.to(wheel03, 4.9, {timeScale: 0, delay: 6, ease: Circ.easeOut})
});
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/latest/TweenMax.min.js"></script>
html,
body {
background-color: #000;
color: #ffff00;
}
section {
overflow: hidden;
position: relative;
display: flex;
justify-content: center;
align-items: center;
}
.full-screen {
height: 100%;
}
.wheel-svg {
margin-left: 10px;
border: 4px dashed yellow;
perspective: 300px;
}
.wheel-svg .term {
font-family: GothamLight, sans-serif;
font-size: 100px;
letter-spacing: -1px;
fill: #ffffff;
opacity: 0;
}
.wheel-svg .term.term03 {
opacity: 1;
}
.wheel-svg .term.term02,
.wheel-svg .term.term04 {
opacity: 0.5;
}
.wheel-svg .term.term01,
.wheel-svg .term.term05 {
opacity: 0.2;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment