Countdown ausrichten

Thema wurde von roberto_iannone, 10. August 2019 erstellt.

  1. roberto_iannone
    roberto_iannone Erfahrener Benutzer
    Registriert seit:
    30. Juni 2019
    Beiträge:
    107
    Danke erhalten:
    1
    Danke vergeben:
    37
    Hallo Leute ich habe jetzt ein code für einen countdown aber würde den gerne noch ausrichten weis aber nicht wie. Noch dazu würde ich gerne die texte und button drinnen haben wie auf Bild 2 so schaut es aktuell bei mir aus wie auf Bild 1


    HTML:
    <div data-date="2019-08-11" data-time="12:00:00" id="countdown">
        <p>
            <span style="color:#FF0000;"><span style="font-size:72px;"><span style="font-family:georgia,serif;"><strong>DEAL DER WOCHE<br />
            <img alt="" src="images/pump-dat-biatch-bam.jpg-2.png" style="width: 200px; height: 200px; float: left;" /></strong></span></span></span><br />
            &nbsp;
        </p>
    
        <div class="canvas-container">
            <br />
            <br />
            <br />
            <br />
            <br />
            <canvas id="tage"></canvas> <canvas id="stunden"></canvas><br />
            <br />
            <br />
            <canvas id="minuten"></canvas> <canvas id="sekunden"></canvas>
        </div>
    </div>
    <br />
    <br />
    <br />
    <script>
    <!--
    // variables
    var countdown = document.getElementById('countdown');
    var endDate = countdown.dataset.date || '2019-08-11';
    var endTime = countdown.dataset.time || '00:00:00';
    var endCountdown = new Date(endDate + 'T' + endTime);
    var timer;
    var specs = {
      'radius': 50,
      'centerX': 50,
      'centerY': 50,
      'thickness': 10,
      'offset': -Math.PI/2,
      'color': '#337ab7',
      'bgColor': '#ccc',
      'idFont': 'small-caps 400 10px Verdana',
      'valueFont': 'bold 30px Verdana',
      'fontColor': '#000'
    };
    var time = {
      'millisecond': 1000,
      'sekunde': 60,
      'minute': 60,
      'stunde': 24,
      'tag': 7
    }
    var info = {};
    
    
    // canvas init
    var canvasElements = Array.prototype.slice.call(document.querySelectorAll('canvas'));
    var canvasCtx = [];
    canvasElements.forEach( function(canvas, index) {
      canvas.width = specs.centerX * 2;
      canvas.height = specs.centerY * 2;
      canvasCtx[index] = canvas.getContext('2d');
      var name = canvas.id;
      info[name] = {'ctx': index, 'value': 0, 'prevValue': -1};
    });
    var canvasKeys = Object.keys(info);
    info.tage.denominator = time.tag;
    info.stunden.denominator = time.stunde;
    info.minuten.denominator = time.minute;
    info.sekunden.denominator = time.sekunde;
    
    // show remaining time
    function showRemainingTime() {
      var now = new Date();
     
      // calculate new values
      var sekundenLeft = Math.max(0, Math.floor((endCountdown - now)/1000));
      info.tage.value = Math.floor(sekundenLeft / (time.sekunde*time.minute*time.stunde));
      info.stunden.value = Math.floor((sekundenLeft % (time.sekunde*time.minute*time.stunde)) / (time.sekunde*time.minute));
      info.minuten.value = Math.floor((sekundenLeft % (time.sekunde*time.minute)) / time.sekunde);
      info.sekunden.value = Math.floor(sekundenLeft % time.sekunde);
     
      // update changed values only
      canvasKeys.forEach( function(key) {
        if(info[key].value !== info[key].prevValue){
          if(key === 'tage' && info[key].value > 365) {
            // exception if days is more than 1 year
            draw(canvasCtx[info[key].ctx], 1, key, info[key].value);
          } else {
            draw(canvasCtx[info[key].ctx], info[key].value/info[key].denominator, key, info[key].value);
          }
          info[key].prevValue = info[key].value;
        }
      });
    }
    
    // draw function
    function draw(ctx, part, id, value) {
      // calculate angles
      var start = specs.offset;
      var between = 2 * Math.PI * part + specs.offset;
      var end = 2 * Math.PI + specs.offset;
     
      // clear canvas
      ctx.clearRect(0, 0, specs.centerX * 2, specs.centerY * 2);
     
      // draw remaining %
      ctx.fillStyle = specs.color;
      ctx.beginPath();
      ctx.arc(specs.centerX, specs.centerY, specs.radius, start, between);
      ctx.arc(specs.centerX, specs.centerY, specs.radius - specs.thickness, between, start, true);
      ctx.closePath();
      ctx.fill();
    
      // draw bg
      ctx.fillStyle = specs.bgColor;
      ctx.beginPath();
      ctx.arc(specs.centerX, specs.centerY, specs.radius, between, end);
      ctx.arc(specs.centerX, specs.centerY, specs.radius - specs.thickness, end, between, true);
      ctx.closePath();
      ctx.fill();
     
      // draw text
      ctx.fillStyle = specs.fontColor;
      ctx.font = specs.idFont;
      ctx.fillText(id, specs.radius - ctx.measureText(id).width/2, specs.thickness*3);
      ctx.font = specs.valueFont;
      ctx.fillText(value, specs.radius - ctx.measureText(value).width/2, specs.radius*2 - specs.thickness*3);
    }
    
    // change countdown every second
    timer = setInterval(showRemainingTime, 1000);
    -->
    </script>
    Und hier der CSS code:

    Code:
    #countdown p {
      text-align: center;
      margin-bottom: 30px;
      font-size: 2rem;
    }
    #countdown .canvas-container {
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
      align-items: flex-start;
      max-width: 440px;
      margin: 0 auto;
    }
    
    @media (max-width:500px){
      #countdown .canvas-container { max-width: 220px; }
      #countdown canvas:nth-child(-n+2) { margin-bottom: 10px; }
    }
     

    Anhänge:

  2. Dennis (MotivMonster.de)
    Dennis (MotivMonster.de) G-WARD 2013/14/15/16
    Registriert seit:
    22. September 2011
    Beiträge:
    31.303
    Danke erhalten:
    6.268
    Danke vergeben:
    1.118
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    {
    margin-left: auto;
    margin-right: auto;
    }

    mit link zur Seite is es einfacher
     
  3. roberto_iannone
    roberto_iannone Erfahrener Benutzer
    Registriert seit:
    30. Juni 2019
    Beiträge:
    107
    Danke erhalten:
    1
    Danke vergeben:
    37
  4. roberto_iannone
    roberto_iannone Erfahrener Benutzer
    Registriert seit:
    30. Juni 2019
    Beiträge:
    107
    Danke erhalten:
    1
    Danke vergeben:
    37
    wenn ich das einsetzte im eigenen css das zerschiesst er mir alles
     
  5. barbara
    barbara G-WARD 2014-2020
    Registriert seit:
    14. August 2011
    Beiträge:
    35.657
    Danke erhalten:
    11.371
    Danke vergeben:
    1.616
    Da fehlt die Überschrift (der Bereich für den das gelten soll) :)
     
  6. roberto_iannone
    roberto_iannone Erfahrener Benutzer
    Registriert seit:
    30. Juni 2019
    Beiträge:
    107
    Danke erhalten:
    1
    Danke vergeben:
    37
    und wie sollte das ausschauen? haha

    und wie kann ich sowas erstellen wie im Bild 2? mit 20% und Artikel button :)
     
  7. barbara
    barbara G-WARD 2014-2020
    Registriert seit:
    14. August 2011
    Beiträge:
    35.657
    Danke erhalten:
    11.371
    Danke vergeben:
    1.616
    Du hast ein Bild auf die Startseite gesetzt, daneben den Countdown.
    Wenn Du die Optik so haben möchtest, wie unter den Sonderangeboten, kannst Du z.B. ein Bild von der Kachel machen und das oben einfügen - mit einem Link zur Seite.

    Wenn alle Angebote immer die selbe dauer haben, könntest Du den Countdown auch über den Sonderangeboten einfügen.
    dafür gibt es eine Content-Seite (Elemente -> Startseite -> Freier Inhalt) ich weiß nur nicht welcher da passt.
     
  8. roberto_iannone
    roberto_iannone Erfahrener Benutzer
    Registriert seit:
    30. Juni 2019
    Beiträge:
    107
    Danke erhalten:
    1
    Danke vergeben:
    37
    #8 roberto_iannone, 10. August 2019
    Zuletzt bearbeitet: 10. August 2019
    Wie kriege ich den Button nach oben und nach links genau so wie die preise?
    Und ich würde gern den button auch verlinken
     

    Anhänge:

  9. roberto_iannone
    roberto_iannone Erfahrener Benutzer
    Registriert seit:
    30. Juni 2019
    Beiträge:
    107
    Danke erhalten:
    1
    Danke vergeben:
    37
    hat hier sonst keiner einen tipp :)
     
  10. Dennis (MotivMonster.de)
    Dennis (MotivMonster.de) G-WARD 2013/14/15/16
    Registriert seit:
    22. September 2011
    Beiträge:
    31.303
    Danke erhalten:
    6.268
    Danke vergeben:
    1.118
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    Das ja auch nur das was du für den DIV Container brauchst der um deinen Countdown ist um es zu zentrieren.
    Wusste ja nicht das du null Ahnung hast wie es geht. sorry.
    Du hast doch oben CSS gepostet. und den html code.
    das css sagt dem html wie es aussehen soll. Mit den 2 werten von mir sagst du ihm er soll links und rechts autom. abstand halten. Browser nehmen dann immer die Mitte. also zentriert innerhalb des html blocks meist DIV Container.
     
  11. roberto_iannone
    roberto_iannone Erfahrener Benutzer
    Registriert seit:
    30. Juni 2019
    Beiträge:
    107
    Danke erhalten:
    1
    Danke vergeben:
    37
    Okay habe jetzt alles eingefügt nur die Positionierung gefällt mir nicht mit den Preisen und Button und wenn ich auf mobil geh schaut es dann auch komplett anders aus bin am verzweifeln
     
  12. Dennis (MotivMonster.de)
    Dennis (MotivMonster.de) G-WARD 2013/14/15/16
    Registriert seit:
    22. September 2011
    Beiträge:
    31.303
    Danke erhalten:
    6.268
    Danke vergeben:
    1.118
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    3 Optionen:
    1. Hoffen das sich im Forum jemand dem annimmt und dir hilft
    2. Lernen wie das mit dem CSS und html responsive funktioniert
    3. Wende dich an z.B. Nettdex, die machen das für kleines Geld.
     
  13. roberto_iannone
    roberto_iannone Erfahrener Benutzer
    Registriert seit:
    30. Juni 2019
    Beiträge:
    107
    Danke erhalten:
    1
    Danke vergeben:
    37
    Okay danke dir dann weis ich zumindest schon mal Bescheid