Прозрачный оверлей для спиннера Ajax Gravity Forms

Вопрос или проблема

Я использую этот код для центрирования пользовательского ajax индикатора во время отправки форм Gravity.

  1. Индикатор центрируется в зависимости от положения форм Gravity. Я хотел бы, чтобы индикатор всегда был центрирован горизонтально и вертикально, независимо от положения прокрутки пользователя.

  2. Кроме того, полупрозрачная фоновая накладка background-color: rgba(255,255,255,0.5) не работает. Я пробовал различные вариации, но не смог получить полупрозрачную фоновую накладку на всю страницу для индикатора.

     /* Абсолютный центр индикатора */
     .gform_wrapper .gform_ajax_spinner {
       position: fixed;
       z-index: 999;
       overflow: show;
       margin: auto;
       top: 0;
       left: 0;
       bottom: 0;
       right: 0;
       width: 120px;
       height: 120px;
     }
    
     /* Прозрачная накладка */
     .gform_wrapper .gform_ajax_spinner:before {
       content: '';
       display: block;
       position: fixed;
       top: 0;
       left: 0;
       width: 100%;
       height: 100%;
       background-color: rgba(255,255,255,0.5) !important;
     }
    

Я не думаю, что селектор :before может быть накладкой на весь экран, когда родитель установлен на fixed, он будет использовать только высоту/ширину родительского элемента. Это определенно работает (если оставить в стороне скорректированные элементы и css-классы).

<style type="text/css">  
.myspinner {
    position: fixed;
    z-index: 100002;
    background:red;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    transform: -webkit-translate(-50%, -50%);
    transform: -moz-translate(-50%, -50%);
    transform: -ms-translate(-50%, -50%);
    width: 120px;
    height: 120px;
}

#spinner-overlay {
    background-color: rgba(255,255,255,0.8)!important;
    position: fixed;
    height: 100%;
    width: 100%;
    z-index: 100000;
    top: 0;
    left: 0;
}
</style>

<div id="spinner-overlay">
    <div class="myspinner"></div>
</div>

Gravity Forms имеет множество фильтров/действий, я немного посмотрел и не смог найти подходящий (это не значит, что его нет, тяжело сказать, когда код не является открытым для доступа).

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

    (function($) {
        $('.gform_ajax_spinner').wrap('<div id="spinner-overlay"></div>');
    })(jQuery);

Это действительно вопрос, который лучше задать в каналах поддержки GF, и я заметил вашу тему поддержки на их сайте во время поиска, так что надеюсь, они смогут лучше вас проконсультировать по этому вопросу.

Вы можете использовать коды ниже, чтобы получить полный контроль над индикатором

Сначала создайте файл gif 1px X 1px (меньший размер лучше) и назовите его “blank.gif” (вы можете создать его в MS Paint и сделать его прозрачным, используя любой инструмент, или использовать онлайн-инструмент https://www8.lunapic.com/editor/?action=transparent

Во-вторых, создайте пользовательский индикатор для вашей цели и назовите его, например, “preloader.gif”

Вы можете создать его здесь: https://loading.io/spinner/rolling/-bar-circle-curve-round-rotate

Загрузите оба на свой сервер и получите URL для изображения

Далее нам нужно изменить стандартный индикатор на пользовательский. Для этого мы должны изменить существующий индикатор, используя код ниже

//скрыть существующий индикатор – добавьте код ниже в function.php

add_filter("gform_ajax_spinner_url", "spinner_url", 10, 2);
function spinner_url($image_src, $form){
    return "image-source-url/blank.gif";
}

Затем добавьте код ниже в свой пользовательский CSS темы

 /* изменить стиль индикатора */
img.gform_ajax_spinner {
    position: fixed !important;
    z-index: 999999;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    display: block !important;
    overflow: hidden !important;
    width: 100% !important;
    height: 100% !important;
    background-color: white;
    opacity: 0.8; /* настройте прозрачность фона */
    url('image-source-url/preload.gif'); /* запасной GIF индикатор */
    background-image: linear-gradient(transparent,transparent), url('image-source-url/preload.gif'); /* SVG индикатор */
    background-size: 100px 100px; /* установите нужный вам размер индикатора */
    background-position: center center;
    background-repeat: no-repeat !important;
}

Источник кода: https://louisnel.co.za/blog/change-the-spinner-image-show-it-above-a-semi-transparent-layer/

Ответ или решение

Прозрачный наложение для спиннера Ajax в Gravity Forms

Если вы хотите создать центрированный и всегда видимый спиннер Ajax для формы Gravity, а также добавить полупрозрачный фон, вы можете воспользоваться специальными стилями CSS и небольшими изменениями в JavaScript. Мы разберем, как настроить ваш спиннер так, чтобы он был всегда центром внимания пользователя, а полупрозрачный фон создавал эффект наложения.

Шаг 1: Настройка HTML и CSS для спиннера

В первую очередь, вам потребуется основной контейнер с для спиннера и фона. Вот базовая структура:

<div id="spinner-overlay">
    <div class="myspinner"></div>
</div>

А теперь применим соответствующие стили CSS для центрирования спиннера и создания полупрозрачного фона:

/* Центрирование спиннера */
.myspinner {
    position: fixed;
    z-index: 100002;
    background: url('путь_к_вашему_спиннеру.gif') no-repeat center center;
    background-size: 120px 120px; /* При необходимости измените размер спиннера */
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 120px; /* Размер спиннера */
    height: 120px; /* Размер спиннера */
}

/* Прозрачное наложение */
#spinner-overlay {
    background-color: rgba(255, 255, 255, 0.5); /* Цвет фона с прозрачностью */
    position: fixed;
    height: 100%;
    width: 100%;
    z-index: 100000;
    top: 0;
    left: 0;
    display: none; /* Начально скрываем наложение */
}

Шаг 2: Добавление JavaScript для управления спиннером

Для того чтобы спиннер и наложение отображались во время отправки формы, вам нужно добавить следующий JavaScript код:

(function($) {
    $(document).on('gform_post_render', function(event, formId) {
        // Показать спиннер и наложение при отправке формы
        $('#spinner-overlay').show();
    });

    $(document).on('gform_post_render', function(event, formId) {
        // Скрыть спиннер и наложение после завершения действий
        $('#spinner-overlay').hide();
    });
})(jQuery);

Этот код используемый с хуками Gravity Forms позволит вам управлять отображением спиннера и полупрозрачного фона.

Шаг 3: Изменение URL спиннера по умолчанию

Чтобы переопределить стандартный спиннер для формы Gravity, вы можете использовать следующий код в functions.php вашей темы:

add_filter("gform_ajax_spinner_url", "custom_spinner_url", 10, 2);
function custom_spinner_url($image_src, $form) {
    return "путь_к_вашему_пустому_изображению.gif"; // Ссылка на ваше пустое изображение
}

Заключение

Теперь у вас есть полностью функционирующий центрированный спиннер Ajax с полупрозрачным фоном в вашем проекте Gravity Forms. Этот подход не только улучшит пользовательский интерфейс, но и обеспечит лучшее восприятие пользователями процесса загрузки данных. Используя приведенные выше примеры кода и описания, вы сможете легко адаптировать их под свои нужды, улучшая взаимодействие пользователей с вашей формой.

Оцените материал
Добавить комментарий

Капча загружается...