binary clock
2012 by www.tim-pietrusky.de
https://twitter.com/#!/TimPietrusky
HTML
<div class="buttons">
<button class="btn button-rotate">Rotate</button>
<button class="btn button-digital" disabled="disabled">Digital ON</button>
</div>
<div id="binary">
<div class="hours">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<div class="minutes">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<div class="seconds">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<div id="active"></div>
</div>
CSS
* {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
body {
height: 100%;
margin: 0;
padding: 0;
background: #000;
font-family: 'Revalia', cursive;
}
.buttons {
position: fixed;
top: 50px;
right: 5px;
z-index: 1337;
}
.btn {
-moz-box-shadow: inset 0px 1px 0px 0px #ffffff;
-webkit-box-shadow: inset 0px 1px 0px 0px #ffffff;
box-shadow: inset 0px 1px 0px 0px #ffffff;
background: #ededed;
-moz-border-radius: 6px;
-webkit-border-radius: 6px;
border-radius: 6px;
border: 1px solid #dcdcdc;
color: #777777;
font-family: arial;
font-size: 10px;
font-weight: bold;
padding: 3px 6px;
text-decoration: none;
text-shadow: 1px 1px 0px #ffffff;
opacity: .1;
transition: all 1s ease-in-out;
}
.btn:hover {
opacity: 1;
}
.btn:active {
position: relative;
top: 1px;
}
#binary {
height: 100%;
width: 300px;
margin-left: auto;
margin-right: auto;
transition: all .5s ease-in;
}
#binary.rotated {
/* http://stackoverflow.com/a/6454675 */
/* special */
-webkit-transform-origin: 50% 300px;
-webkit-transform: rotate(90deg) scale(1.65, 1.65);
}
#binary.rotated #active {
/* special */
-webkit-transform-origin: 0 0;
/*
* @TODO: 20120324 [TimPietrusky] - Add -webkit-animation
*/
-webkit-transform: rotate(-90deg) scale(1.35, 1.35) translate(50px, -40px);
}
.digital {
color: rgb(0, 0, 0);
font-size: 2.4em;
font-family: sans;
margin: 20px 55px 0 25px;
text-shadow: 0 0 45px rgba(255, 255, 255, .6);
-webkit-animation: digital 4s infinite;
}
.hours,
.minutes,
.seconds {
float: left;
margin-top: 50px;
margin-left: 50px;
width: 50px;
height: 400px;
/* fun */
/*
width:100%;
*/
}
.hours {
margin-top: 125px;
}
.hours div,
.minutes div,
.seconds div {
background: rgba(204, 204, 204, .5);
border: 5px solid #333;
display: block;
height: 25px;
width: 25px;
margin-bottom: 50px;
-webkit-transition: all .3s ease-in;
...
JavaScript
var date,
bin,
digitalClock,
body,
active,
navigation,
binary;
digitalClock = document.getElementsByClassName('digital')[0];
body = document.body;
binary = document.getElementById('binary');
active = {
domElement: document.getElementById('active'),
secondsx: false,
minutesx: false,
hoursx: false,
secondsxString: 'secondsx',
minutesxString: 'minutesx',
hoursxString: 'hoursx',
secondsxDec: '',
minutesxDec: '',
hoursxDec: '',
getActive: function() {
if (active.secondsx) return active.secondsxString;
if (active.minutesx) return active.minutesxString;
if (active.hoursx) return active.hoursxString;
},
setNext: function(shit, bin) {
active.reset();
active[shit] = true;
active[shit + 'Dec'] = bin;
},
reset: function() {
active.secondsx = false;
active.minutesx = false;
active.hoursx = false;
}
};
navigation = {
init: function() {
navigation.button.rotate.register();
navigation.button.digital.register();
},
/*
* @TODO: 20120324 [TimPietrusky] - Button-Factory! Now! FUCK!
*/
button: {
rotate: {
domElement: document.getElementsByClassName('button-rotate')[0],
register: function() {
/* onclick */
document.getElementsByClassName('button-rotate')[0].onclick = function() {
if (binary.className == 'rotated') {
binary.className = '';
} else {
binary.className = 'rotated';
}
}
}
},
digital: {
domElement: document.getElementsByClassName('button-digital')[0],
lg: {
labelOn: 'Digital ON',
labelOff: 'Digital OFF'
},
register: function() {
/* onclick */
document.getElementsByClassName('button-digital')[0].onclick = function() {
/*
* @TODO: 20120328 [TimPietrusky] - event based or something
*/
if (active.hasClass('shutoff')) {
console.log("sadffdas");
...