Create an Animated Flip Down Clock

Learn how to Create a Retro Animated Flip-Down Clock

In this tutorial, we will create an animated flip down clock inspired by the 70′s. Using the Mootools framework, I tried to replicate the flip action of the pads and make it as lifelike as possible. With it’s retro styling, it could be a really neat thing to add to your website, so let’s get started!


Tutorial Details

  • Program: Mootools
  • Difficulty: Easy
  • Estimated Completion Time: ~ 1 hour

Step 1: The Main Concept

The clock is composed of three groups of images: hours, minutes and seconds, which are split in an upper part and a lower part so we can obtain the “flip” effect. The main animation consists of reducing the height of the upper part from 100% to 0%, then increasing the height of the lower part from 0% to 100% for each group in which a digit changes. Here is the basic scheme.

Step 2: Photoshop

First, we must create our images.

Select the “Rounded Ractangle Tool” (U), set the radius to 10px and the color to #0a0a0a and create a 126px by 126px ractangle, you can change the dimension according to your needs, just keep them an even number. Resterize the shape by going to Layer > Rasterize > Shape or Right Click > Rasterize Layer. Now we want to create that "gap" between the two parts and make the upper background a little bit lighter. Place a guide line at the horizontal half of our pad, then select the hole pad (Ctrl + Click on the layer icon) and with the Rectangular Marquee Tool (M) select the upper half in intersect mode (hold Shift + Alt). Now we just have to fill the selection with #121212 using the Paint Bucket Tool (G). Next trace a 2px, black line using our guide line as help, on a separate layer.

Now we have to add the digits. Using the Type Tool (T) make a new layer with the digits and place it under the line we’ve created earlier.

Just add a little overlay on the numbers to make them look a bit more realistic. Create a new layer above the digits layer, select the lower part of the pad and fill with #b8b8b8, then fill the upper part with #d7d7d7. Now set the blending mode to “Multiply”.

Ok. Now that we have our completed pad, we have to split it up. The main idea is to split the right digit from the left one, so instead of having 60 images for the minutes and seconds groups, you end up with 20 images that we will use for both groups. So basicly we have to split our pad into 4 images with the same dimensions. I used the Crop Tool (C) for this job.

After you crop the pad, change the digit and save each time as a separate .png so you end up with all the files you need ( numbers from 0 – 9 ). Repeat this step for all parts of the pad. Note that for the hours pad, you don’t separate the digits, you have just the upper and lower part. In the end here is our folder structure ("Double" for minutes and seconds, "Single" for hours):

Step 3: HTML Markup

Now that we have our files ready we can start coding. First of all, we need two containers for our images, one for the "upperPart" of our clock and one for the "lowerPart".

<div id="upperPart">
</div>

<div id="lowerPart">
</div>

Next we add the images. Here is a scheme with the id’s I’ve used:

<div id="upperPart">
    <img src="spacer.png" /><img id="hoursUp" src="Single/Up/AM/0.png" />
    <img id="minutesUpLeft" src="Double/Up/Left/0.png" /><img id="minutesUpRight" src="Double/Up/Right/0.png" />
    <img id="secondsUpLeft" src="Double/Up/Left/0.png" /><img id="secondsUpRight" src="Double/Up/Right/0.png" />
</div> 
<div id="lowerPart">
    <img src="spacer.png" /><img id="hoursDown" src="Single/Down/AM/0.png"/>
    <img id="minutesDownLeft" src="Double/Down/Left/0.png" /><img id="minutesDownRight" src="Double/Down/Right/0.png" />
    <img id="secondsDownLeft" src="Double/Down/Left/0.png" /><img id="secondsDownRight" src="Double/Down/Right/0.png" />
</div>

I had to use a transparent spacer image that is 1px wide and the same hight as the other images in order to keep the containers from shrinking when the pads flip. Also, there must not be any space between the images from the same group (e.g. "minutesUpLeft" and "minutesUpRight").

Ok. These will be the front pads of our clock that will flip down, now we have to set up the back ones, so when the front pads flip, the new digits can be seen on the them. We will wrap what we’ve done so far in a div and just duplicate it above itself, adding to each image id the word "Back" and changing to the appropriate source file.

<div id="back">
    <div id="upperPartBack">
        <img src="spacer.png" /><img id="hoursUpBack" src="Single/Up/AM/0.png" />
        <img id="minutesUpLeftBack" src="Double/Up/Left/0.png" /><img id="minutesUpRightBack" src="Double/Up/Right/0.png" />    
        <img id="secondsUpLeftBack" src="Double/Up/Left/0.png" /><img id="secondsUpRightBack" src="Double/Up/Right/0.png" />
    </div>
    <div id="lowerPartBack">
        <img src="spacer.png" /><img id="hoursDownBack" src="Single/Down/AM/0.png" />    
        <img id="minutesDownLeftBack" src="Double/Down/Left/0.png" /><img id="minutesDownRightBack" src="Double/Down/Right/0.png" />
        <img id="secondsDownLeftBack" src="Double/Down/Left/0.png" /><img id="secondsDownRightBack" src="Double/Down/Right/0.png" />
    </div>
</div>

<div id="front">
    <div id="upperPart">
        <img src="spacer.png" /><img id="hoursUp" src="Single/Up/AM/0.png" />
        <img id="minutesUpLeft" src="Double/Up/Left/0.png" /><img id="minutesUpRight" src="Double/Up/Right/0.png" />
        <img id="secondsUpLeft" src="Double/Up/Left/0.png" /><img id="secondsUpRight" src="Double/Up/Right/0.png" />
    </div>         
    <div id="lowerPart">
        <img src="spacer.png" /><img id="hoursDown" src="Single/Down/AM/0.png" />
        <img id="minutesDownLeft" src="Double/Down/Left/0.png" /><img id="minutesDownRight" src="Double/Down/Right/0.png" />
        <img id="secondsDownLeft" src="Double/Down/Left/0.png" /><img id="secondsDownRight" src="Double/Down/Right/0.png" />
    </div>
</div>

Here is the complete .html file with reference to the stylesheet and the javascript file "animate.js" in which we will create the animation.

<html>
<head>
<title>Create an Animated Flip Down Clock</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>

<div id="wrapper">
	<div id="back">
		<div id="upperPartBack">
			<img src="spacer.png" /><img id="hoursUpBack" src="Single/Up/AM/0.png" />
			<img id="minutesUpLeftBack" src="Double/Up/Left/0.png" /><img id="minutesUpRightBack" src="Double/Up/Right/0.png" />    
			<img id="secondsUpLeftBack" src="Double/Up/Left/0.png" /><img id="secondsUpRightBack" src="Double/Up/Right/0.png" />
		</div>
		<div id="lowerPartBack">
			<img src="spacer.png" /><img id="hoursDownBack" src="Single/Down/AM/0.png" />    
			<img id="minutesDownLeftBack" src="Double/Down/Left/0.png" /><img id="minutesDownRightBack" src="Double/Down/Right/0.png" />
			<img id="secondsDownLeftBack" src="Double/Down/Left/0.png" /><img id="secondsDownRightBack" src="Double/Down/Right/0.png" />
		</div>
	</div>
    
	<div id="front">
		<div id="upperPart">
			<img src="spacer.png" /><img id="hoursUp" src="Single/Up/AM/0.png" />
			<img id="minutesUpLeft" src="Double/Up/Left/0.png" /><img id="minutesUpRight" src="Double/Up/Right/0.png"/>
			<img id="secondsUpLeft" src="Double/Up/Left/0.png" /><img id="secondsUpRight" src="Double/Up/Right/0.png"/>
		</div>         
		<div id="lowerPart">
			<img src="spacer.png" /><img id="hoursDown" src="Single/Down/AM/0.png"/>
			<img id="minutesDownLeft" src="Double/Down/Left/0.png"/><img id="minutesDownRight" src="Double/Down/Right/0.png" />
			<img id="secondsDownLeft" src="Double/Down/Left/0.png"  /><img id="secondsDownRight" src="Double/Down/Right/0.png"  />
		</div>
	</div>
</div>

</body>
<script src="mootools.js" type="text/javascript"></script>
<script src="animate.js" type="text/javascript"></script>
</html>

Step 4: CSS

The main thing we have to do now is to overlap the “front” and “back” divs. First we position the main wrapper where we need it and then give the same absolute position to both containers.

#wrapper{
	position:absolute;
	top: 100px;
	left:400px;
}

#front, #back{
	position:absolute;
	top:0px;
}

Now we need to vertically align the upper part to the bottom and the lower part to the top, so that the pads would look like they’re anchored to the middle of the clock. I added the height and visibility properties for the front parts because we need them for the animation later on.

#upperPart, #upperPartBack{
	vertical-align:bottom;
}

#lowerPart, #lowerPartBack{
	vertical-align:top;
}

#upperPart img{
	position:relative;
	height:63px;
	vertical-align:bottom;
	visibility:visible;
}

#lowerPart img{
	position:relative;
	height:63px;
	vertical-align:top;
	visibility:visible;
}
	
#lowerPartBack img{
	position:relative;
	vertical-align:top;
}

#upperPartBack img{
	position:relative;
	vertical-align:bottom;
}

Finally all we have to do is to constrain the width of the pads because we want to play around only with their height. By default, if you change one of them, the hole image will be scaled.

#hoursUp, #hoursDown, #hoursUpBack, #hoursDownBack{
	width:126px;
}

#minutesUpLeft, #minutesUpRight, #minutesDownLeft, #minutesDownRight,
#minutesUpLeftBack, #minutesUpRightBack, #minutesDownLeftBack, #minutesDownRightBack,
#secondsUpLeft, #secondsUpRight, #secondsDownLeft, #secondsDownRight,
#secondsUpLeftBack, #secondsUpRightBack, #secondsDownLeftBack, #secondsDownRightBack{
	width:63px;
}

Here it is all put together:

body{
	background:#000;
}

#wrapper{
	position:absolute;
	top: 100px;
	left:400px;
}

#front, #back{
	position:absolute;
	top:0px;
}

#upperPart, #upperPartBack{
	vertical-align:bottom;
}

#lowerPart, #lowerPartBack{
	vertical-align:top;
}

#upperPart img{
	position:relative;
	height:63px;
	vertical-align:bottom;
	visibility:visible;
}

#lowerPart img{
	position:relative;
	height:63px;
	vertical-align:top;
	visibility:visible;
}
	
#lowerPartBack img{
	position:relative;
	vertical-align:top;
}

#upperPartBack img{
	position:relative;
	vertical-align:bottom;
}

#hoursUp, #hoursDown, #hoursUpBack, #hoursDownBack{
	width:126px;
}

#minutesUpLeft, #minutesUpRight, #minutesDownLeft, #minutesDownRight,
#minutesUpLeftBack, #minutesUpRightBack, #minutesDownLeftBack, #minutesDownRightBack,
#secondsUpLeft, #secondsUpRight, #secondsDownLeft, #secondsDownRight,
#secondsUpLeftBack, #secondsUpRightBack, #secondsDownLeftBack, #secondsDownRightBack{
	width:63px;
}

Step 5: Creating the Animation

First of all we need some variables to store the time that is shown on the pads. Note: h = hours, m1 = the left minute digit, m2 = the right minute digit, s1 = the left second digit, s2 = the right second digit.

	var h_current = -1;
	var m1_current = -1;
	var m2_current = -1;
	var s1_current = -1;
	var s2_current= -1;

Now we create a function that will run every second and update our clock. First we get the current time and determine the time of day, AM or PM.

function retroClock(){
		
       now = new Date();
       h = now.getHours();
       m1 = now.getMinutes() / 10;
       m2 = now.getMinutes() % 10;
       s1 = now.getSeconds() / 10;
       s2 = now.getSeconds() % 10;
       if(h < 12)
          ap = "AM";
       else{ 
          if( h == 12 )
              ap = "PM";
          else{
              ap = "PM";
              h -= 12; }
       }

Then we compare it to the time shown on the pads and change which group is different. It uses a function called “flip” that I will describe in a minute.

	 
       if( h != h_current){
          flip('hoursUp', 'hoursDown', h, 'Single/Up/'+ap+'/', 'Single/Down/'+ap+'/');
          h_current = h;
      }
      
      if( m2 != m2_current){
          flip('minutesUpRight', 'minutesDownRight', m2, 'Double/Up/Right/', 'Double/Down/Right/');
          m2_current = m2;
          
          flip('minutesUpLeft', 'minutesDownLeft', m1, 'Double/Up/Left/', 'Double/Down/Left/');
          m1_current = m1;
      }
      
       if (s2 != s2_current){
          flip('secondsUpRight', 'secondsDownRight', s2, 'Double/Up/Right/', 'Double/Down/Right/');
          s2_current = s2;
          
          flip('secondsUpLeft', 'secondsDownLeft', s1, 'Double/Up/Left/', 'Double/Down/Left/');
          s1_current = s1;
      }
}//end retroClock

Now, the flip function. It has a few parameters: upperId, lowerId = the ids of the upper and lower pads that will flip; changeNumber = the new value that will be shown; pathUpper, pathLower = the paths to the source files for the new value. The animation is composed of the following steps:
The front upper pad takes the value of the back one and it’s made visible, overlaing it, while the lower one is also made visible but it’s height is changed to 0px.

function flip (upperId, lowerId, changeNumber, pathUpper, pathLower)
{
    var upperBackId = upperId+"Back";
    $(upperId).src = $(upperBackId).src;
    $(upperId).setStyle("height", "63px");
    $(upperId).setStyle("visibility", "visible");
    
    $(lowerId).setStyle("height", "0px");
    $(lowerId).setStyle("visibility", "visible");

    

Now we change the back upper and front lower pad to the new value.

	$(upperBackId).src = pathUpper+parseInt(changeNumber)+".png";    
   $(lowerId).src = pathLower+parseInt(changeNumber)+".png";

Having this setup we can start the actual animation. As I mentioned earlier it consists of reducing the height of the front upper part to 0%, 0px, and increasing the height of the front lower part to 100%, 63px in this case. After the animation is complete, the back lower pad takes the new value and the front pads are make hidden.

   
    var flipUpper = new Fx.Tween(upperId, {duration: 200, transition: Fx.Transitions.Sine.easeInOut});
    flipUpper.addEvents({
        'complete': function(){
            var flipLower = new Fx.Tween(lowerId, {duration: 200, transition: Fx.Transitions.Sine.easeInOut});
                flipLower.addEvents({
                    'complete': function(){	
                        lowerBackId = lowerId+"Back";
                        $(lowerBackId).src = $(lowerId).src;
                        $(lowerId).setStyle("visibility", "hidden");
                        $(upperId).setStyle("visibility", "hidden");
                    }				});					
                flipLower.start('height', 64);
                
        }
                        });
    flipUpper.start('height', 0);		
}//end flip

The final thing to do is to make our main function run every second.

	setInterval('retroClock()', 1000);;

Here it is all put together.

var h_current = -1;
var m1_current = -1;
var m2_current = -1;
var s1_current = -1;
var s2_current= -1;
function flip (upperId, lowerId, changeNumber, pathUpper, pathLower)
{
    var upperBackId = upperId+"Back";
    $(upperId).src = $(upperBackId).src;
    $(upperId).setStyle("height", "63px");
    $(upperId).setStyle("visibility", "visible");
    
    $(lowerId).setStyle("height", "0px");
    $(lowerId).setStyle("visibility", "visible");
    
	$(upperBackId).src = pathUpper+parseInt(changeNumber)+".png";    
    $(lowerId).src = pathLower+parseInt(changeNumber)+".png";
    
    var flipUpper = new Fx.Tween(upperId, {duration: 200, transition: Fx.Transitions.Sine.easeInOut});
    flipUpper.addEvents({
        'complete': function(){
            var flipLower = new Fx.Tween(lowerId, {duration: 200, transition: Fx.Transitions.Sine.easeInOut});
                flipLower.addEvents({
                    'complete': function(){	
                        lowerBackId = lowerId+"Back";
                        $(lowerBackId).src = $(lowerId).src;
                        $(lowerId).setStyle("visibility", "hidden");
                        $(upperId).setStyle("visibility", "hidden");
                    }				});					
                flipLower.start('height', 64);
                
        }
                        });
    flipUpper.start('height', 0);		
}//end flip
    
            

function retroClock(){
    
     now = new Date();
     h = now.getHours();
     m1 = now.getMinutes() / 10;
     m2 = now.getMinutes() % 10;
     s1 = now.getSeconds() / 10;
     s2 = now.getSeconds() % 10;
     if(h < 12)
        ap = "AM";
     else{ 
        if( h == 12 )
            ap = "PM";
        else{
            ap = "PM";
            h -= 12; }
     }
     	 
     if( h != h_current){
        flip('hoursUp', 'hoursDown', h, 'Single/Up/'+ap+'/', 'Single/Down/'+ap+'/');
        h_current = h;
    }
    
    if( m2 != m2_current){
        flip('minutesUpRight', 'minutesDownRight', m2, 'Double/Up/Right/', 'Double/Down/Right/');
        m2_current = m2;
        
        flip('minutesUpLeft', 'minutesDownLeft', m1, 'Double/Up/Left/', 'Double/Down/Left/');
        m1_current = m1;
    }
    
     if (s2 != s2_current){
        flip('secondsUpRight', 'secondsDownRight', s2, 'Double/Up/Right/', 'Double/Down/Right/');
        s2_current = s2;
        
        flip('secondsUpLeft', 'secondsDownLeft', s1, 'Double/Up/Left/', 'Double/Down/Left/');
        s1_current = s1;
    }
}//end retroClock

setInterval('retroClock()', 1000);

Finished

We are finished! Hope you’ve enjoyed working on this little project, it has a somewhat complex concept, but in the end it is a really neat gadget for your websites. Please do not hesitate to send any suggestions you may have!


Tags: MooTools
Note: Want to add some source code? Type <pre><code> before it and </code></pre> after it. Find out more
  • Scott

    This exists as a pretty cool screen saver which can be found here: http://www.9031.com/downloads/screensavers.html.

    This is a pretty cool tutorial, thanks. Although I am not sure if you should be worried about copyright infringement or not. Either way I learned a lot.

  • http://www.philohermans.com Philo

    Amazing Result! :)
    You don’t expect that something like that is possible using javascript.

    • http://www.vetgaar.nl/ phil

      Yeah, those libraries (mootools/jquery) surely expanded javascript to a new level.

  • http://edgespan.de Alexander

    #1
    A Demo or full Sourcecode Download would be very nice.

    • http://www.jeffrey-way.com Jeffrey Way

      Both are available at the very top of the article. :)

      • w1sh

        You love it when people are stupid don’t you?

      • http://edgespan.de Alexander

        as i posted they were not :/
        but now they are – thx

  • Toms Ošiņš

    Very nice. I’ll try to implement this in one of my future projects. Cookie for the tut.

  • ryan

    is it just me or is this lame.

    • http://noahhendrix.com Noah Hendrix

      I think it is pretty cool. I can see it used to count down to a product launch of some kind. What is actually pretty cool about this is that it is done without using flash something not even thought possible a few years ago. So to answer your question yes it is just you.

      • http://sffarlenn.net Laneth

        Haha, burned!

        Actually, I agree Noah – this is awesome. Funny thing is, with a little creativity, one could take the lessons learned here (both graphically and code-wise) and apply it to anything that suits their personal tastes. And the time it takes to post a comment here is time wasted teaching yourself something new, so I’m glad that my comment actually contributed instead of complained.

    • John

      it’s just you.

    • http://threadbarecanvas.com Siriquelle

      Yeah, I think this is cool too. Would make a good attition to a comming soon page where it was counting down to a specific time, it’s not about the clock its about how you can use what you learn while following the tutorial. Get it? :D

    • Ian

      In the past I’ve been quite critical of a number of the tutorials posted on nettuts+, especially ones dealing with javascript libraries since I think there is a bit too much of a focus put on them. That said I thought this was a good tutorial and the final product looks great. I’m not sure if I’ll ever have a use for it but I’m sure plenty of other people will.

      • Nori Silverrage

        Well I for one really enjoy all the tutorials they post on here, and I think that ones that utilize javascript libraries make sense because they are easy to use and allow people that may not otherwise use javascript to use it. Plus it makes doing things very easy for people that know javascript.

    • http://stuffbuff.com michael langer

      We are developing something like this for a new auction widget for our site stuffbuff so there is a use for you.

  • http://ethan.luffle.com/ Ethan

    This is cool. I will definitely use this technique! Nice article.

  • http://www.chrispierre.com Chris Pierre

    Interesting Technique of Javascript! . I agree with Noah I can visualize using this effect for a countdown on a product release.

  • Kwaa

    Very nice and very “out of the box” to do this using Javascript.

    Well done, mate.

  • http://mokshasolutions.com Moksha Solutions

    really wonderful tutorial. thanks for sharing and its really sometime new.

  • http://codejoust.com/ Iain – CodeJoust

    Next up. Using canvas for this effect without images.
    I’m usually pretty image-agnostic when doing effects like this… but the 3-d flip effect might be a little tricky to achieve with canvas.

  • Luis Craik

    GREAT!! I was looking for it since… loooonng time ago!… thanks!!!!!!!!!! Love this site!

  • Rav

    I think it is bad idea to split number images. The best idea will be to create one image with all parts. That becouse now images are loaded if they need to appear. If they will be in one image that will be great (load only one on start, without ugly delay).

    • rmaksim
    • http://URL(Optional) name

      i agree..
      then use the css sprites idea to show the number parts.
      all in all, less html requests.

      @Alexandru sleek work, by the way. =)

    • Marcio Toledo

      Exactly, it was the first thing that came to my mind when I saw the demo. Anyway, it’s cool stuff.

  • Luis Craik

    By the way, how can I use it as a countdown? Ideas or sample? Thanks Jeffrey Way & Tuts+

  • Luis Craik

    …and you Alexandru Pitea ;D

  • http://jhaygamba.com JHAY

    This is cool! Thanks

  • http://www.sorinistudor.ro Sorin Istudor

    Proud to be romanian :), thanks for the article.

  • Piero

    Man, you’re good :)

  • ValSalva

    That’s a nice neutral digit font that looks authentic to a 70′s era digital clock. I didn’t see any mention of the font used. Anyone have any idea?

    • http://alexandrupitea.ro Alexandru Pitea
      Author

      Sorry for not mentioning it! It is the all mighty Helvetica..:)

  • http://os.laroouse.com/ esranull

    very nice thanks

  • http://teamtutorials.com TeamTutorials

    Pretty awesome. I’m interested if you think this could be done with css instead of images.

  • http://www.underpk.com underpk

    nice! love the clean design and would be useful for product launch page.

  • http://ramon.com.ua Ramon

    How to make it count backwards, from actual date-time?

  • Rob

    it would be awsome a jquery version of this

  • Padfoot

    Brilliant Tut!

  • http://stuffbuff.com michael

    We are developing something like this for a new auction widget for http://stuffbuff.com (coming soon). This is perfect timing.

    Thanks

  • Dimitree

    Great! Just wondering… can this also be done with JQuery?

  • http://twitter.com/aziz_light Aziz Light

    That is simply awesome! One of the best tutorials I’ve seen on Nettuts since a long time. Thanks a lot!

    Is it possible to reproduce the same thing using jQuery?

    • rmaksim

      Look at the one above – with using jQuery

  • http://www.crearedesign.co.uk Stephen Webb

    The effect this creates is powerful and probably useful in a number of applications, however I can’t help thinking that it involves a lot of programming for something that is relatively simple and I’m sure could be achieved easier in Flash.

    I can see the implementations of the code though, and the concept of using this to count down to things such as product launches could be a nice addition to any website.

    I would be interested to see further examples of applications such as these in the future. Such widgets can help make a site sometimes, and anything that gains visitor interest is a big bonus to any site.

  • bowbow

    really2 cool…

  • http://www.aqibmushtaq.co.uk Aqib Mushtaq

    Only thing I can say is WOW!

  • Nori Silverrage

    Very nice. Just a suggestion though, if you compress the PNGs using PNGauntlet you can save 23KBs of space… :)

    • YourName

      I love PNGauntlet! it gives me loads of my precious space back :)

      • http://ibuildstuff.net Damian Dawber

        How you doing YourName?

  • http://baditaflorin.com Badita Florin

    Really nice, this shows the real aplications for Javascript, not the old-crashing yahoo games. Flash is so over-rated

    Bafta si la cat mai multe proiecte Alexandru Pitea.

    If you drop by in Bucharest, give me a call and will talk 0766.309.001

    • http://alexandrupitea.ro Alexandru Pitea
      Author

      Be sure I will!

      Multumesc!

  • Alex Hobbs

    Very nice, reminds me of Apple’s countup to 1 billion app flip thing :)

  • rmaksim

    some time ago made a similar watch, only on jQuery

    http://iyoremo.com/jquery-sexy-clock/

  • rmaksim

    some time ago made a similar clock, only on jQuery

    http://iyoremo.com/jquery-sexy-clock/

    • Karl Macklin

      Five times you’ve mentioned this stupid link and, here’s a shocker; IT’S NOT WORKING!

      Stop spamming broken links. Even if it was working, you’re still annoyingly spammy.

    • Scott

      Wait…
      Is there a jquery version?

  • Mike Davis

    Not too be too picky but since others are planning on using this….

    The bottom images for the second and minute digits are not lining up to the top half. They look to be a pixel off. It looks like this is from the images.

  • http://ronny-andre.no Ronny

    Nice! There’s only one (little) thing though:

    A normal clock would only update the second’s last digit every second, and the second’s first digit every 10 seconds. The same for hour and minutes.

    Is there an easy fix for this?

    • Tomek

      I was wondering did somebody post thiss little issiue here. Ronny’s damn right, and solving this problem would definitly make the clock more realistic.

      But it’s amazing anyway!

  • schiwe

    mike is correct!
    it is floated one pixel to the right…

  • sandrups

    excelente tutorial, me gusto la creatividad de ustedes muchachos, sale de lo cotidiano de la red.

  • http://www.urbancool.net UrbanCool

    you guys freak me out!!! me & a colleague were just discussing how to do something like this the other day, well… maybe a fortnight ago on a holding page for a website launch…

    FREAKY!

    But this is exactly how we wanted it…. you guys ROCK!!

  • http://edgespan.de Alexander

    its seems that the pixel is from the “ten-minutes”-image after this image the others are 1 px right.

  • keyMaker

    Yep there is a glitch. 1px :/

  • http://hdesignsplus.com/ Hooman

    exactly what most of us needed to know about, thanks envato, you enlighten the world of web design/development.

  • ip

    Where to upload Folder Images ???

  • Maxime

    Can you use this in a design that I will sell?

  • http://www.alexsandro.com.br Alexsandro

    Lovely, but I don’t know a functional how can I use that!

  • http://www.chemamateos.com/dominios/index.html Chema Mateos

    I put an application of this in:

    http://www.chemamateos.com/dominios/index.html

    And reduce the size of images, to make an small clock

  • http://dotseo.org Paw Hellegaard

    Thanks for sharing this, it was just a clock like this i was looking for, and here is the source.. damn thanks!

  • http://www.kokathome.eu/ Jonathan

    A nice application. But not really useful :-)

  • http://www.geniuzdesigns.de g3niuz

    wow…
    great this could be useful ;D