Ich habe einen Countdown-Timer mit canvas
erstellt. Es funktioniert gut, aber es gibt einige Probleme:Countdown-Timer mit Bogen Leinwand
Ich brauche relative Kreis Sekunden mit Kreis Minuten und Stunden und Tage wie this demo.
Bitte führen Sie das Code-Snippet auf einer ganzen Seite aus.
Bitte schlagen Sie nicht vor, Plugins zu verwenden, weil ich gerne Kurzcode schreiben würde und auch mehr und mehr über jQuery & JavaScript wissen möchte.
(function ($) {
jQuery.fn.countdown = function (options, callback) {
var settings = {
'date': null
};
if (options) {
$.extend(settings, options);
}
this_sel = $(this);
/*Canvas Variables*/
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var centerX = canvas.width/2;
var centerY = canvas.height/2;
var radius = 70;
var kk = 0;
/*End Canvas Variables*/
function count_exec() {
eventDate = Date.parse(settings['date'])/1000;
currentDate = Math.floor($.now()/1000);
if (eventDate <= currentDate) {
callback.call(this);
clearInterval(interval);
}
seconds = eventDate - currentDate;
days = Math.floor(seconds/(60 * 60 * 24));
seconds -= days * 60 * 60 * 24;
hours = Math.floor(seconds/(60 * 60));
seconds -= hours * 60 * 60;
minutes = Math.floor(seconds/60);
seconds -= minutes * 60;
context.clearRect(50, 50, canvas.width, canvas.height);
kk = ((60 - seconds) * parseFloat(0.10471));
context.beginPath();
context.arc(centerX, centerY, radius, 1.5 * Math.PI, 1.5 * Math.PI + kk, false);
context.lineWidth = 8;
context.strokeStyle = '#14E170';
context.stroke();
// Add 0 value to left of value
if (!isNaN(eventDate)) {
this_sel.find('.days').text(days);
this_sel.find('.hours').text(hours);
this_sel.find('.mins').text(minutes);
this_sel.find('.secs').text(seconds);
}
}
// #region Execute Interval
count_exec();
interval = setInterval(count_exec, 1000);
// #endregion
};
})(jQuery);
$(document).ready(function() {
$("#countdown").countdown({
date: "6 january 2017 7:15:00"
},
function() {
$("#countdown").text("merry christmas");
}
);
})
#countdown .countdown-container{
width:25%;
position:relative;
float:left;
border:1px solid #0fd562;
}
#countdown .countdown-container >div{
position:absolute;
top:100px;
left:95px;
text-align:center;
}
.secs, span{
font-size:16px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="countdown">
<div class="countdown-container">
<div class="contents">
<div class="secs">
00
</div>
<span>Seconds</span>
</div>
<canvas id="myCanvas" width="250" height="250"></canvas>
</div>
<div class="countdown-container">
<div class="contents">
<div class="mins">
00
</div>
<span>Minutes</span>
</div>
<canvas id="myCanvas2" width="250" height="250"></canvas>
</div>
<div class="countdown-container">
<div class="contents">
<div class="hours">
00
</div>
<span>Hours</span>
</div>
<canvas id="myCanvas" width="250" height="250"></canvas>
</div>
<div class="countdown-container">
<div class="contents">
<div class="days">
00
</div>
<span>Days</span>
</div>
<canvas id="myCanvas" width="250" height="250"></canvas>
</div>
</div>