Вы можете использовать один div и изображение, как я упоминал ранее в комментарии. Вот способ, которым вы могли бы сделать это. (Проверено не полностью, поэтому может сломаться.)
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'})
}
Редактировать : я добавил закругленные углы, и все работает точно так, как вы указали, с закругленными углами проблем нет.
Редактировать 2 : ознакомьтесь с JSBin версией этого кода.
Редактировать 3 : Как сказал ОП, им нужно, чтобы индикатор выполнения был гибко изменен. Эта реализация не сделает этого. Я собираюсь порекомендовать (как и раньше) использование jQueryUI Progress Bar . Это простой в использовании и довольно легкий.
Редактировать 4 : я придумал другую реализацию этого, которая требует немного больше Javascript, но вы можете проверить это здесь: http://jsfiddle.net/ntnz4/7/