J'ai bricolé avec et voici ce que j'ai trouvé. En utilisant jQuery UI v1.8rc3, je peux remplacer les couleurs du thème pour la barre de progression.
Voici comment : Lorsque vous ajoutez un widget de barre de progression à un div, avec quelque chose comme :
$("#mydiv").progressbar({value:0});
...la barre de progression jQuery UI crée une div à l'intérieur de votre div ; cette div interne représente la barre de valeur. Pour définir la couleur de la barre, définissez l'arrière-plan de la div enfant (interne). la div enfant (intérieure).
Vous pouvez également définir la couleur de l'espace vide de la barre de progression, l'espace situé à droite de la barre de valeur. Pour ce faire, définissez l'arrière-plan de la division externe.
Dans les deux cas, vous pouvez utiliser des couleurs plates ou des images. Si vous utilisez des images, veillez à définir le paramètre repeat-x. Le code pour le faire ressemble à ceci :
html :
<div id='mainObj' class="inputDiv">
<div id='pbar0' style="height: 20px;"></div>
<div id='pbar1' style="height: 20px;"></div>
<div id='pbar2' style="height: 20px;"></div>
<div id='pbar3' style="height: 20px;"></div>
</div>
js :
function init(){
// four progress bars
$("#pbar0").progressbar({ "value": 63 });
$("#pbar1").progressbar({ "value": 47 });
$("#pbar2").progressbar({ "value": 33 });
$("#pbar3").progressbar({ "value": 21 });
// the zero'th progressbar gets the default theme
// set colors for progressbar #1
$("#pbar1").css({ 'background': 'url(images/white-40x100.png) #ffffff repeat-x 50% 50%;' });
$("#pbar1 > div").css({ 'background': 'url(images/lime-1x100.png) #cccccc repeat-x 50% 50%;' });
// set colors for progressbar #2
$("#pbar2").css({ 'background': 'url(images/lt-blue-40x100.png) #ffffff repeat-x 50% 50%' });
$("#pbar2 > div").css({ 'background': 'url(images/dustyblue-1x100.png) #cccccc repeat-x 50% 50%' });
// set colors for progressbar #3
$("#pbar3").css({ 'background': 'LightYellow' });
$("#pbar3 > div").css({ 'background': 'Orange' });
}
ok, cela permet de régler les couleurs. Maintenant, si vous voulez définir dynamiquement la couleur de la barre lorsque la valeur change, vous accrochez l'événement progressbarchange, comme ceci :
$("#pbar0").bind('progressbarchange', function(event, ui) {
var selector = "#" + this.id + " > div";
var value = this.getAttribute( "aria-valuenow" );
if (value < 10){
$(selector).css({ 'background': 'Red' });
} else if (value < 30){
$(selector).css({ 'background': 'Orange' });
} else if (value < 50){
$(selector).css({ 'background': 'Yellow' });
} else{
$(selector).css({ 'background': 'LightGreen' });
}
});
Démonstration de travail : http://jsbin.com/atiwe3/3
Note :
Si vous voulez remplacer les couleurs pour toutes les barres de progression les classes css à utiliser sont ui-widget-content
pour la division "background" ou extérieure, et ui-widget-header
pour la barre actuelle (correspondant au div interne). Comme ceci :
.ui-progressbar.ui-widget-content {
background: url(images/white-40x100.png) #ffffff repeat-x 50% 50%;
}
.ui-progressbar.ui-widget-header {
color: Blue;
background: url(images/lime-1x100.png) #cccccc repeat-x 50% 50%;
}
Si vous éliminez le .ui-progressbar
il remplacera les couleurs de tous les widgets de l'interface utilisateur, y compris les barres de progression.