Suggerimento rapido come manipolare l'aspetto del cursore con i CSS

In questo suggerimento rapido, impareremo come personalizzare l'aspetto del cursore con i CSS. Cambierà il cursore in frecce per facilitare la navigazione di una presentazione. Per capirlo meglio, passeremo attraverso due esempi separati.

Nota: l'obiettivo di questo articolo non è quello di coprire esaustivamente il cursore sintassi della proprietà. Per un esame più approfondito, assicurati di controllare le risorse alla fine del tutorial.

Esempio 1

Per il primo esempio, discuteremo come cambiare l'immagine del cursore in base alla posizione del mouse.

Ecco la demo che costruiremo in azione:

1. L'HTML

Iniziamo con un'immagine semplice:

2. Il CSS

Successivamente, definiamo due classi CSS che mantengono le immagini del cursore:

.cursor-prev cursor: url (cursor-prev.cur), auto; / * IE & Edge * / cursor: url (cursor-prev.svg) 16 16, auto; / * Rest browser * / .cursor-next cursor: url (cursor-next.cur), auto; / * IE & Edge * / cursor: url (cursor-next.svg) 16 16, auto; / * Rest browser * /

Si noti che per ogni regola vengono specificate due dichiarazioni del cursore. La prima dichiarazione di ciascuna regola riguarda i browser Microsoft, mentre la seconda riguarda altri browser. Tutti i valori puntano a un'immagine, con il auto valore della parola chiave come fallback.  

Vale la pena ricordare che possiamo specificare più di un URL o un'immagine personalizzata. Un browser proverà a caricarli in base all'ordine definito nei valori. In altre parole, inizialmente proverà a caricare la prima immagine. Se quell'immagine non è disponibile per qualche motivo, proverà a caricare la seconda e così via. Infine, se nessuna delle immagini esiste, verrà utilizzata la parola chiave di fallback.

Prima di procedere, evidenziamo alcune limitazioni attuali (anche in base ai miei test) e spieghiamo perché abbiamo impostato due dichiarazioni separate:

  • I browser Microsoft supportano solo i formati CUR e ANI.
  • I browser Microsoft non consentono di impostare l'origine dell'immagine del cursore. Se ciò accade, l'immagine del cursore e il resto della proprietà vengono ignorati. Nel nostro caso, per i browser non Microsoft, impostiamo l'origine dell'immagine al centro (le immagini sono 32x32).

3. Il JavaScript

Quando tutte le risorse della pagina sono pronte, il dentro la funzione è eseguita. 

All'interno di questa funzione, prima recuperiamo la larghezza dell'immagine.

Successivamente, ogni volta che passiamo il mouse sopra l'immagine, facciamo le seguenti cose:

  • Ottieni la coordinata X del puntatore del mouse rispetto all'immagine, non relativa alla finestra del browser.
  • Rimuovi tutte le classi dall'immagine.
  • Aggiungi la classe appropriata all'immagine in base alla posizione del mouse. Se la posizione del mouse supera la metà dell'immagine, aggiungiamo il cursore-next classe, altrimenti il cursore-prev classe è stata aggiunta.

Il codice responsabile di questo comportamento è il seguente:

window.addEventListener ("load", init); function init () const img = document.querySelector ("img"); const width = img.getBoundingClientRect (); const halfImgWidth = width / 2; img.addEventListener ("mousemove", function (e) const xPos = e.pageX - img.offsetLeft; this.classList.remove ("cursor-prev", "cursor-next"); if (xPos> halfImgWidth)  this.classList.add ("cursor-next"); else this.classList.add ("cursor-prev");); 

Esempio # 2

Per il secondo esempio, useremo la demo costruita in un post precedente. Guarda:

Qui, la posizione e l'aspetto delle frecce di navigazione assomigliano a questo:

Personalizziamoli per facilitare la navigazione. Ciascuna delle frecce dovrebbe coprire metà della larghezza della giostra e la loro altezza dovrebbe essere uguale all'altezza del carosello. Inoltre, sfrutteremo il cursore proprietà per impostare le icone delle frecce.

Ecco il CSS richiesto:

.owl-carousel .owl-nav [class * = owl-] position: absolute; inizio: 0; fondo: 0; larghezza: 50%; margine: 0;  .owl-carousel .owl-nav .owl-prev left: 0; cursore: url (cursor-prev.cur), move; cursor: url (cursor-prev.svg) 16 16, move;  .owl-carousel .owl-nav .owl-next right: 0; cursore: url (cursor-next.cur), move; cursor: url (cursor-next.svg) 16 16, move;  .owl-carousel .owl-nav svg display: none; 

Si noti che le immagini del cursore provengono dal nostro esempio precedente. L'unica differenza è che specifichiamo il mossa valore della parola chiave come fallback nel caso in cui l'immagine associata non possa essere caricata.

Ecco il risultato:

La tua sfida (dovresti scegliere di accettarlo)

Questa tecnica funziona bene nel nostro esempio, a parte una cosa. Le frecce di navigazione sono impilate sopra il testo delle diapositive, impedendoci di fare clic sui pulsanti di invito all'azione. 

Normalmente, una semplice soluzione potrebbe essere quella di aggiungere un positivo z-index a quel testo (e darlo posizione: relativa). Tuttavia, questa soluzione non funzionerà perché il testo e le frecce si trovano in diversi contesti di impilamento (usa l'ispettore del browser per vederlo). 

Ancora una volta, questo problema si verifica per la nostra demo. Nei tuoi progetti, la tua struttura potrebbe essere diversa (ad esempio, hai solo immagini o il testo è sotto l'immagine) e potresti non affrontare questo problema. Inoltre, probabilmente utilizzerai un altro carosello con un markup diverso.

In ogni caso, un modo per risolvere questo problema è tramite JavaScript. Pertanto, ogni volta che il cursore personalizzato si trova all'interno dei limiti del pulsante / testo di destinazione, la freccia associata riceve un segno negativo z-index o scompare. 

Cerca di capire da solo questa correzione e pubblica la tua soluzione nei commenti!

Conclusione

In questo suggerimento rapido, abbiamo spiegato come manipolare l'aspetto del cursore con i CSS. Come abbiamo visto, questo può essere difficile in quanto non tutti i browser supportano la stessa sintassi, ma aggiungendo stili al cursore, siamo in grado di migliorare l'esperienza dell'utente.

Ulteriori letture

  • La definizione di cursore proprietà nel Livello 3 dell'interfaccia utente di base CSS (interfaccia utente CSS3)
  • Utilizzo dei valori URL per la proprietà cursor
  • Come creare miniature con anteprima multipla con gli eventi del mouse JavaScript