JQuery оверлей загрузки бар div - PullRequest
18 голосов
/ 09 июля 2010

Итак, у меня есть таблица данных, и я получаю данные обратно, используя ajax. Когда данные извлекаются, данные из таблицы исчезают, и появляется маленький маленький кружок загрузки. Я бы предпочел, чтобы данные оставались (я знаю, как это сделать) и чтобы круг загрузки отображался над таблицей в центре (не обязательно вертикально, просто по крайней мере горизонтально), а также слегка прозрачной блокировкой фона немного вид таблицы (не остальная часть веб-страницы). Как сделать так, чтобы над таблицей появился div и сделать это?

Ответы [ 4 ]

72 голосов
/ 09 июля 2010

[ увидеть его в действии ]

HTML

<div id="overlay">
  <img src="http://www.sanbaldo.com/wordpress/wp-content/bigrotation2.gif" 
    id="img-load" />
</div>

CSS

#overlay { 
  display:none; 
  position:absolute; 
  background:#fff; 
}
#img-load { 
  position:absolute; 
}

Javascript

$t = $("#table"); // CHANGE it to the table's id you have

$("#overlay").css({
  opacity : 0.5,
  top     : $t.offset().top,
  width   : $t.outerWidth(),
  height  : $t.outerHeight()
});

$("#img-load").css({
  top  : ($t.height() / 2),
  left : ($t.width() / 2)
});

Тогда, когда вы загружаете вещи, вы просто говорите:

$("#overlay").fadeIn();

И когда вы закончите:

$("#overlay").fadeOut();

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

11 голосов
/ 09 июля 2010

просто используйте метод jQuery .html(), чтобы добавить новый div с кружком загрузки в div, содержащий таблицу.Затем используйте CSS для стилизации.может дать ему фоновое изображение, которое непрозрачно.и относительно или абсолютно расположите круг загрузки.

скажем, что у вас есть:

<div id="table_container>
    <table>
        <tr>
            <td>something</td>
            <td>something</td>
        </tr>
    </table>
</div>

при загрузке новых данных используйте:

$('div#table_container').html('<div id="overlay"><img src="path/to/loading/img.png" class="loading_circle" alt="loading" /></div>');

и стилизуйте его примерно так:

#overlay {
    width: 100%;
    background: url('path/to/opaque/img.png') repeat;
    position: relative;
}

#overlay img.loading_circle {
    position: absolute;
    top: 50%;  // edit these values to give you
    left: 50%; // the positioning you're looking for.
}
1 голос
/ 10 октября 2014

Это сработало для меня, но только одна вещь с оверлеем, так как он был смещен влево.

Я добавил одну строку в javascript , и она отлично работала в Chrome, Firefox и Safari (в Windows).

$("#overlay").css({
  opacity : 0.5,
  top     : $t.offset().top,
  width   : $t.outerWidth(),
  height  : $t.outerHeight(),
  left    : $t.position().left // the fix.
});
0 голосов
/ 09 июля 2010

хорошо, вы можете попробовать использовать css position: absolute для круга загрузки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...