Hvordan bygge en stripet navigasjon med Flexbox

Takket være flexbox, kan vi i dag bygge noen virkelig attraktive og moderne oppsett med relativ letthet. I denne opplæringen skal vi se på et grensesnitt som nylig ble brukt til Google National Parks, og se hvordan flexbox kan hjelpe oss med å forbedre det.

 Som alltid, før vi går videre, la oss se på hva vi skal bygge (det kan hende du må sjekke ut den større versjonen, da den fulle effekten kommer inn på visningsportene bredere enn 800px):

Pass på å sveve over koblingene for å utløse de tilsvarende effektene. 

The Markup

Først må vi undersøke merkingen vi skal bruke til å bygge denne oppsettet. Vi definerer a div element med fem koblinger i det (du kan bruke hvilke elementer du føler er passende). Hver av våre lenker inneholder en div med klassen av overlegg. Nedenfor kan du se skjelettet av koden vår:

Innledende CSS-stiler

Med markeringen klar, begynner vi å definere noen innledende CSS-stiler, spesielt:

Her er en del av CSS-koden som viser hva vi har beskrevet ovenfor:

.flex-wrapper display: flex; høyde: 100vh;  .flex-wrapper a posisjon: relative; flex: 1; bakgrunnsstørrelse: deksel; bakgrunnsposisjon: senter; bakgrunn-gjentak: ikke-gjenta; overgang: flex .4s;  .flex-wrapper .one bakgrunnsbilde: url (IMAGE_PATH); bakgrunnsfarge: rød;  .flex-wrapper a: svever flex: 3; 

Så langt, hvis vi forhåndsvise demoen i en nettleser som støtter flexbox, ser vi dette resultatet:

Styling overlegget

Vårt neste skritt er å tildele noen få stiler til overlegget. Her er hva vi skal gjøre:

  • Gi overlegg de samme dimensjonene som overordnet lenke. Vi kan oppnå denne oppførselen ved å plassere den absolutt (i forhold til den nærmeste forelder) og angi nullverdier for alle offsetegenskapene. 
  • Definer overlegget som en flexbeholder. På denne måten kan vi sentrere sitt direkte barn (dvs.. .overlay-indre element) vertikalt og horisontalt.
  • Legg en halv gjennomsiktig grå bakgrunn til overlegget når vi svinger over overordnet lenke.

Her er de tilknyttede CSS-stilene:

.flex-wrapper .overlay display: flex; justeringselementer: center; begrunn-innhold: center; polstring: 0 10px; posisjon: absolutt; topp: 0; høyre: 0; bunn: 0; venstre: 0; overgang: bakgrunnsfarge .4s;  .flex-wrapper a: svever .overlay bakgrunnsfarge: rgba (0, 0, 0, .5); 

Innvendig overlegg

Nå er det på tide å style de indre delene av overlegget vårt. Som standard er disse skjult og skal bare vises når vi svinger over den tilhørende overordnede lenken. Men ikke umiddelbart, vil vi avsløre dem etter en liten forsinkelse. Denne forsinkelsen er viktig; hvis vi ikke definerer det spesifikt, vil overgangseffekten se litt stygg ut. Fjern den og test demoen for å forstå hva jeg mener. 

Så bare for å samle, først blir lenken større, så blir overleggselementene synlige. Også, bruker vi translate3d () å skape noe lysbilde i effekter. Sist men ikke minst bruker vi transform-stil: preserve-3d hack (eller lignende) for å forhindre mulige flimrende effekter over forskjellige nettlesere.

Og her er de relaterte CSS-stilene:

.flex-wrapper .overlay-inner * synlighet: skjult; opasitet: 0; transform-stil: preserve-3d;  .flex-wrapper .overlay h2 transform: translate3d (0, -60px, 0);  .flex-wrapper .overlay p transform: translate3d (0, 60px, 0);  .flex-wrapper a: svever .overlay-inner * opacity: 1; synlighet: synlig; transformere: ingen; overgang: alle .3s .3s; 

La oss se hva som er gitt oss.


Går Responsive

Siden ser bra ut på store skjermer, men kanskje på små eller til og med på mellomstore skjermer må vi gjøre noen tilpasninger. For eksempel, her er noen ting vi kan gjøre:

  •  Vri hovedbeholderen til flexbeholderen ved å legge til flex-retning: kolonne til det. På denne måten vil flex-elementene flyte fra topp til bunn.
  • Avbryt alle overgangseffekter og vis overflateelementene som standard . 

Vårt første første spørreskjema på skrivebordet ser ut som følger (jeg har brukt 800px bare fordi det passer til de innebygde demoene i dette innlegget - du kan velge det du føler er best):

@media skjerm og (maks bredde: 800px) .flex-wrapper flex-retning: kolonne;  .flex-wrapper a: svever flex: 1;  .flex-wrapper a: svever .overlay bakgrunnsfarge: gjennomsiktig;  .flex-wrapper .overlay h2, .flex-wrapper .overlay p opacity: 1; synlighet: synlig; transformere: ingen; 

Her er det siste utseendet på navigasjonen vår:

Nettleserstøtte

Demoen fungerer i alle nyere nettlesere som støtter flexbox. 

I noen nettlesere kan du merke at animasjonen av flex Eiendommen er ikke så glatt som den burde være, eller kanskje ikke fungerer i det hele tatt. For eksempel, IE11 ikke animerer denne egenskapen, mens Edge gjør. Dette er rimelig nok, med tanke på at flexbox er en ny layoutmodus som fremdeles er i ferd med å få trekkraft.

Konklusjon

I denne opplæringen forbedret vi vår flexbox kunnskap ved å lære å bygge en stilig navigasjonslayout. Forhåpentligvis likte du det vi har bygget her og har tatt litt inspirasjon til dine neste prosjekter!

Hvis du bygger en lignende layout, ikke glem å vise oss tilnærmingen (ren CSS eller JavaScript-basert løsning) du brukte.  

I villmarken   

Før du lukker, vil jeg gjerne dele med deg noen få nettsteder som bruker en lignende layout til det vi nettopp har opprettet:

  • Google Arts & Culture
  • Utdatert nettleser
  • Sykes Hytter