Как добавить значок счетчика к кнопке, когда он находится в состоянии загрузки?
Twitter кнопки Bootstrap хорошего Loading...
государство доступен.
дело в том, что он просто показывает сообщение типа Loading...
прошел такой:
<button type="button" class="btn btn-primary start" id="btnStartUploads"
data-loading-text="@Localization.Uploading">
<i class="icon-upload icon-large"></i>
<span>@Localization.StartUpload</span>
</button>
глядя на шрифт Awesome, вы видите, что теперь есть анимированный значок спиннера.
Я попытался интегрировать этот значок спиннера при стрельбе Upload
операции такой:
$("#btnStartUploads").button('loading');
$("#btnStartUploads i").removeAttr('class');
$("#btnStartUploads i").addClass('icon-spinner icon-spin icon-large');
но это не имело никакого эффекта на все, то есть я просто вижу Uploading...
текст на кнопке.
можно ли добавить значок, когда кнопка находится в состоянии загрузки? Похоже, как-то Bootstrap просто удаляет значок <i class="icon-upload icon-large"></i>
внутри кнопки в состоянии загрузки.
вот простой демо это показывает поведение, которое я описал выше. Как вы видите, когда он входит в состояние загрузки значок просто исчезает. Он появляется сразу после временного интервала.
5 ответов:
Если вы посмотрите на bootstrap-кнопка.js Источник, вы увидите, что плагин bootstrap заменяет кнопки внутреннего html с тем, что находится в Data-loading-text при вызове
$(myElem).button('loading')
.для вашего случая, я думаю вы должны просто быть в состоянии сделать это:
<button type="button" class="btn btn-primary start" id="btnStartUploads" data-loading-text="<i class='icon-spinner icon-spin icon-large'></i> @Localization.Uploading"> <i class="icon-upload icon-large"></i> <span>@Localization.StartUpload</span> </button>
простое решение Bootstrap 3 использование анимации CSS3.
поместите следующее в свой CSS:
.glyphicon.spinning { animation: spin 1s infinite linear; -webkit-animation: spin2 1s infinite linear; } @keyframes spin { from { transform: scale(1) rotate(0deg); } to { transform: scale(1) rotate(360deg); } } @-webkit-keyframes spin2 { from { -webkit-transform: rotate(0deg); } to { -webkit-transform: rotate(360deg); } }
тогда просто добавьте
spinning
класс В aglyphicon
во время загрузки, чтобы получить свой значок спиннинг:<button class="btn btn-lg btn-warning"> <span class="glyphicon glyphicon-refresh spinning"></span> Loading... </button>
на основе http://www.bootply.com/128062#
- Примечание: IE9 и ниже не поддерживают CSS3 анимации.
чтобы решение от @flion выглядело действительно здорово, вы можете настроить центральную точку для этого значка, чтобы он не колебался вверх и вниз. Это выглядит правильно для меня при небольшом размере шрифта:
.glyphicon-refresh.spinning { transform-origin: 48% 50%; }
вот мое решение для Bootstrap 4:
<button id="search" class="btn btn-primary" data-loading-text="<i class='fa fa-spinner fa-spin fa-fw' aria-hidden='true'></i>Searching"> Search </button> var setLoading = function () { var search = $('#search'); if (!search.data('normal-text')) { search.data('normal-text', search.html()); } search.html(search.data('loading-text')); }; var clearLoading = function () { var search = $('#search'); search.html(search.data('normal-text')); }; setInterval(() => { setLoading(); setTimeout(() => { clearLoading(); }, 1000); }, 2000);
С JSFiddle