Sie ein div und ein Bild verwenden könnten, wie ich zuvor in einem Kommentar erwähnt habe. Hier ist ein Weg, wie Sie es tun können. (Nicht vollständig getestet, so kann es brechen.)
HTML:
<div id="progressBar"></div>
CSS:
#progressBar {
width: 200px;
height: 20px;
background: url('http://o.imm.io/x9E.jpg') no-repeat;
background-position: -200px 0px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
}
JS:
function setProgress(target,value) {
var oldPosition = $(target).css("backgroundPosition");
// Log the old position
console.log("Old position: " + oldPosition);
var newPosition = parseInt(oldPosition) + parseInt(value);
// Log the new position
console.log("New position: " + newPosition);
$(target).animate({backgroundPosition: newPosition + 'px 0px'})
}
bearbeiten: Ich habe die gerundete Ecken und es funktioniert genau wie Sie angegeben haben, keine Probleme mit den abgerundeten Ecken.
Bearbeiten 2: Überprüfen Sie die JSBin Version dieses Codes.
Edit 3: Wie der OP sagte, brauchten sie die Fortschrittsleiste flexibel zu bemessen. Diese Implementierung wird das nicht tun. Ich werde (wie ich früher) die Verwendung der empfehlen. Es ist einfach zu bedienen und ziemlich leicht.
bearbeiten 4: Ich habe mit einer anderen Implementierung dieses kommen, die ein bisschen mehr benötigt Javascript, aber Sie können es hier testen: http://jsfiddle.net/ntnz4/7/
Fragen Sie, wie man den Fortschrittsbalken oder nur den Hintergrund davon füllt – Starx
Der Hintergrund, dessen Breite proportional zum Fortschrittsbalkenwert ist. –
Um das vierte Beispiel zu beheben, legen Sie einfach die rote Füllfarbe * hinter den Container und machen den Hintergrund des Containers weiß in den Ecken und transparent in der Mitte. – mpen