Inspired by Fabrice Weinberg's "CSS Digital Clock", completely reconfigured and converted to binary.
More dependent JS and simplistic CSS.
*Edited to run as an object, much more to customize in the JS
A Pen by HARUN PEHLİVAN on CodePen.
Inspired by Fabrice Weinberg's "CSS Digital Clock", completely reconfigured and converted to binary.
More dependent JS and simplistic CSS.
*Edited to run as an object, much more to customize in the JS
A Pen by HARUN PEHLİVAN on CodePen.
| <div id="bincont"></div> | |
| <div id="digital"></div> | |
| <div id="actual"></div> |
| $(document).ready(function(){ | |
| $.fn.appendGridDiv = function(gridNo){ | |
| this.each(function(){ | |
| $(this).append("<div id='grid"+gridNo+"'></div>"); | |
| }); | |
| }; | |
| $.fn.appendGridSpan = function(gridNo){ | |
| this.each(function(){ | |
| $(this).append("<span id='grid"+gridNo+"'></span>"); | |
| }); | |
| }; | |
| function appendBlank(gridNo){ | |
| $("#grid"+gridNo).append("<div class='blank'></div>"); | |
| } | |
| function appendDot(idNo){ | |
| $("#grid"+idNo.toString().charAt(0)).append("<div id='"+idNo+"' class='dot'></div>"); | |
| } | |
| $.fn.fillDot = function(color){ | |
| this.each(function(){ | |
| $(this).removeClass('dot').addClass('dotfilled').css('background', color); | |
| }); | |
| }; | |
| $.fn.clearDot = function(){ | |
| this.each(function(){ | |
| $(this).removeClass('dotfilled').addClass('dot'); | |
| }); | |
| }; | |
| var BinaryClock = function(oncolor, offcolor){ | |
| var style1 = $('<style>.dotfilled { background-color:'+oncolor+'; }</style>'); | |
| var style2 = $('<style>.dot { background-color:'+offcolor+'; }</style>'); | |
| $('html > head').append(style1); | |
| $('html > head').append(style2); | |
| }; | |
| /************BEGIN DIRECTION PROTOTYPE***********/ | |
| BinaryClock.prototype.direction=function(direction){ | |
| this.direction = direction; | |
| var style; | |
| if(direction=="topBottom"){ | |
| for(i=1;i<9;i*=2){ | |
| $("#bincont").appendGridDiv(i); | |
| } | |
| style=$('<style>.dot, .dotfilled, .blank { display: inline-block; }</style>'); | |
| $('html > head').append(style); | |
| } | |
| if(direction=="bottomTop"){ | |
| for(i=8;i>=1;i-=(i/2)){ | |
| $("#bincont").appendGridDiv(i); | |
| } | |
| style=$('<style>.dot, .dotfilled, .blank { display: inline-block; }</style>'); | |
| $('html > head').append(style); | |
| } | |
| if(direction=="leftRight"){ | |
| for(i=1;i<9;i*=2){ | |
| $("#bincont").appendGridSpan(i); | |
| } | |
| } | |
| if(direction=="rightLeft"){ | |
| for(i=8;i>=1;i-=(i/2)){ | |
| $("#bincont").appendGridSpan(i); | |
| } | |
| } | |
| //Append dots, same for all directions | |
| appendBlank(8); | |
| appendDot(82); | |
| appendBlank(8); | |
| appendDot(84); | |
| appendBlank(8); | |
| appendDot(86); | |
| appendBlank(4); | |
| appendDot(42); | |
| appendDot(43); | |
| appendDot(44); | |
| appendDot(45); | |
| appendDot(46); | |
| appendDot(21); | |
| appendDot(22); | |
| appendDot(23); | |
| appendDot(24); | |
| appendDot(25); | |
| appendDot(26); | |
| appendDot(11); | |
| appendDot(12); | |
| appendDot(13); | |
| appendDot(14); | |
| appendDot(15); | |
| appendDot(16); | |
| }; | |
| /************END DIRECTION PROTOTYPE***********/ | |
| /*************BEGIN TICK PROTOTYPE*************/ | |
| BinaryClock.prototype.tick=function(){ | |
| $('div .dotfilled').clearDot(); | |
| $('span .dotfilled').clearDot(); | |
| var tdate=new Date(); | |
| var h=tdate.getHours().toString(); | |
| var m=tdate.getMinutes().toString(); | |
| var s=tdate.getSeconds().toString(); | |
| $("#digital").html(parseInt(h, 10).toString(2)+":"+parseInt(m, 10).toString(2)+":"+parseInt(s, 10).toString(2)); | |
| if(h.length==1) h="0"+h; | |
| if(m.length==1) m="0"+m; | |
| if(s.length==1) s="0"+s; | |
| $("#actual").html(h+":"+m+":"+s); | |
| /******HOURS******/ | |
| var hh1=h.charAt(0); | |
| var hh2=h.charAt(1); | |
| switch(hh1){ | |
| case "0": | |
| break; | |
| case "1": | |
| $("#11").fillDot(); | |
| break; | |
| case "2": | |
| $("#21").fillDot(); | |
| break; | |
| } | |
| hh2=parseInt(hh2, 10); | |
| if(Math.log(hh2)/Math.log(2) % 1 === 0 || hh1==1){ | |
| $("#"+parseInt(hh2, 10).toString()+2).removeClass('dot').addClass('dotfilled'); | |
| }else if(hh2>8){ | |
| $("#12").fillDot(); | |
| $("#82").fillDot(); | |
| }else if(hh2>4){ | |
| $("#42").fillDot(); | |
| if(hh2==5 || hh2==7) $("#12").fillDot(); | |
| if(hh2>=6) $("#22").fillDot(); | |
| if(hh2==7) $("#42").fillDot(); | |
| }else{ | |
| $("#12").fillDot(); | |
| $("#22").fillDot(); | |
| }//end if | |
| /*****MINUTES******/ | |
| var mm1=m.charAt(0); | |
| var mm2=m.charAt(1); | |
| switch(mm1){ | |
| case "0": | |
| break; | |
| case "1": | |
| $("#13").fillDot(); | |
| break; | |
| case "3": | |
| $("#13").fillDot(); | |
| /* falls through */ | |
| case "2": | |
| $("#23").fillDot(); | |
| break; | |
| case "5": | |
| $("#13").fillDot(); | |
| /* falls through */ | |
| case "4": | |
| $("#43").fillDot(); | |
| break; | |
| } | |
| mm2=parseInt(mm2, 10); | |
| if(Math.log(mm2)/Math.log(2) % 1 === 0 || mm2==1){ | |
| $("#"+mm2.toString()+4).fillDot(); | |
| }else if(mm2>8){ | |
| $("#14").fillDot(); | |
| $("#84").fillDot(); | |
| }else if(mm2>4){ | |
| $("#44").fillDot(); | |
| if(mm2==5 || mm2==7) $("#14").fillDot(); | |
| if(mm2>=6) $("#24").fillDot(); | |
| if(mm2==7) $("#44").fillDot(); | |
| }else if(mm2==3){ | |
| $("#14").fillDot(); | |
| $("#24").fillDot(); | |
| }//end if | |
| /*****SECONDS******/ | |
| var ss1=s.charAt(0); | |
| var ss2=s.charAt(1); | |
| switch(ss1){ | |
| case "0": | |
| break; | |
| case "1": | |
| $("#15").fillDot(); | |
| break; | |
| case "3": | |
| $("#15").fillDot(); | |
| /* falls through */ | |
| case "2": | |
| $("#25").fillDot(); | |
| break; | |
| case "5": | |
| $("#15").fillDot(); | |
| /* falls through */ | |
| case "4": | |
| $("#45").fillDot(); | |
| break; | |
| } | |
| ss2=parseInt(ss2, 10); | |
| if(Math.log(ss2)/Math.log(2) % 1 === 0 || ss2==1){ | |
| $("#"+ss2.toString()+6).fillDot(); | |
| }else if(ss2>8){ | |
| $("#16").fillDot(); | |
| $("#86").fillDot(); | |
| }else if(ss2>4){ | |
| $("#46").fillDot(); | |
| if(ss2==5 || ss2==7) $("#16").fillDot(); | |
| if(ss2>=6) $("#26").fillDot(); | |
| if(ss2==7) $("#46").fillDot(); | |
| }else if(ss2==3){ | |
| $("#16").fillDot(); | |
| $("#26").fillDot(); | |
| }//end if | |
| var a = setInterval(this.tick, 100); | |
| }; | |
| /************END TICK PROTOTYPE************/ | |
| //var clock = new BinaryClock(active dot, inactive dot) | |
| //Directions - topBottom, bottomTop, leftRight, rightLeft | |
| var clock = new BinaryClock("#EA6617", "#777"); | |
| clock.direction("bottomTop"); | |
| clock.tick(); | |
| }); |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> |
| body{ | |
| background-color:#222; | |
| margin:20px auto; | |
| text-align:center; | |
| } | |
| br{ | |
| line-height:0px; | |
| } | |
| .dot, .dotfilled, .blank{ | |
| position:relative; | |
| width:20px; | |
| height:20px; | |
| margin:10px; | |
| background-repeat:no-repeat; | |
| } | |
| span{ | |
| line-height: 50px; | |
| display: inline-block; | |
| vertical-align: middle; | |
| margin:10px; | |
| } | |
| #digital{ | |
| font-family:Courier New,Courier,monospace; | |
| font-size:30px; | |
| font-weight: bold; | |
| color: white; | |
| } | |
| #actual{ | |
| font-family:Courier New,Courier,monospace; | |
| font-size:30px; | |
| font-weight: bold; | |
| color: #82FA58; | |
| } |