Подтвердить что ты не робот

С jQuery, как я могу вычеркнуть и отключить веб-страницу, а затем показать что-то вроде этого?

Я все еще довольно "зеленый", когда дело доходит до разработки веб-приложений и программирования javascript/jQuery, поэтому любая помощь приветствуется. Вот что я хочу сделать.

  • Я хочу сделать то же самое, что и диалоговое окно jQuery UI, где оно помещает полупрозрачное изображение на всю страницу и отключает щелчок любого из элементов управления под ним.

  • Я хочу знать, как я мог бы наложить какой-то верхний оверлей сверху, чтобы показать, что веб-сайт работает в фоновом режиме. Если я могу использовать анимированный GIF файл, это было бы хорошо, но я не совсем уверен в лучшем подходе к этому.

Ниже приведен пример эффекта серого цвета с диалоговым окном: Пример jQuery UI. Я хочу знать, как создать этот эффект без диалогового окна сверху. У меня нет хорошего примера поведения spinner.

Приветствуются все предложения, рефералы и код сайта.

EDIT: Я не имею в виду "элемент управления прядильщиком". Я попытаюсь найти пример того, что я думаю о spinner.

РЕДАКТИРОВАТЬ: Что я имею в виду под "spinner" - это гигабайт загрузки, например, "Indicator Big" gif на этом веб-сайте: http://ajaxload.info/

4b9b3361

Ответ 1

Один из способов сделать это - иметь div, который скрыт по умолчанию и имеет свойства, чтобы установить цвет фона на серый (например, # 666), а его прозрачность равна примерно 0,8.

Если вы хотите отобразить использование jQuery для получения размера окна экрана/браузера, установите размер вашего div и отобразите его с высоким zindex, чтобы он отображался сверху. Вы также можете присвоить этому div свой график spinner gif (без повтора и центрирования).

Код:

#json-overlay {
    background-color: #333;
    opacity: 0.8;
    position: absolute;
    left: 0px;
    top: 0px;
    z-index: 100;
    height: 100%;
    width: 100%;
    overflow: hidden;
    background-image: url('ajax-loader.gif');
    background-position: center;
    background-repeat: no-repeat;
}

Только те элементы, которые нужно учитывать, - это элементы, выбранные в IE6, так как они будут отображаться через div, поэтому вы можете использовать jguery bgframe для решения этого вопроса, или то, что я делал в прошлом, - это просто скрыть элементы выбора при отображении div и показывая их снова, скрывая ваш div

Ответ 2

Мне всегда нравится использовать плагин jQuery BlockUI: http://malsup.com/jquery/block/

Проверьте демоверсии, вы, вероятно, найдете то, что ищете там.

Ответ 3

Почему бы вам просто не использовать "modal: true"?

    $(function () {
        $("#dialog").dialog($.extend({}, dialogOptions, {
            autoOpen: false,
            width: 500,
            modal: true,
            show: {
                effect: "blind",
                duration: 1000
            },
            hide: {
                effect: "fade",
                duration: 1000
            }
        }));

        $("#profile_edit").click(function () {
            $("#dialog").dialog("open");
        });

        $("#save_and_close").click(function () {
            $("#dialog").dialog("close");
        });
    });

Ответ 4

Вы можете использовать что-то вроде этого кода jquery. Передайте идентификатор элемента, который вы хотите оставить на верхней части страницы:

function startModal(id) {
    $("body").prepend("<div id='PopupMask' style='position:fixed;width:100%;height:100%;z-index:10;background-color:gray;'></div>");
    $("#PopupMask").css('opacity', 0.5);  
    $("#"+id).data('saveZindex', $("#"+id).css( "z-index"));
    $("#"+id).data('savePosition', $("#"+id).css( "position"));
    $("#"+id).css( "z-index" , 11 );
    $("#"+id).css( "position" , "fixed" );
}
function stopModal(id) {
    if ($("#PopupMask") == null) return;
    $("#PopupMask").remove();
    $("#"+id).css( "z-index" , $("#"+id).data('saveZindex') );
    $("#"+id).css( "position" , $("#"+id).data('savePosition') );
}

Ответ 5

вы можете использовать простой div, а затем ajaxstart и событие ajaxstop

<div id="cover"></div>

$('#cover')
    .hide()
    .ajaxStart(function () {
        $(this).fadeIn(100);
    })
    .ajaxStop(function () {
        $(this).fadeOut(100);
    });