JSFiddle - React, Tailwind, and code Playground
by khamer
HTML
<script src="http://momentjs.com/downloads/moment.min.js"></script>
<div class="light clock">
<div class="display">
<div class="weekdays"></div>
<div class="ampm"></div>
<div class="alarm"></div>
<div class="digits"></div>
</div>
</div>
<div class="light clock" data-utc-offset="-8">
<div class="display">
<div class="weekdays"></div>
<div class="ampm"></div>
<div class="alarm"></div>
<div class="digits"></div>
</div>
</div>
CSS
/*-------------------------
Simple reset
--------------------------*/
*{
margin:0;
padding:0;
}
/*-------------------------
General Styles
--------------------------*/
html{
background:url('../img/bg.jpg') #dbe4e6;
overflow:hidden;
}
body{
font:15px/1.3 Arial, sans-serif;
color: #4f4f4f;
z-index:1;
}
a, a:visited {
outline:none;
color:#389dc1;
}
a:hover{
text-decoration:none;
}
section, footer, header, aside{
display: block;
}
/*-------------------------
The clocks
--------------------------*/
.clock{
width:370px;
padding:40px;
margin:200px auto 60px;
position:relative;
}
.clock:after{
content:'';
position:absolute;
width:400px;
height:20px;
border-radius:100%;
left:50%;
margin-left:-200px;
bottom:2px;
z-index:-1;
}
.clock .display{
text-align:center;
padding: 40px 20px 20px;
border-radius:6px;
position:relative;
height: 54px;
}
/*-------------------------
Light color theme
--------------------------*/
.clock.light{
background-color:#f3f3f3;
color:#272e38;
}
.clock.light:after{
box-shadow:0 4px 10px rgba(0,0,0,0.15);
}
.clock.light .digits div span{
background-color:#272e38;
border-color:#272e38;
}
.clock.light .digits div.dots:before,
.clock.light .digits div.dots:after{
background-color:#272e38;
}
.clock.light .alarm{
background:url('../img/alarm_light.jpg');
}
.clock.light .display{
background-color:#dddddd;
box-shadow:0 1px 1px rgba(0,0,0,0.08) inset, 0 1px 1px #fafafa;
}
/*-------------------------
Dark color theme
--------------------------*/
.clock.dark{
background-color:#272e38;
color:#cacaca;
}
.clock.dark:after{
box-shadow:0 4px 10px rgba(0,0,0,0.3);
}
.clock.dark .digits div span{
background-color:#cacaca;
border-color:#cacaca;
}
.clock.dark .alarm{
background:url('../img/alarm_dark.jpg');
}
.clock.dark .display{
background-color:#0f1620;
box-shadow:0 1px 1px rgba(0,0,0,0.08) inset, 0 1px 1px #2d3642;
}
.clock.dark .digits div.dots:before,
.clock.dark .digits...
JavaScript
$(function(){
$.fn.digitalClock = function() {
var clock = $(this),
alarm = clock.find('.alarm'),
ampm = clock.find('.ampm');
// Map digits to their names (this will be an array)
var digit_to_name = 'zero one two three four five six seven eight nine'.split(' ');
// This object will hold the digit elements
var digits = {};
// Positions for the hours, minutes, and seconds
var positions = [
'h1', 'h2', ':', 'm1', 'm2', ':', 's1', 's2'
];
// Generate the digits with the needed markup,
// and add them to the clock
var digit_holder = clock.find('.digits');
$.each(positions, function(){
if(this == ':'){
digit_holder.append('<div class="dots">');
}
else{
var pos = $('<div>');
for(var i=1; i<8; i++){
pos.append('<span class="d' + i + '">');
}
// Set the digits as key:value pairs in the digits object
digits[this] = pos;
// Add the digit elements to the page
digit_holder.append(pos);
}
});
// Add the weekday names
var weekday_names = 'MON TUE WED THU FRI SAT SUN'.split(' '),
weekday_holder = clock.find('.weekdays');
$.each(weekday_names, function(){
weekday_holder.append('<span>' + this + '</span>');
});
var weekdays = clock.find('.weekdays span');
// Run a timer every second and update the clock
(function update_time(){
// Use moment.js to output the current time as a string
// hh is for the hours in...