È attraverso l'animazione che abbiamo senso del mondo: le porte si aprono, le auto guidano verso le loro destinazioni, le labbra si arricciano nei sorrisi. Anche le cose che si sentono istantanee, come il fulmine colpendo o cadendo un telefono sul tuo viso mentre lo usi a letto, capita nel tempo. È attraverso quel movimento che comprendiamo come gli oggetti si riferiscono e alla funzione; Se sono leggeri o pesanti, rigidi o larghi, collegati o separati, appiccicosi o scivolosi.
Sul web, tuttavia, ci siamo abituati alle cose che appaiono e scomparendo in un batter d'occhio. Cliccate su un link e tutto cambia. È come essere guidato in una stanza bendata, girando intorno a un paio di volte e rimuovendo la benda per affrontare i dintorni. Non sai nemmeno quale porta hai inserito. Questo è e grande come la maggior parte dei siti sono costruiti. Possiamo fare di meglio.
Quando si impara il potenziale di Animazione CSS. , Può essere facile lasciare che le nostre immaginazione entrino in iperdrive e cospargere di animazioni su tutto. Mentre l'animazione può essere ottima, dobbiamo stare attenti e chiedi sempre noi stessi: questa animazione è significativa? Sta aggiungendo alcun valore diverso da essere bello? È il nostro prodotto più facile da usare?
In questo articolo stiamo andando a lavorare con un comune Design UI Elemento: un menu a levetta. Creereremo il menu (e un'icona per andare con esso) con CSS e fallo essere vivo con le animazioni. Assermeremo che le animazioni siano significative, ma applicano anche le migliori pratiche sulle prestazioni Web per garantire che siano il più liscia più liscia possibile.
Puoi Anteprima del risultato finale qui . Quando l'utente fa clic sull'icona del menu espanderemo la piastra di sfondo dell'icona (un cerchio) per coprire lo schermo e presentare la sovrapposizione del menu.
Piuttosto che lampeggiare a un'icona chiusa, analizzeremo e morph le tre linee verticali (che compongono l'icona del menu) in una "X", per rappresentare un'icona chiusa. In altre parole, poiché il menu viene rivelato l'icona Morphs in un pulsante chiuso.
Potresti pensare 'così, è un'animazione significativa? " Bene, grande domanda. Risposta breve: sì! Risposta più lunga: le animazioni sono grandi per collegare elementi sullo schermo e mostrando come si relazionano l'uno con l'altro.
Mentre consente di scalare la piastra di sfondo del menu per diventare il menu, mostriamo come sono collegati i due - simili a come un'icona dell'app, quando viene premuto su iOS o Android, ridimensiona e riprende lo schermo, mostrando che l'app è stata lanciata da quella stessa icona. La nostra icona del menu non solo disattiva il menu: è il menu, collasso solo.
Allo stesso modo, proprio come il modo in cui un interruttore On / Off trasforma tra il suo stato ON e OFF Quando lo premi su iOS, il nostro menu Toggle cambierà tra un'icona del menu e un'icona chiusa a seconda del menu del nostro sito sia visibile o nascosto. Questo aiuta a far rispettare l'idea che le due icone funzionino in modi simili: entrambi controllano il menu.
Quindi mentre stiamo facendo il nostro sito divertente da usare, stiamo anche rendendo più facile capire e migliorare il esperienza utente mai così leggermente.
Guarda come farlo nel tutorial video sopra e scritto i passaggi sottostanti.
Scarica i file del progetto . Aprire index.html. In un browser e dovresti vedere tre grandi link contro uno sfondo bianco. Questa è la sovrapposizione del menu che riveleremo.
Prima di tutto dobbiamo nasconderlo. Nel stili.css. , aggiungi questi stili a .MENU-Overlay. :
Opacità: 0;
Visibilità: nascosta;
Con la sovrapposizione andata, un pulsante dovrebbe apparire nell'angolo in alto a sinistra. Disegniamo la nostra icona del menu qui, quindi c'è qualcosa da fare clic per mostrare la sovrapposizione. Per facilitare l'animazione, lo disegneremo usando solo HTML e CSS; Nessun bitmap o vettori. Abbiamo già un po 'di html in index.html. Per il menu: un contenitore ( .menù ), un sottofondo ( .Menu-Circle. ), un collegamento ( .menu-link. ) e l'icona ( .menu-icon. ) con una portata per ogni riga.
Avere un separato div. Per lo sfondo è un approccio alquanto non convenzionale. Se non stavamo per aggiungere animazioni a questo cerchio, non avremmo bisogno di un separato div. ; Potremmo semplicemente aggiungere un Border-Radius. e colore di sfondo al nostro menu-link. .
Tuttavia, vogliamo essere liberi di usare il trasformare Proprietà sul cerchio, quindi possiamo ridimensionarla senza influire sull'icona stessa, quindi abbiamo bisogno di disaccoppiare lo sfondo dall'icona.
Iniziamo a disegnare le linee che compongono l'icona. Cosa hanno tutti in comune? Sono ugualmente ampi, hanno angoli arrotondati, sono assolutamente posizionati, e hanno un colore di sfondo. Dal momento che tutte le linee condividono il menu-line. Classe, lo usiamo per impostare queste proprietà condivise:
.menu-line {
Sfondo-Color: # 333;
Altezza: 2 px;
Larghezza: 100%;
Border-Radius: 2 px;
Posizione: assoluto;
a sinistra: 0;
}
Quindi possiamo usare le classi uniche delle linee per impostare la posizione verticale:
.MENU-LINE-1 {TOP: 0; }
.MENU-LINE-2 {
Top: 0;
Fondo: 0;
Margine: Auto;
}
.menu-line-3 {fondo: 0; }
Facciamo l'icona chiaramente cliccabile aggiungendo un effetto movimentato. Nel stili.css. , crea un nuovo selettore per Menu-Circle. Per ridimensionare quando si passa il mouse sul menu:
.Menu: Hover .Menu-Circle {Transform: Scala (1.4); }
Ora possiamo aggiungere la nostra prima animazione. Inserisci "Transizione: Tutto 0.2S Facile-in-out" per .Menu-Circle {} (non allo stato di volo). Stiamo dicendo al browser di animare tutte le proprietà che potrebbero cambiare .Menu-Circle. . Quindi, quando lo ridimuriamo su Hover, anima nel corso di 0,2 secondi al suo nuovo stato, con una funzione di temporizzazione di facilità in uscita .
Come fai a sapere quale funzione di temporizzazione scegliere? Prima di tutto, evitare di utilizzare una funzione di temporizzazione lineare. Poche cose nel mondo reale si muovono ad una velocità perfettamente costante, quindi gli oggetti animati con una funzione di tempistica lineare tendono a sembrare innaturali e rigidi (come avrebbe detto Einstein, "Dio non gioca dadi con una funzione di temporizzazione lineare").
Come regola generale, facile Funziona perfettamente per presentare nuovi oggetti, e facilità-in. Funziona perfettamente per rimozione di oggetti. E quando in dubbio, facilità in uscita È una solida funzione di temporizzazione per impostazione predefinita a: ha un inizio lento e un finale lento, creando un'animazione fluida e fluida.
Usiamo jQuery per mostrare e nascondere la nostra sovrapposizione di nuova creazione. Nel script.js. , a disattivare la classe di Aperto su .MENU-Overlay. Dentro il clic dei clic esistente:
$ (". Sovrapposizione di menu"). toggleclass ("Apri");
Quindi mostra la sovrapposizione quando ha una classe di aperta:
.menu-overlay.open {
Opacità: 1;
Visibilità: visibile;
}
La transizione che abbiamo aggiunto in precedenza significa che abbiamo già un effetto negativo in corso quando mostriamo e nascondiamo la sovrapposizione. Tuttavia, possiamo farlo sembrare che lo sfondo dell'icona del menu diventa la sovrapposizione del menu, e meglio collegare i due visivamente.
Raggiungere questo effetto è più facile di quanto non sembri: tutto ciò che dobbiamo fare è ampliare rapidamente il cerchio del menu quando è cliccato. La sovrapposizione svanirà contemporaneamente, creando l'illusione che l'icona del menu si sta trasformando nella sovrapposizione.
Dobbiamo essere in grado di stilare il cerchio del menu quando è stato cliccato il menu. Aprire script.js. , e all'interno del nostro clic del clic esistenti a disattivare la classe aperta per il nostro .menù :
$ (". Menu"). Togleclass ("Aperto");
Ora possiamo indirizzare questa classe con CSS ed espandere il cerchio mentre il menu è aperto. In fondo a style.csss. , espandere il .Menu-Circle. quando .menù ha anche una classe di .Aperto :
.menu.open .menu-cerchio {trasformazione: scala (60);
}
Abbiamo un bell'effetto rivelatori per il nostro menu, ma come attiriamo l'icona del menu in un'icona chiusa? È sorprendentemente facile una volta che sai come - avremo solo bisogno di impostare tre proprietà CSS. Prima di tutto, dobbiamo nascondere la linea centrale mentre viene visualizzato il menu:
.menu.open .menu-line-2 {opacità: 0; }
Quindi tutto ciò che dobbiamo fare è capovolgere le altre due linee 45 gradi in direzioni opposte (le linee devono puntare in direzioni diverse per formare una "X", quindi nota come una delle linee ha una rotazione negativa di 45 gradi):
.Menu.Open .menu-line-1 {
Trasforma: ruotare (-45Deg);
}
.menu.open .menu-line-3 {
Trasforma: ruotare (45DEG);
}
Bene, una specie di. Abbiamo anche bisogno di centrare queste due linee verticalmente. A questo punto potresti pensare 'facile! Abbiamo solo bisogno di cambiare il superiore e parte inferiore posizione per centrarli '. E avresti ragione - se non fossimo animando questa icona.
Dal momento che possiamo ottenere solo animazioni accelerate hardware limitandoci ad animare il trasformare e opacità Proprietà, dovremo ricorrere a centrare le linee attraverso le trasformazioni.
.Menu.Open .menu-line-1 {
Trasforma: Traduttore (7px) Traduttore (-50%) Ruota (-45Deg);
}
.menu.open .menu-line-3 {
Trasforma: Traduttore (-7px) Traduttore (50%) Ruota (45Deg);
}
Queste trasformazioni spostano le due linee in modo che siano centrate verticalmente all'interno del contenitore dell'icona, quindi ruotarli per formare la croce.
Lo diamo giù. Abbiamo due traduzioni utilizzate contemporaneamente: Traduttore (7px) e Traduttore (-50%) . La prima trasformazione, Traduttore (7px) , è usato per spostare il bordo superiore della linea sul centro verticale della tela. La matematica qui è semplice: 14 è l'altezza della nostra icona, dividendola per due riceviamo il punto centrale: 7.
La seconda trasformazione, Traduttore (-50%) è usato per spostare la linea in modo che il centro verticale della linea, non sia il suo bordo superiore, risiede sul punto centrale verticale della tela.
Di solito quando si usa il % Accedi a CSS Ti riferisci al genitore di un elemento (impostazione Larghezza: 100% Abbina la larghezza dell'elemento a quella del suo genitore), ma se usi percentuali con la proprietà Trasforma che si riferisce all'elemento stesso, non al genitore. Quindi per noi trovare l'altezza di una linea e spostarlo verso l'alto della metà di questo, tutto ciò di cui abbiamo bisogno è Traduttore (-50%) .
Invece di sostituire solo l'icona del menu con l'icona chiusa, morph tra i due stati.
Inizia aggiungendo una transizione a .MENU-LINE. nel style.csss. :
Transizione: tutte le 0,25 alle facilità in uscita;
Ta-da! Un'icona del menu di morphing. L'animazione è un po 'noiosa, però. Sistemiamolo. Per far apparire le linee più vivide, possiamo ruotarle sia di ulteriori 90 gradi. L'icona sarà la stessa alla fine, ma le linee viaggeranno ulteriormente durante lo stesso periodo di tempo. Cambia le rotazioni a Ruota (-135Deg) e ROTATE (135DEG) .
Come regola generale, puoi sempre migliorare un'animazione utilizzando una curva di Bézier personalizzata che è meglio adattata alla tua animazione. Attualmente stiamo usando facilità in uscita - Ciò significa che l'animazione avrà un avvio e un finale lento, con un ritmo più veloce nel mezzo.
Penso che un effetto più simile a primavera sia adatto per la nostra icona. Facciamo girare velocemente, con un piccolo effetto di rimbalzo in quanto si termina. Per .MENU-LINE. , Sostituisci " Facile-in-out " Con una curva di Bézier personalizzata:
Transizione: tutto 0,25s cubic-beziet (0,175, 0,885, 0,32, 1.275);
Quali sono tutti quei numeri? Non preoccuparti: le curve di Bézier sono raramente scritte a mano. Usate Cubic-Bezier () Per definire il ritmo di un'animazione nel tempo, e piuttosto che scriverli da soli, consiglio di utilizzare un sito di riferimento. Questo proviene da Eagsings.net. Oltre supera la fine dell'animazione e crea un sottile effetto di rimbalzo.
Mentre ci siamo, vai a Eagsings.net. e prendi il codice per liayoutoxpo. . Lo useremo per creare un effetto più raffinato per l'animazione di sfondo del menu. Aggiorna la transizione di .Menu-Circle. Per utilizzare questa curva Bézier personalizzata e rendere l'animazione un po 'più lunga (0,5s):
Transizione: tutti 0,5s cubic-beziet (0,19, 1, 0,22, 1);
Congratulazioni, hai creato un insieme di animazioni che sono significative: ti aiutano a capire cosa sta succedendo sul sito mentre la naviga, creando un senso di consapevolezza spaziale. Inoltre, le animazioni corrono senza intoppi.
Animazione solo delle proprietà di trasformazione e opacità, possiamo assicurarci che il supporto dell'accelerazione hardware del browser possa dare un calcio ed evitare il ritardo inutile. Quando giochi con animazioni, assicurati di selezionare queste due caselle: renderli significativi e belli.
Questo articolo è originariamente apparso in Magazine netta Edizione 281. Iscriviti alla rete qui .
Articoli Correlati:
(Immagine di credito: Mabel Wynne) Imparare a modificare un video su Tiktok probabilmente non sarebbe stato qualcosa ..
Pagina 1 di 2: Come creare un'icona di app in Illustrator: Passaggi 01-11 Come creare un'icona di app in Illustrator: Passaggi 01-11 ..
Questa guida passo-passo è impostata per rivelare come procedere alla creazione di nuvole realistiche. Questo tutorial è l'idea..
Un mandelbo è un frattale tridimensionale che sta diventando sempre più popolare in 3D Art. e vfx. In questo art..
Fare le grip con Teoria dei colori può sembrare un po 'troppo come imparare la matematica o la scienza. Potresti sentirti solo che vuoi essere creativo ed esprimere te stesso,..
Ant Ward sarà uno dei nostri artisti che rispondono alle tue domande specifiche a Vertice ..
Chiese medievali, pascoli verdi e case agricole in ardesia sono sinonimo dei villaggi che hanno rifiutato la campagna britannica...
Adobe sta lanciando una nuova serie di tutorial video oggi chiamato lo rendono ora, il che mira a delineare come creare specifici progetti di progettazione utilizzando vari Nuvo..