Уникальный эффект наведения для повторителей Oxygen Builder

Опубликовано: 2022-04-10

В этом уроке мы собираемся создать уникальный эффект наведения для контента, отображаемого в повторителях Oxygen Builder. Этот эффект, смоделированный на основе «Эффекта искажения при наведении» Codrops и использующий исходный код из этого ресурса, создаст искаженное затухание до определяемого пользователем изображения, когда посетитель наводит курсор на ячейку ретранслятора.

Этот учебник будет включать в себя некоторые интересные концепции Oxygen Builder:

  • Усовершенствованные методы репитера
  • Группы полей ACF и ручная интеграция с Oxygen Builder
  • Базовая сетка CSS
  • Динамические атрибуты
  • Использование блока кода и промежуточный JS

Сделав еще один шаг вперед, мы собираемся сделать эту функцию на 100% динамической, а это означает, что ее можно установить и забыть. Не нужно инициализировать определенный эффект для каждой ячейки!

Следуйте вместе (исходная загрузка):

Примечание. Это проверка концепции и, вероятно, требуется оптимизация для использования на рабочих сайтах.

Две другие вещи:

  • Мы запускаем курс Oxygen Builder. Вы можете узнать больше здесь и присоединиться к списку ожидания.
  • Это руководство было запрошено в нашей замечательной группе на Facebook . Мы будем рады, если вы присоединитесь!

Демонстрация эффекта:

demo_iso_effect_oxygen_builder

Шаг 1: Поля ACF

Мы будем использовать ACF, чтобы сделать это на 100% динамичным и удобным для редактирования конечным пользователем. Создайте группу полей и добавьте изображение при наведении и изображение смещения. Начальное изображение будет избранным изображением поста. Изображение при наведении — это то, к чему исчезнет эффект, когда посетитель наведет курсор на повторяющийся пост.

Изображение смещения — это то, что будет использоваться для создания уникальной анимации morph/fade между двумя изображениями. В этом примере мы используем следующие изображения для смещения:

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

изотропный-2022-04-07-в-12-11-43
Создайте группу полей и назначьте ее типу записи.
изотропный-2022-04-07-в-12-11-24
Каждый формат возврата изображения должен быть URL-адресом изображения.

Вот как выглядит группа полей и связанные с ней изображения при добавлении нового поста:

изотропный-2022-04-07-в-12-53-46
Любое из трех изображений легко заменить.

Шаг 2: Создайте структуру для эффекта

По своей сути мы копируем исходный код из примера Codrops с небольшими изменениями.

<div class="grid"> <!-- это повторитель --> <div class="grid__item grid__item--bg"> <!-- это div в повторителе --> <div class=" grid__item-img" data-displacement="img/displacement/8.jpg" data-intensity="-0.65" data-speedIn="1.2" data-speedOut="1.2"> <!-- это "оболочка изображения div" --> <img src="img/Img22.jpg" alt="Image"/> <img src="img/Img21.jpg" alt="Image"/> </div> <div class=" grid__item-content"> <!-- это "div-оболочка содержимого"> --> <span class="grid__item-meta">Калифорния</span> <h2 class="grid__item-title">Прыжки вокруг</h2 > <h3 class="grid__item-subtitle"> <span>Последние пустые места для прыжков в Калифорнии</span> <a class="grid__item-link" href="#">Подробнее</a> </h3> </ див> </див> </див>
изотропный-2022-04-07-в-13-12-26

Мы просто дублируем HTML-структуру выше с элементами Oxygen Builder. Не забудьте добавить классы из приведенного выше примера HTML, так как мы собираемся добавить немного CSS, а JS использует их для идентификации определенных элементов. Если вы измените эти классы, вам потребуется соответствующим образом обновить CSS и JS.

Наш повторитель использует сетку CSS для равномерного распределения всех ячеек без особых усилий:

изотропный-2022-04-07-в-13-25-06

Шаг 3: Сделайте динамичным

Есть несколько вещей, которые нужно настроить, чтобы они были динамическими. Во-первых, сделайте так, чтобы повторитель запрашивал тип записи WordPress.

Затем установите дату и заголовок публикации, чтобы они были динамическими.

изотропный-2022-04-07-в-13-17-17

Теперь мы настроим три изображения. Здесь все может стать сложным. Установите URL-адрес изображения 1 в качестве URL-адреса рекомендуемого изображения.

изотропный-2022-04-07-в-13-20-11

Установите URL-адрес изображения 2 в качестве изображения при наведении, установленного в ACF. В этом руководстве поля ACF не отображались во всплывающем окне «вставить динамические данные» (вероятно, из-за ошибки Oxygen Builder 4.0 Beta 2). Есть простой обходной путь, если вы когда-либо сталкивались с этим:

1 - Вставьте динамические данные

2 - Выберите возвращаемое значение функции PHP

изотропный-2022-04-07-в-13-20-47

3 - вручную вставить содержимое поля ACF с помощью get_field('fieldname')

изотропный-2022-04-07-в-13-21-30

Наконец, нам нужно установить изображение искажения, которое эффект будет использовать для выполнения перехода морфинга. Это вставляется в HTML как атрибут данных, который JS считывает и включает в эффект. Из приведенного выше HTML-кода видно, что есть несколько атрибутов, которые можно редактировать для изменения эффекта.

<div class="grid__item-img" data-displacement="img/displacement/8.jpg" data-intensity="-0.65" data-speedIn="1.2" data-speedOut="1.2"> <!-- это это "div-обертка изображения" --> ... </div>

Главное, что нам нужно сделать динамическим — это data-displacement, у которого будет URL изображения, заданный в посте с помощью ACF. Мы жестко закодировали остальные три атрибута, но вы можете использовать тот же метод, описанный ниже, чтобы сделать их доступными для редактирования пользователем.

Перейдите к элементу оболочки изображения (div вокруг двух динамических изображений). Нажмите «Дополнительно» -> «Атрибуты» и добавьте следующее.

изотропный-2022-04-07-в-13-28-05

Для data-displacement мы сделаем это динамическим, нажав кнопку data+ в содержимом и вставив соответствующее поле ACF.

Внешний HTML-код будет выглядеть следующим образом, и JS будет использовать все эти данные (которые являются динамическими и редактируемыми пользователем через ACF) для создания классного эффекта наведения смещения в WordPress:

изотропный-2022-04-07-в-13-46-39

Шаг 4: Добавьте CSS, библиотеки и JS

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

.grid__item { переполнение: скрыто; должность: родственница; } .grid__item-content { z-index:5; } .grid__item-img { display: block; высота: 100%; ширина: 100%; } .grid__item-img canvas { высота: 100%; положение: абсолютное; верх:0; z-индекс: 1; } .grid__item-img img { высота: 100%; дисплей: блок; } /* Это запасной вариант, если JS не работает */ .grid__item-img img:nth-child(2) { position: absolute; сверху: 0; слева: 0; непрозрачность: 0; переход: непрозрачность 0,3 с; } .grid__item:hover .grid__item-img img:nth-child(2) { непрозрачность: 1; } .js .grid__item-img img { display: none; }

Наконец, мы загрузим необходимые JS-библиотеки и код (мы сделали это с помощью блока кода):

<script src="https://cdn.statically.io/gh/robin-dela/hover-effect/15fc09f0/example/js/imagesloaded.pkgd.min.js"></script> <script src="https ://cdnjs.cloudflare.com/ajax/libs/three.js/r83/three.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/latest /TweenMax.min.js"></script> <script src="https://cdn.statically.io/gh/robin-dela/hover-effect/15fc09f0/dist/hover-effect.umd.js"> </script> <script> imagesLoaded(document.querySelectorAll('img'), () => { document.body.classList.remove('loading'); }); Array.from(document.querySelectorAll('.grid__item-img')).forEach((el) => { const imgs = Array.from(el.querySelectorAll('img')); new hoverEffect({ parent: el, интенсивность: el.dataset.intensity || не определено, speedIn: el.dataset.speedin || не определено, speedOut: el.dataset.speedout || не определено, смягчение: el.dataset.easing || не определено, наведение: el.dataset. hover || undefined, image1: imgs[0].getAttribute('src'), image2: imgs[1].getAttribute('src'), offsetImage: el.dataset.displacement }); }); </скрипт>

В нашем примере мы используем Staticly (подтягивая библиотеки ImagesLoaded и Hover Effect из GitHub), но в идеале вы должны разместить это на своем сайте, используя такой инструмент, как Scripts Organizer или Advanced Scripts.

Мы также загружаем Three.JS и TweenMax.JS, которые являются двумя базовыми библиотеками, которые работают для создания эффекта смещения.

Наконец, JS делает следующее: он определяет, когда загружаются изображения, и применяет эффект наведения к любому элементу, имеющему .grid__item-img , извлекая связанные изображения и изображения смещения из каждого сообщения. Полностью динамический и будет работать независимо от количества сообщений, возвращенных ретранслятором Oxygen Builder.

После добавления всего этого ваш эффект должен работать!

Об этом попросил член нашей группы Isotropic в Facebook. Мы приглашаем вас присоединиться сюда.

Подпишитесь и поделитесь
Если вам понравился этот контент, подпишитесь на нашу ежемесячную сводку новостей WordPress, вдохновения для веб-сайтов, эксклюзивных предложений и интересных статей.
Отписаться в любое время. Мы не рассылаем спам и никогда не будем продавать или делиться вашей электронной почтой.