Абонентский бутстринг для загрузки на странице загрузки
У меня есть страница с несколькими бутстрапами. Первоначально установка их значений отлично работает. Хотя я хотел бы, чтобы индикаторы выполнения отображали/переходили к их конкретным состояниям, когда пользователь открывает страницу.
Этот JS отлично работает, когда вы нажимаете на один из столбцов. Мне нужно что-то подобное в событии "onload" в баре. Но событие "onload" недоступно для s
//animate progress bars
$('.progress .bar').on("click", function(event) {
var me = $(this);
perc = me.attr("data-percentage");
me.css('width', perc+'%');
});
Как я могу добиться такого поведения при загрузке страницы для всех индикаторов выполнения на странице?
Ответы
Ответ 1
В то время как ответ Tats_innit имеет приятное прикосновение к нему, мне пришлось сделать это немного по-другому, так как на странице более одного индикатора выполнения.
здесь мое решение:
JSfiddle: http://jsfiddle.net/vacNJ/
HTML (пример):
<div class="progress progress-success">
<div class="bar" style="float: left; width: 0%; " data-percentage="60"></div>
</div>
<div class="progress progress-success">
<div class="bar" style="float: left; width: 0%; " data-percentage="50"></div>
</div>
<div class="progress progress-success">
<div class="bar" style="float: left; width: 0%; " data-percentage="40"></div>
</div>
JavaScript:
setTimeout(function(){
$('.progress .bar').each(function() {
var me = $(this);
var perc = me.attr("data-percentage");
var current_perc = 0;
var progress = setInterval(function() {
if (current_perc>=perc) {
clearInterval(progress);
} else {
current_perc +=1;
me.css('width', (current_perc)+'%');
}
me.text((current_perc)+'%');
}, 50);
});
},300);
@Tats_innit: использование setInterval() для динамического пересчета прогресса - это приятное решение, спасибо mate!;)
EDIT:
Один мой друг написал приятный плагин jquery для пользовательских твитер-бутстрапов.
Вот демо:
http://minddust.github.com/bootstrap-progressbar/
Здесь репозиторий Github:
https://github.com/minddust/bootstrap-progressbar
Ответ 2
ИЗМЕНИТЬ
- Имя класса изменено с
bar
на progress-bar
в версии 3.1.1
HTML
<div class="container">
<div class="progress progress-striped active">
<div class="bar" style="width: 0%;"></div>
</div>
</div>
CSS
@import url('http://twitter.github.com/bootstrap/assets/css/bootstrap.css');
.container {
margin-top: 30px;
width: 400px;
}
jQuery, используемый в скрипте ниже и на document.ready
$(document).ready(function(){
var progress = setInterval(function() {
var $bar = $('.bar');
if ($bar.width()>=400) {
clearInterval(progress);
$('.progress').removeClass('active');
} else {
$bar.width($bar.width()+40);
}
$bar.text($bar.width()/4 + "%");
}, 800);
});
Demo
JSFiddle
Обновлен JSFiddle
Ответ 3
Bootstrap использует переходы CSS3, поэтому индикаторы выполнения автоматически анимируются, когда вы устанавливаете ширину .bar trough javascript/jQuery.
http://jsfiddle.net/3j5Je/..see?
Ответ 4
Вклад в ответ на эллипс. вы также можете использовать это динамическое процентное значение
$('.bar').css('width', function(){ return ($(this).attr('data-percentage')+'%')});
И, возможно, добавьте пользовательское облегчение в ваш css
.bar {
-webkit-transition: width 2.50s ease !important;
-moz-transition: width 2.50s ease !important;
-o-transition: width 2.50s ease !important;
transition: width 2.50s ease !important;
}
Ответ 5
Здесь кросс-браузерное решение только для CSS. Надеюсь, это поможет!
DEMO
.progress .progress-bar {
-moz-animation-name: animateBar;
-moz-animation-iteration-count: 1;
-moz-animation-timing-function: ease-in;
-moz-animation-duration: .4s;
-webkit-animation-name: animateBar;
-webkit-animation-iteration-count: 1;
-webkit-animation-timing-function: ease-in;
-webkit-animation-duration: .4s;
animation-name: animateBar;
animation-iteration-count: 1;
animation-timing-function: ease-in;
animation-duration: .4s;
}
@-moz-keyframes animateBar {
0% {-moz-transform: translateX(-100%);}
100% {-moz-transform: translateX(0);}
}
@-webkit-keyframes animateBar {
0% {-webkit-transform: translateX(-100%);}
100% {-webkit-transform: translateX(0);}
}
@keyframes animateBar {
0% {transform: translateX(-100%);}
100% {transform: translateX(0);}
}
<link href="#" onclick="location.href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css'; return false;" rel="stylesheet"/>
<div class="container">
<h3>Progress bar animation on load</h3>
<div class="progress">
<div class="progress-bar progress-bar-success" style="width: 75%;"></div>
</div>
</div>