Spinning Wheel
Spinning Wheel Javascript
by Roshan Karunarathna
HTML
<div class="container">
<div class="header">
<h1>SPIN</h1>
</div>
<div class="container-section">
<div class="overall-round-container">
<div class="overall-round-section" id="spinnner"><div class="spin-bar"><span>1</span></div><div class="spin-bar"><span>2</span></div><div class="spin-bar"><span>3</span></div><div class="spin-bar"><span>4</span></div><div class="spin-bar"><span>5</span></div><div class="spin-bar"><span>6</span></div><div class="spin-bar"><span>7</span></div><div class="spin-bar"><span>8</span></div><div class="spin-bar"><span>9</span></div><div class="spin-bar"><span>10</span></div></div>
<p id="spinValueText">0</p>
</div>
</div>
<div class="footer">
<div class="nav-section">
<a id="spin" onclick="spinning()" href="javascript:void(0);">Spin</a>
</div>
</div>
</div>
CSS
html,
body {
padding: 0;
margin: 0;
color: #fff;
font-family: sans-serif;
}
h1 {
margin: 0;
padding: 0 0 30px 0;
}
.container {
width: 100%;
background-color: #5d5d5d;
padding: 30px 0;
}
.header,
.footer {
width: 100%;
height: auto;
text-align: center;
}
a#spin {
font-size: 18px;
text-decoration: none;
text-transform: uppercase;
display: inline-block;
background-color: #910033;
color: #fff;
padding: 13px 40px 10px;
border-radius: 4px;
box-shadow: 0 0 0 4px #910033 inset, 0 0 0 5px #c16485 inset, 0 0 3px 0px rgba(0, 0, 0, 0.5);
}
.container-container {
width: auto;
height: auto;
background-color: #132D59;
margin: 0 auto;
position: relative;
}
.overall-round-section {
background: conic-gradient(#E65100 10%, #827717 0 20%, #33691E 0 30%, #1B5E20 0 40%, #004D40 0 50%, #01579B 0 60%, #1A237E 0 70%, #4A148C 0 80%, #880E4F 0 90%, #B71C1C 0 100%, red 0);
width: 200px;
height: 200px;
border-radius: 50%;
margin: 0 auto;
position: relative;
transition: all 10s cubic-bezier(0, 0.29, 0.3, 1.03) 0ms;
overflow: hidden;
}
.overall-round-container {
position: relative;
width: 200px;
height: 200px;
border-radius: 50%;
margin: 0 auto;
box-shadow: 0px 0px 5px 1px rgba(0, 0, 0, 0.5);
border: 1px solid rgba(255, 255, 255, 0.1);
}
.overall-round-container::before {
content: "";
position: absolute;
top: 50%;
margin-top: -3px;
left: -8px;
border-width: 5px 0 5px 15px;
border-style: solid;
border-color: rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) #fff;
z-index: 10;
}
.overall-round-container::after {
content: "";
position: absolute;
width: 40px;
height: 40px;
background-color: #fff;
border-radius: 50%;
left: 50%;
top: 50%;
margin-left: -20px;
margin-top: -20px;
box-shadow: 0px 0px 5px 1px rgba(0, 0, 0, 0.5);
}
.overall-round-section .spin-bar {
position: absolute;
top: 0;
width: 62px;
background-color: rgba(255, 255, 255, 0.03);
left: 50%;
...
JavaScript
var button = document.getElementById("spin");
var spinnner = document.getElementById("spinnner");
var spinnnerValue = document.getElementById("spinValueText");
var spinnnerBarNodes = spinnner.childNodes;
var spinnnerBarCount = spinnner.childElementCount;
var y = 1;
var spinnnerBarDeg = 360 / spinnnerBarCount;
var spinnnerBarsDeg = 0;
for (var i = 0; i < spinnnerBarCount; i++) {
spinnnerBarDeg = parseInt(spinnnerBarDeg);
spinnnerBarsDeg = (spinnnerBarDeg * (i + 3)) + 18;
spinnnerBarsDeg = "rotate(-" + spinnnerBarsDeg + "deg)";
spinnnerBarNodes[i].style.transform = spinnnerBarsDeg;
}
function spinning() {
spinnnerValue.classList.remove("ShowValue");
var x = Math.floor((Math.random() * 10) + 1);
var deg = 0;
if (y % 2 == 0) {
deg = (x * 36) + 1080;
} else {
deg = (x * 36) - 1080;
}
deg = "rotate(" + deg + "deg)";
spinnner.style.transform = deg;
y++;
setTimeout(function() {
spinnnerValue.innerHTML = x;
spinnnerValue.className = "ShowValue";
}, 2400);
}