• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

HTML5 Canvas Progressbar

unique24

New member
Hallo!

Ich starte gerade mit HTML5 und canvas.
Ich möchte einen Bereich, der 150px hoch ist und so breit wie der Browser.
In diesem Bereich möchte ich Unterbereiche machen, die eine oder mehrere Grafik beinhalten und rechts oben in der Grafik eine Circle Progressbar anzeigt.

Es wäre sehr nett wenn mir jemand ein Grundgerüst zeigen kann.
CSS:
HTML:
div {
    position:relative;
    margin:0px;
    width:110px; height:110px;
}
canvas {
    display: block;
    position:absolute;
    top:0;
    left:0;
}
span {
    color:#555;
    display:block;
    line-height:110px;
    text-align:center;
    width:110px;
    font-family:sans-serif;
    font-size:20px;
    font-weight:100;
    margin-left:5px;
}

input {
    width: 100px;
}

span {
  
}

Javascript:
Code:
var el = document.getElementById('graph'); // get canvas

var options = {
    percent:  el.getAttribute('data-percent') || 25,
    size: el.getAttribute('data-size') || 110,
    lineWidth: el.getAttribute('data-line') || 5,
    rotate: el.getAttribute('data-rotate') || 0
}

var canvas = document.createElement('canvas');
var span = document.createElement('span');
span.textContent = options.percent + '%';
    
if (typeof(G_vmlCanvasManager) !== 'undefined') {
    G_vmlCanvasManager.initElement(canvas);
}

var ctx = canvas.getContext('2d');
canvas.width = canvas.height = options.size;

el.appendChild(span);
el.appendChild(canvas);

ctx.translate(options.size / 2, options.size / 2); // change center
ctx.rotate((-1 / 2 + options.rotate / 180) * Math.PI); // rotate -90 deg

//imd = ctx.getImageData(0, 0, 240, 240);
var radius = (options.size - options.lineWidth) / 2;

var drawCircle = function(color, lineWidth, percent) {
		percent = Math.min(Math.max(0, percent || 1), 1);
		ctx.beginPath();
		ctx.arc(0, 0, radius, 0, Math.PI * 2 * percent, false);
		ctx.strokeStyle = color;
        ctx.lineCap = 'round'; // butt, round or square
		ctx.lineWidth = lineWidth
		ctx.stroke();
};

drawCircle('#efefef', options.lineWidth, 100 / 100);
drawCircle('#555555', options.lineWidth, options.percent / 100);

HTML:
HTML:
<!DOCTYPE HTML>
<html>
  <head>
    <style>

    </style>
  </head>
  <body>
    <canvas id="objectGroup" width="100%" height="150" data-percent="88"></canvas>

    <script>

    </script>
  </body>
</html>

Die progressbar habe ich von hier:
Circular progress bar (canvas) - JSFiddle

Ich kann zwar ein Bild einfügen, jedoch passend zum Bild soll am rechten oberen Rand die Progressbar erscheinen.
Später soll innerhalb der Progressbar noch ein Bild eingefügt werden.

Wie kann ich also die Progressbar an der richtigen Stelle über der rechten oberen Ecke der Bilder plazieren?

Vielen Dank an alle!
 
Hmm, ich glaub hier wäre eine Testseite oder ein Fiddle sehr hilfreich. Positionieren kannst du Elemente mit position, aber damit musst du auch aufpassen. Wenn man es falsch einsetzt, kann es ganz schnell zu unschönen Nebeneffekten kommen.
 
Zuletzt bearbeitet:
Zurück
Oben