Effetto Hover unico per ripetitori Oxygen Builder

Pubblicato: 2022-04-10

In questo tutorial, creeremo un effetto al passaggio del mouse unico per i contenuti visualizzati in Oxygen Builder Repeaters. Modellato sulla base dell'effetto "Distortion Hover Effect" di Codrops e utilizzando il codice sorgente di tale risorsa, questo effetto creerà una dissolvenza distorta su un'immagine definita dall'utente quando un visitatore si posiziona su una cella ripetitore.

Questo tutorial incorporerà alcuni fantastici concetti di Oxygen Builder:

  • Tecniche avanzate di ripetizione
  • Gruppi di campi ACF e integrazione manuale con Oxygen Builder
  • Griglia CSS di base
  • Attributi dinamici
  • Utilizzo del blocco di codice e JS intermedio

Facendo un ulteriore passo avanti, renderemo questa una funzionalità dinamica al 100%, il che significa che verrà impostata e dimenticata. Non c'è bisogno di inizializzare un effetto specifico per ogni cella!

Segui insieme (download sorgente):

Nota: questa è una prova di concetto e probabilmente richiede l'ottimizzazione per l'uso nei siti di produzione.

Altre due cose:

  • Stiamo lanciando un corso Oxygen Builder. Puoi saperne di più qui e unirti alla lista d'attesa.
  • Questo è stato un tutorial richiesto nel nostro fantastico gruppo Facebook . Ci piacerebbe che tu ti unissi!

Demo dell'effetto:

demo_iso_effect_oxygen_builder

Passaggio 1: campi ACF

Useremo ACF per renderlo dinamico al 100% e facile da modificare per l'utente finale. Crea un gruppo di campi e aggiungi un'immagine al passaggio del mouse e un'immagine di spostamento. L'immagine iniziale sarà l'immagine in primo piano del post. L'immagine al passaggio del mouse è ciò a cui l'effetto svanirà quando il visitatore passa con il mouse su un post ripetitore.

L'immagine di spostamento è ciò che verrà utilizzato per creare l'animazione unica di morph/fade tra le due immagini. In questo esempio, stiamo usando le seguenti immagini per lo spostamento:

Puoi effettivamente utilizzare qualsiasi immagine, ma le immagini in bianco e nero con una trama eccezionale sono in genere le migliori. È facile sperimentare questo metodo!

isotropic-2022-04-07-at-12-11-43
Crea un gruppo di campi e assegna al tipo di post.
isotropic-2022-04-07-at-12-11-24
Ogni formato di ritorno dell'immagine dovrebbe essere l'URL dell'immagine.

Ecco come appaiono il gruppo di campi e le immagini associate quando si aggiunge un nuovo post:

isotropic-2022-04-07-at-12-53-46
È facile sostituire una qualsiasi delle tre immagini.

Passaggio 2: crea la struttura per l'effetto

Al centro, stiamo copiando il codice sorgente dall'esempio Codrops, con piccole modifiche.

<div class="grid"> <!-- questo è il ripetitore --> <div class="grid__item grid__item--bg"> <!-- questo è il div nel ripetitore --> <div class=" grid__item-img" data-displacement="img/displacement/8.jpg" data-intensity="-0.65" data-speedIn="1.2" data-speedOut="1.2"> <!-- questo è il "wrapper dell'immagine div" --> <img src="img/Img22.jpg" alt="Image"/> <img src="img/Img21.jpg" alt="Image"/> </div> <div class=" grid__item-content"> <!-- questo è il "content wrapper div> --> <span class="grid__item-meta">California</span> <h2 class="grid__item-title">Saltando</h2 > <h3 class="grid__item-subtitle"> <span>Gli ultimi punti di salto vuoti della California</span> <a class="grid__item-link" href="#">Scopri di più</a> </h3> </ div> </div> </div>
isotropic-2022-04-07-at-13-12-26

Duplichiamo semplicemente la struttura HTML sopra, con elementi Oxygen Builder. Non dimenticare di aggiungere le classi dall'esempio HTML sopra, poiché aggiungeremo alcuni CSS e JS li usa per identificare elementi specifici. Se modifichi queste classi, dovrai aggiornare CSS e JS di conseguenza.

Il nostro ripetitore utilizza la griglia CSS per spaziare uniformemente tutte le celle senza molto lavoro:

isotropico-07-04-2022-at-25-13-06

Passaggio 3: Rendi dinamico

Ci sono diverse cose da configurare per essere dinamiche. Innanzitutto, fai in modo che il ripetitore interroghi il tipo di post di WordPress.

Quindi, imposta la data e il titolo del post in modo che siano dinamici.

isotropico-07-04-2022-at-17-13-17

Ora imposteremo le tre immagini. È qui che le cose possono complicarsi. Imposta l'URL dell'immagine 1 come URL dell'immagine in primo piano.

isotropico-2022-04-07-at-13-20-11

Imposta l'URL dell'immagine 2 come immagine al passaggio del mouse, impostata nell'ACF. Per questo tutorial, i campi ACF non venivano visualizzati nel popup "inserisci dati dinamici" (probabilmente a causa di un bug di Oxygen Builder 4.0 Beta 2). C'è una soluzione semplice se mai si verifica questo:

1 - Inserire i dati dinamici

2 - Selezionare Valore restituito funzione PHP

isotropic-2022-04-07-at-13-20-47

3 - inserisci manualmente il contenuto del campo ACF con get_field('fieldname')

isotropico-2022-04-07-at-13-21-30

Infine, dobbiamo impostare l'immagine di distorsione che l'effetto utilizzerà per effettuare la transizione del morph. Questo viene inserito nell'HTML come attributo di dati, che il JS legge e incorpora nell'effetto. Dall'HTML sopra, possiamo vedere che ci sono diversi attributi, che possono essere modificati per cambiare l'effetto.

<div class="grid__item-img" data-displacement="img/displacement/8.jpg" data-intensity="-0.65" data-speedIn="1.2" data-speedOut="1.2"> <!-- questo è il "div wrapper immagine" --> ... </div>

La cosa principale che dobbiamo rendere dinamico è lo spostamento dei dati, che avrà l'URL dell'immagine impostato nel post usando ACF. Abbiamo codificato gli altri tre attributi, ma puoi utilizzare lo stesso metodo descritto di seguito per rendere modificabili anche questi utenti.

Vai all'elemento wrapper dell'immagine (il div attorno alle due immagini dinamiche). Fare clic su Avanzate -> Attributi e aggiungere quanto segue.

isotropico-07-04-2022-at-28-13-05

Per data-displacement , renderemo questo dinamico facendo clic sul pulsante data+ nel contenuto e inserendo il nostro campo ACF corrispondente.

L'HTML frontend avrà questo aspetto e JS utilizzerà tutti questi dati (che sono dinamici e modificabili dall'utente tramite ACF) per creare il fantastico effetto di spostamento del passaggio del mouse su WordPress:

isotropico-07-04-2022-at-13-46-39

Passaggio 4: aggiungi CSS, librerie e JS

Aggiungeremo il seguente CSS al nostro foglio di stile CSS universale. Potrebbe essere necessario giocare con stili CSS aggiuntivi per far funzionare tutto bene.

.grid__item { overflow:nascosto; posizione:relativa; } .grid__item-content { z-index:5; } .grid__item-img { display: blocco; altezza: 100%; larghezza: 100%; } .grid__item-img tela { altezza: 100%; posizione:assoluta; superiore:0; indice z:1; } .grid__item-img img { altezza: 100%; blocco di visualizzazione; } /* Questo è un fallback se il JS non funziona */ .grid__item-img img:nth-child(2) { position: absolute; superiore: 0; a sinistra: 0; opacità: 0; transizione: opacità 0,3s; } .grid__item:hover .grid__item-img img:nth-child(2) { opacità: 1; } .js .grid__item-img img { display: nessuno; }

Infine, caricheremo le librerie JS necessarie e il codice (l'abbiamo fatto con un blocco di codice):

<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({ genitore: el, intensità: el.dataset.intensity || undefined, speedIn: el.dataset.speedin || undefined, speedOut: el.dataset.speedout || undefined, easing: el.dataset.easing || undefined, hover: el.dataset. hover || undefined, image1: imgs[0].getAttribute('src'), image2: imgs[1].getAttribute('src'), displacementImage: el.dataset.displacement }); }); </script>

Stiamo usando Staticamente per il nostro esempio (estraendo le librerie ImagesLoaded e Hover Effect da GitHub), ma idealmente dovresti ospitarlo sul tuo sito, usando uno strumento come Scripts Organizer o Advanced Scripts.

Carichiamo anche Three.JS e TweenMax.JS, che sono le due librerie sottostanti che funzionano per generare l'effetto di spostamento.

Infine, il JS fa quanto segue: identifica quando le immagini vengono caricate e applica l'effetto hover a qualsiasi elemento che abbia .grid__item-img , estraendo le immagini associate e le immagini di spostamento da ogni post. Completamente dinamico e funzionerà indipendentemente dal numero di post restituiti dal ripetitore Oxygen Builder.

Dopo aver aggiunto tutto questo, il tuo effetto dovrebbe funzionare!

Questo è stato richiesto da un membro del nostro gruppo Facebook isotropico. Ti invitiamo a partecipare qui.

Iscriviti e condividi
Se ti è piaciuto questo contenuto, iscriviti alla nostra carrellata mensile di notizie su WordPress, ispirazione per siti Web, offerte esclusive e articoli interessanti.
Annulla l'iscrizione in qualsiasi momento. Non inviamo spam e non venderemo o condivideremo mai la tua email.