Working remake of this http://dribbble.com/shots/946731-Unsafe-Lock-Rebound
A Pen by Saminou yengue kizidi on CodePen.
<div id="lock"> | |
<div id="lock_inset"> | |
<div id="lines"></div> | |
<div id="number_wrapper"> | |
<div class="number"> | |
<div class="number_select" onSelectStart="return false"> | |
<span class="top_number">9</span> | |
<span class="">0</span> | |
<span class="bottom_number">1</span> | |
<span class="bottom_number">2</span> | |
<span class="">3</span> | |
<span class="">4</span> | |
<span class="">5</span> | |
<span class="">6</span> | |
<span class="">7</span> | |
<span class="">8</span> | |
<span class="">9</span> | |
<span class="">0</span> | |
</div> | |
</div> | |
<div class="number"> | |
<div class="number_select" onSelectStart="return false"> | |
<span class="top_number">9</span> | |
<span class="">0</span> | |
<span class="bottom_number">1</span> | |
<span class="bottom_number">2</span> | |
<span class="">3</span> | |
<span class="">4</span> | |
<span class="">5</span> | |
<span class="">6</span> | |
<span class="">7</span> | |
<span class="">8</span> | |
<span class="">9</span> | |
<span class="">0</span> | |
</div> | |
</div> | |
<div class="number"> | |
<div class="number_select" onSelectStart="return false"> | |
<span class="top_number">9</span> | |
<span class="">0</span> | |
<span class="bottom_number">1</span> | |
<span class="bottom_number">2</span> | |
<span class="">3</span> | |
<span class="">4</span> | |
<span class="">5</span> | |
<span class="">6</span> | |
<span class="">7</span> | |
<span class="">8</span> | |
<span class="">9</span> | |
<span class="">0</span> | |
</div> | |
</div> | |
<div id="shadow"></div> | |
</div> | |
</div> | |
</div> |
/* | |
Working remake of this: | |
http://dribbble.com/shots/946731-Unsafe-Lock-Rebound | |
*/ | |
var number = document.getElementsByClassName("number"), | |
numberSelect = document.getElementsByClassName("number_select"); | |
for(i = 0; i < number.length; i++) { | |
numberSelect[i].addEventListener("click", fnRotateNum, false); | |
numberSelect[i].style.marginTop = "0px"; | |
console.log(numberSelect[i]); | |
} | |
function fnRotateNum() { | |
spans = this.getElementsByTagName("span"); | |
if(parseInt(this.style.marginTop, 10) <= -612 + 153) { | |
this.style.marginTop = "0px"; | |
for(i = 0; i < spans.length; i++) { | |
if(spans[i].classList.contains("top_number")) { | |
spans[i].classList.remove("top_number"); | |
} | |
if(spans[i].classList.contains("bottom_number")) { | |
spans[i].classList.remove("bottom_number");; | |
} | |
} | |
spans[0].classList.add("top_number"); | |
spans[2].classList.add("bottom_number"); | |
} | |
else { | |
this.style.marginTop = parseInt(this.style.marginTop, 10) - 51 + "px"; | |
for(i = 0; i < spans.length; i++) { | |
if(spans[i].classList.contains("top_number")) { | |
spans[i].classList.remove("top_number"); | |
console.log(spans[i+1]); | |
spans[i+1].classList.add("top_number"); | |
i++; | |
} | |
if(spans[i].classList.contains("bottom_number")) { | |
spans[i].classList.remove("bottom_number"); | |
spans[i+1].classList.add("bottom_number"); | |
i += 1; | |
} | |
} | |
} | |
console.log(this.getElementsByTagName("div")); | |
} |
html, body { | |
height: 100%; | |
margin: 0 auto; | |
background: linear-gradient(#868179, #4F4B47); | |
} | |
#lock { | |
position: absolute; | |
top: 50%; | |
left: 50%; | |
margin-top: -170px; | |
margin-left: -269px; | |
padding: 60px 70px 60px 70px; | |
background: | |
linear-gradient(white, #DCD3CA); | |
border-radius: 25px; | |
box-shadow: | |
inset 0 -4px 4px #B1AAA1, | |
0 20px 40px rgba(0, 0, 0, 0.5), | |
0 2px 5px 1px rgba(0, 0, 0, 0.7); | |
} | |
#lock_inset { | |
padding: 23px; | |
background: | |
linear-gradient(white, #DCD3CA); | |
border-radius: 15px; | |
box-shadow: | |
inset 0 -8px 4px -4px #B1AAA1, | |
0 7px 10px rgba(0, 0, 0, 0.07), | |
0 14px 10px rgba(0, 0, 0, 0.07), | |
0 20px 10px rgba(0, 0, 0, 0.07), | |
0 27px 10px rgba(0, 0, 0, 0.07), | |
0 34px 10px rgba(0, 0, 0, 0.07), | |
0 2px 3px 1px rgba(0, 0, 0, 0.5); | |
} | |
#lines { | |
position: absolute; | |
width: 23px; | |
height: 4px; | |
margin-top: 76px; | |
margin-left: -23px; | |
background: | |
linear-gradient( | |
rgba(0, 0, 0, 0.2) 1px, | |
transparent 1px, | |
transparent 3px, | |
rgba(0, 0, 0, 0.3) 3px); | |
} | |
#lines::after { | |
content: ""; | |
position: absolute; | |
width: 23px; | |
height: 4px; | |
margin-left: 373px; | |
background: | |
linear-gradient( | |
rgba(0, 0, 0, 0.2) 1px, | |
transparent 1px, | |
transparent 3px, | |
rgba(0, 0, 0, 0.3) 3px); | |
} | |
#number_wrapper { | |
background: | |
linear-gradient(black 13%, #403C3A, black 75%, #110C14, black 85%); | |
border-radius: 8px; | |
width: 350px; | |
height: 150px; | |
box-shadow: inset 0 0 10px 2px black; | |
} | |
.number { | |
display: inline-block; | |
vertical-align: top; | |
height: 150px; | |
width: 84px; | |
margin-left: 15px; | |
background: | |
linear-gradient(#000000 0%,#000006 3%,#08000d 4%,#292527 7%,#55514c 9%,#847f76 11%,#979289 12%,#bab3a9 15%,#d9cfc6 17%,#f4eae1 19%,#fff4ec 20%,#fffffc 22%,#ffffff 24%,#fffffe 33%,#fffdf5 35%,#fef3eb 37%,#d4ccc2 45%,#ada69d 54%,#726d66 65%,#595550 71%,#4f4b47 74%,#4b4743 76%,#4b4743 79%,#4f4b47 80%,#6a665f 84%,#6d6861 85%,#6a665f 88%,#65605a 89%,#54504b 91%,#0d0711 98%,#02000a 99%,#000004 100%); | |
border: 5px solid rgba(0, 0, 0, 0.25); | |
border-top: none; | |
border-bottom: none; | |
border-left-image: linear-gradient(white, black); | |
overflow: hidden; | |
font-size: 45px; | |
font-family: arial; | |
text-shadow: | |
0 1px 0 rgba(255, 255, 255, 0.5), | |
0 -1px 0 rgba(0, 0, 0, 0.5), | |
0 -2px 0 rgba(255, 255, 255, 0.1); | |
color: #827D74; | |
cursor: pointer; | |
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2), 0 8px 10px rgba(0, 0, 0, 0.2), 0 13px 10px rgba(0, 0, 0, 0.2); | |
} | |
#shadow { | |
position: absolute; | |
width: 330px; | |
height: 30px; | |
background: linear-gradient(black 20%, transparent); | |
margin-top: -150px; | |
margin-left: 10px; | |
} | |
#shadow::after { | |
content: ""; | |
position: absolute; | |
width: 330px; | |
height: 25px; | |
top: 125px; | |
background: linear-gradient(transparent, black 85%); | |
} | |
.number_select { | |
padding-left: 28px; | |
transition: 0.5s; | |
} | |
.number_select span { | |
font-weight: 600; | |
display: block; | |
margin: 0 auto; | |
height: 51px; | |
transition: 0.5s; | |
} | |
.top_number { | |
transform: rotateX(50deg); | |
} | |
.bottom_number { | |
transform: rotateX(-50deg); | |
color: #413D3B; | |
text-shadow: | |
0 -1px 0 rgba(255, 255, 255, 0.2), | |
0 -2px 0 rgba(255, 255, 255, 0.1); | |
} |
Working remake of this http://dribbble.com/shots/946731-Unsafe-Lock-Rebound
A Pen by Saminou yengue kizidi on CodePen.