basti1012.bplaced.net

Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
    Eine Javascript uhr die als Optik wie eine Digitaluhr aussieht

    Code

                                        
                                     
    <style>
    body {
      margin:0;
      padding:0;
     
    }
    
    canvas {
      background-image: radial-gradient(black, hsl(10,90%,15%));
      margin:0;
    }
    
    
    
    
    
    
    
     
    
    
      html, body {
      margin:0;
      padding:0;
      background:#000;
      width:100%;
      height:100%;
      position:absolute;
      min-width:900px;
    }
    
    .clock {
      height:200px;
      position:absolute;
      top:50%;
      left:50%;
      width:900px;
      margin-left:-450px;
      margin-top:-100px;
      text-align:center;
    }
    
    .digit {
      width:120px;
      height:200px;
      margin:0 5px;
      position:relative;
      display:inline-block;
    }
    
    .digit .segment {
      background:#c00;
      border-radius:5px;
      position:absolute;
      opacity:0.15;
      transition:opacity 0.2s;
      -webkit-transition:opacity 0.2s;
      -ms-transition:opacity 0.2s;
      -moz-transition:opacity 0.2s;
      -o-transition:opacity 0.2s;
    }
    
    .digit .segment.on, .separator {
      opacity:1;
      box-shadow:0 0 50px rgba(255,0,0,0.7);
      transition:opacity 0s;
      -webkit-transition:opacity 0s;
      -ms-transition:opacity 0s;
      -moz-transition:opacity 0s;
      -o-transition:opacity 0s;
    }
    
    .separator {
      width:20px;
      height:20px;
      background:#c00;
      border-radius:50%;
      display:inline-block;
      position:relative;
      top:-90px;
    }
    
    .digit .segment:nth-child(1) {
      top:10px;
      left:20px;
      right:20px;
      height:10px;
    }
    
    .digit .segment:nth-child(2) {
      top:20px;
      right:10px;
      width:10px;
      height:75px;
      height:calc(50% - 25px);
    }
    
    .digit .segment:nth-child(3) {
      bottom:20px;
      right:10px;
      width:10px;
      height:75px;
      height:calc(50% - 25px);
    }
    
    .digit .segment:nth-child(4) {
      bottom:10px;
      right:20px;
      height:10px;
      left:20px;
    }
    
    .digit .segment:nth-child(5) {
      bottom:20px;
      left:10px;
      width:10px;
      height:75px;
      height:calc(50% - 25px);
    }
    
    .digit .segment:nth-child(6) {
      top:20px;
      left:10px;
      width:10px;
      height:75px;
      height:calc(50% - 25px);
    }
    
    .digit .segment:nth-child(7) {
      bottom:95px;
      bottom:calc(50% - 5px);
      right:20px;
      left:20px;
      height:10px;
    }
    </style>
    
    
     
    <div class="clock">
      <div class="digit hours">
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
      </div>
    
      <div class="digit hours">
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
      </div>
    
      <div class="separator"></div>
    
      <div class="digit minutes">
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
      </div>
    
      <div class="digit minutes">
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
      </div>
    
      <div class="separator"></div>
    
      <div class="digit seconds">
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
      </div>
    
      <div class="digit seconds">
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
        <div class="segment"></div>
      </div>
    </div>
     
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    <script>
     var digitSegments = [
        [1,2,3,4,5,6],
        [2,3],
        [1,2,7,5,4],
        [1,2,7,3,4],
        [6,7,2,3],
        [1,6,7,3,4],
        [1,6,5,4,3,7],
        [1,2,3], 
        [1,2,3,4,5,6,7],
        [1,2,7,3,6]
    ]
    
     
      var _hours = document.querySelectorAll('.hours');
      var _minutes = document.querySelectorAll('.minutes');
      var _seconds = document.querySelectorAll('.seconds');
      
      setInterval(function() {
        var date = new Date();
        var hours = date.getHours(), minutes = date.getMinutes(), seconds = date.getSeconds();  
        
        setNumber(_hours[0], Math.floor(hours/10), 1);
        setNumber(_hours[1], hours%10, 1);
    
        setNumber(_minutes[0], Math.floor(minutes/10), 1);
        setNumber(_minutes[1], minutes%10, 1);
    
        setNumber(_seconds[0], Math.floor(seconds/10), 1);
        setNumber(_seconds[1], seconds%10, 1);
      }, 1000);
     
    
    var setNumber = function(digit, number, on) {
      var segments = digit.querySelectorAll('.segment');
      var current = parseInt(digit.getAttribute('data-value'));
    
      // only switch if number has changed or wasn't set
      if (!isNaN(current) && current != number) {
        // unset previous number
        digitSegments[current].forEach(function(digitSegment, index) {
          setTimeout(function() {
            segments[digitSegment-1].classList.remove('on');
          }, index*45)
        });
      }
      
      if (isNaN(current) || current != number) {
        // set new number after
        setTimeout(function() {
          digitSegments[number].forEach(function(digitSegment, index) {
            setTimeout(function() {
              segments[digitSegment-1].classList.add('on');
            }, index*45)
          });
        }, 250);
        digit.setAttribute('data-value', number);
      }
    }
    
     
    </script>