Ответ 1
Я возился с этим и вот что я нашел. Используя jQuery UI v1.8rc3, я могу переопределить цвета темы для индикатора выполнения.
Вот как: Когда вы добавляете виджет прогрессбара в div с чем-то вроде:
$("#mydiv").progressbar({value:0});
... индикатор выполнения jQuery UI создает div внутри вашего div; этот внутренний div представляет значение бара. Чтобы установить цвет панели, установите фон дочернего (внутреннего) элемента div.
Вы также можете установить цвет пустого пространства в строке состояния, справа от строки значения. Сделайте это, установив фон внешнего div.
Для любого из них вы можете использовать плоские цвета или изображения. Если вы используете изображения, то обязательно установите repeat-x. Код для этого выглядит следующим образом:
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>
ЯШ:
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' });
}
хорошо, это заботится о настройке цветов. Теперь, если вы хотите динамически установить цвет панели при изменении значения, вы подключаете событие progressbarchange, например так:
$("#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' });
}
});
Рабочая демонстрация: http://jsbin.com/atiwe3/3
Замечания:
Если вы хотите переопределить цвета для всех индикаторов выполнения, используйте классы css: ui-widget-content
, для "фона" или внешнего div, и ui-widget-header
для фактического бара (соответствующего внутреннему div). Как это:
.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%;
}
Если вы удалите префикс .ui-progressbar
, он переопределит цвета всех виджетов пользовательского интерфейса, включая индикаторы выполнения.