Effet de survol unique pour les répéteurs Oxygen Builder

Publié: 2022-04-10

Dans ce didacticiel, nous allons créer un effet de survol unique pour le contenu affiché dans Oxygen Builder Repeaters. Modélisé à partir de "l'effet de survol de distorsion" de Codrops et utilisant le code source de cette ressource, cet effet créera un fondu déformé sur une image définie par l'utilisateur lorsqu'un visiteur survole une cellule de répétition.

Ce didacticiel incorporera quelques concepts intéressants d'Oxygen Builder :

  • Techniques de répétition avancées
  • Groupes de champs ACF et intégration manuelle avec Oxygen Builder
  • Grille CSS de base
  • Attributs dynamiques
  • Utilisation du bloc de code et JS intermédiaire

En allant un peu plus loin, nous allons en faire une fonctionnalité 100% dynamique, ce qui signifie qu'elle sera définie et oubliée. Pas besoin d'initialiser un effet spécifique pour chaque cellule !

Suivez le long (téléchargement source):

Remarque : il s'agit d'une preuve de concept et nécessite probablement une optimisation pour une utilisation sur les sites de production.

Deux autres choses :

  • Nous lançons un cours Oxygen Builder. Vous pouvez en savoir plus ici et rejoindre la liste d'attente.
  • C'était un tutoriel demandé dans notre super groupe Facebook . Nous serions ravis de vous compter parmi nous !

Démo d'effet :

demo_iso_effect_oxygen_builder

Étape 1 : Champs ACF

Nous utiliserons ACF pour rendre cela 100 % dynamique et facile à modifier pour l'utilisateur final. Créez un groupe de champs et ajoutez une image de survol et une image de déplacement. L'image initiale sera l'image vedette de la publication. L'image de survol est ce à quoi l'effet s'estompera lorsque le visiteur survolera un message de répéteur.

L'image de déplacement est ce qui sera utilisé pour créer l'animation de morph/fade unique entre les deux images. Dans cet exemple, nous utilisons les images suivantes pour le déplacement :

Vous pouvez en fait utiliser n'importe quelle image, mais les images en noir et blanc avec une belle texture sont généralement les meilleures. C'est facile d'expérimenter cette méthode !

isotrope-2022-04-07-au-12-11-43
Créez un groupe de champs et attribuez-le au type de publication.
isotrope-2022-04-07-au-12-11-24
Chaque format de retour d'image doit être l'URL de l'image.

Voici à quoi ressemblent le groupe de champs et les images associées lors de l'ajout d'une nouvelle publication :

isotrope-2022-04-07-au-12-53-46
Il est facile d'échanger l'une des trois images.

Étape 2 : créer la structure de l'effet

À la base, nous copions le code source de l'exemple Codrops, avec des modifications mineures.

<div class="grid"> <!-- c'est le répéteur --> <div class="grid__item grid__item--bg"> <!-- c'est la div dans le répéteur --> <div class=" grid__item-img" data-displacement="img/displacement/8.jpg" data-intensity="-0.65" data-speedIn="1.2" data-speedOut="1.2"> <!-- c'est le "capteur d'image div" --> <img src="img/Img22.jpg" alt="Image"/> <img src="img/Img21.jpg" alt="Image"/> </div> <div class=" grid__item-content"> <!-- c'est le "content wrapper div> --> <span class="grid__item-meta">Californie</span> <h2 class="grid__item-title">Jumping Around</h2 > <h3 class="grid__item-subtitle"> <span>Les derniers spots de saut vides de Californie</span> <a class="grid__item-link" href="#">En savoir plus</a> </h3> </ div> </div> </div>
isotrope-2022-04-07-au-13-12-26

Nous dupliquons simplement la structure HTML ci-dessus, avec des éléments Oxygen Builder. N'oubliez pas d'ajouter les classes de l'exemple HTML ci-dessus, car nous allons ajouter du CSS et le JS les utilise pour identifier des éléments spécifiques. Si vous modifiez ces classes, vous devrez mettre à jour le CSS et le JS en conséquence.

Notre répéteur utilise la grille CSS pour espacer uniformément toutes les cellules sans trop de travail :

isotrope-2022-04-07-au-13-25-06

Étape 3 : Rendre dynamique

Il y a plusieurs choses à configurer pour être dynamique. Tout d'abord, faites en sorte que le répéteur interroge le type de publication WordPress.

Ensuite, définissez la date et le titre du message pour qu'ils soient dynamiques.

isotrope-2022-04-07-au-13-17-17

Maintenant, nous allons mettre en place les trois images. C'est là que les choses peuvent devenir complexes. Définissez l'URL de l'image 1 comme URL de l'image sélectionnée.

isotrope-2022-04-07-au-13-20-11

Définissez l'URL de l'image 2 comme image de survol, définie dans l'ACF. Pour ce didacticiel, les champs ACF n'apparaissaient pas dans la fenêtre contextuelle "insérer des données dynamiques" (probablement en raison d'un bogue d'Oxygen Builder 4.0 Beta 2). Il existe une solution de contournement facile si vous rencontrez ce problème :

1 - Insérer les données dynamiques

2 - Sélectionnez la valeur de retour de la fonction PHP

isotrope-2022-04-07-au-13-20-47

3 - insérez manuellement le contenu du champ ACF avec get_field('fieldname')

isotrope-2022-04-07-au-13-21-30

Enfin, nous devons définir l'image de distorsion que l'effet utilisera pour effectuer la transition de morphing. Ceci est inséré dans le HTML en tant qu'attribut de données, que le JS lit et intègre dans l'effet. À partir du code HTML ci-dessus, nous pouvons voir qu'il existe plusieurs attributs, qui peuvent être modifiés pour modifier l'effet.

<div class="grid__item-img" data-displacement="img/displacement/8.jpg" data-intensity="-0.65" data-speedIn="1.2" data-speedOut="1.2"> <!-- this est le "div wrapper d'image" --> ... </div>

La principale chose que nous devons rendre dynamique est le déplacement de données, qui aura l'URL de l'image définie dans le message à l'aide d'ACF. Nous avons codé en dur les trois autres attributs, mais vous pouvez utiliser la même méthode décrite ci-dessous pour les rendre également modifiables par l'utilisateur.

Accédez à l'élément wrapper d'image (le div autour des deux images dynamiques). Cliquez sur Avancé -> Attributs et ajoutez les éléments suivants.

isotrope-2022-04-07-au-13-28-05

Pour data-displacement , nous allons rendre cela dynamique en cliquant sur le bouton data+ dans le contenu, et en insérant notre champ ACF correspondant.

Le HTML frontal ressemblera à ceci, et le JS utilisera toutes ces données (qui sont dynamiques et modifiables par l'utilisateur via ACF) pour créer l'effet de survol de déplacement cool sur WordPress :

isotrope-2022-04-07-au-13-46-39

Étape 4 : Ajouter CSS, bibliothèques et JS

Nous ajouterons le CSS suivant à notre feuille de style CSS universelle. Vous devrez peut-être jouer avec des styles CSS supplémentaires pour que tout fonctionne correctement.

.grid__item { débordement : caché ; position:relative ; } .grid__item-content { z-index:5; } .grid__item-img { afficher : bloquer ; hauteur : 100 % ; largeur : 100 % ; } .grid__item-img canevas {hauteur : 100 % ; position : absolue ; haut : 0 ; indice z : 1 ; } .grid__item-img img { hauteur : 100 % ; bloc de visualisation; } /* Ceci est une solution de secours si le JS ne fonctionne pas */ .grid__item-img img:nth-child(2) { position: absolute; haut : 0 ; gauche : 0 ; opacité : 0 ; transition : opacité 0,3s ; } .grid__item:hover .grid__item-img img:nth-child(2) { opacité : 1 ; } .js .grid__item-img img { afficher : aucun ; }

Enfin, nous allons charger les bibliothèques JS nécessaires et coder (nous l'avons fait avec un bloc de code) :

<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, intensité : el.dataset.intensity || indéfini, speedIn : el.dataset.speedin || indéfini, speedOut : el.dataset.speedout || indéfini, accélération : el.dataset.easing || indéfini, survol : el.dataset. hover || indéfini, image1 : imgs[0].getAttribute('src'), image2 : imgs[1].getAttribute('src'), replacementImage : el.dataset.displacement }); }); </script>

Nous utilisons Statique pour notre exemple (extraction des bibliothèques ImagesLoaded et Hover Effect de GitHub), mais vous devriez idéalement l'héberger sur votre site, en utilisant un outil comme Scripts Organizer ou Advanced Scripts.

Nous chargeons également Three.JS et TweenMax.JS, qui sont les deux bibliothèques sous-jacentes qui fonctionnent pour générer l'effet de déplacement.

Enfin, le JS fait ce qui suit - il identifie le moment où les images sont chargées et applique l'effet de survol à tout élément qui a le .grid__item-img , en extrayant les images associées et les images de déplacement de chaque message. Complètement dynamique et fonctionnera quel que soit le nombre de publications renvoyées par le répéteur Oxygen Builder.

Après avoir ajouté tout cela, votre effet devrait fonctionner !

Cela a été demandé par un membre de notre groupe Facebook Isotropic. Nous vous invitons à vous joindre ici.

Abonnez-vous et partagez
Si vous avez aimé ce contenu, abonnez-vous à notre tour d'horizon mensuel des actualités WordPress, de l'inspiration pour les sites Web, des offres exclusives et des articles intéressants.
Désabonnez-vous à tout moment. Nous ne spammons pas et ne vendrons ni ne partagerons jamais votre e-mail.