Заполнение Индикатора выполнения - Реализация jQuery

Я реализую свой собственный Индикатор выполнения с помощью jQuery. Мой вопрос состоит в том, как я могу заполнить (например), только 30% из него с фоном? Каковы мои опции? В основном Индикатор выполнения является простым div со скругленными углами (-moz-border-radius). Я использую Firefox 3.6.3.

[Обновление] я попробовал этот пример. Как вынудить правую сторону области заливки не быть округленной как в третьем примере? Четвертый пример проблематичен хотя... Как Вы решили бы это?

Спасибо!

8
задан Misha Moroshko 21 May 2010 в 14:46
поделиться

7 ответов

Не знаю, что вы используете для анимации индикатора выполнения, но если вы можете изменить радиус по мере приближения к концу, вы можете получить плавный переход.

$('#inner4')
    .css('width',25)
    .css('-moz-border-radius-topright','0')
    .css('-moz-border-radius-bottomright','0')
    .animate(
      {
        width:425
      },
      3000, 'linear',
      function() {
          $('#inner4').animate({
            width:450,
            '-moz-border-radius-bottomright':'+=25',
            '-moz-border-radius-topright':'+=25'
          },
          200,'linear',
          function() {}
        );//end inner animate
      }
    );//end animate

Вот пример

4
ответ дан 5 December 2019 в 10:01
поделиться

Простым вариантом является использование цвета фона, убедитесь, что внешняя ширина контейнера зафиксирована, а затем просто установите для ширины внутреннего блока такое же процентное значение. по мере продвижения.

5
ответ дан 5 December 2019 в 10:01
поделиться

Вы можете использовать один 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'})
}

Edit : Я добавил закругленные углы, и он работает точно так, как вы указали, никаких проблем с закругленные углы.

Edit 2 : ознакомьтесь с версией этого кода JSBin .

Редактировать 3 : Как сказано в OP, им нужно было гибкое изменение размера индикатора выполнения. Эта реализация этого не сделает. Я собираюсь порекомендовать (как и раньше) использовать панель выполнения jQueryUI . Он прост в использовании и довольно легкий.

Редактировать 4 : Я придумал другую реализацию этого, которая требует немного больше Javascript, но вы можете проверить ее здесь: http://jsfiddle.net/ntnz4/7/

4
ответ дан 5 December 2019 в 10:01
поделиться

Вы можете использовать 2 блока, один внутри другой, поместите фон на внутренний и установите его ширину с помощью%, примерно так:

<div style="">
    <div style="background: red; width: 50%">&nbsp;</div>
</div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
3
ответ дан 5 December 2019 в 10:01
поделиться

Я сделал то, что вы делаете для нескольких моих сайтов, вот что я сделал:

Сначала я сделал базовую разметку:

<div id="progressBar">
    <div id="progressBarInner"></div>
</div>

И CSS:

#progressBar {
    width: 200px;
    height: 20px;
}

#progressBarInner {
    background: url('path/to/your/progress/image.jpg');
    width: 100%;
    height: 100%;
}

Когда это будет сделано, установить прогресс действительно очень просто . Какой бы прогресс вы ни хотели отображать на индикаторе выполнения, вы устанавливаете ширину элемента #ProgressBarInner . Например, если вы хотите показать 32%, вы должны установить это:

width: 32%

для progressBarInner div.

Я не знаю, как это сделать с помощью jQuery, но я точно знаю, что с его помощью можно установить свойства CSS, так что это вполне возможно.

1
ответ дан 5 December 2019 в 10:01
поделиться

HTML:

<div class="progress"><div style="width:30%"></div></div>

CSS:

    .progress {
    width: 300px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
}

.progress div {
    background: url(background.png);
    height: 10px;
    -moz-border-radius-topright: 5px; -moz-border-radius-bottomright: 5px;
    -webkit-border-top-right-radius: 5px; -webkit-border-top-right-radius: 5px;
}
1
ответ дан 5 December 2019 в 10:01
поделиться

Я немного не понимаю, что вы хотите сделать в отношении закругленных углов на залитом цвете! Но если предполагается, что он будет продвигаться прямо, а не закругляться, просто установите обертку div с css overflow:hidden;

При этом внутренний div будет продвигаться до 100% и при прохождении закругленной области создаст классный эффект!

-1
ответ дан 5 December 2019 в 10:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: