Noi funcții CSS care schimbă designul web

Publicat: 2022-03-10
Rezumat rapid ↬ Astăzi, peisajul designului s-a schimbat complet. Suntem echipați cu instrumente noi și puternice - Grilă CSS, proprietăți personalizate CSS, forme CSS și modul de scriere CSS, pentru a numi câteva - pe care le putem folosi pentru a ne exersa creativitatea. Zell Liew explică cum.

A fost o vreme când designul web a devenit monoton. Designerii și dezvoltatorii au creat aceleași tipuri de site-uri web din nou și din nou, atât de mult încât am fost batjocoriți de oamenii din propria noastră industrie pentru că am creat doar două tipuri de site-uri web:

Este aceasta limita a ceea ce mințile noastre „creative” pot realiza? Acest gând a trimis în inima mea un sentiment incontrolabil de tristețe.

Nu vreau să recunosc, dar poate că asta era cel mai bun lucru pe care l-am putut realiza atunci. Poate că nu aveam instrumente potrivite pentru a face modele creative. Cerințele web-ului au evoluat rapid, dar am fost blocați cu tehnici străvechi, cum ar fi plutitorii și mesele.

Astăzi, peisajul designului s-a schimbat complet. Suntem echipați cu instrumente noi și puternice — Grilă CSS, proprietăți personalizate CSS, forme CSS și writing-mode CSS, pentru a numi câteva — pe care le putem folosi pentru a ne exersa creativitatea.

Mai multe după săritură! Continuați să citiți mai jos ↓

Cum CSS Grid a schimbat totul

Grilele sunt esențiale pentru web design; știai deja asta. Dar te-ai oprit să te întrebi cum ai proiectat grila pe care o folosești în principal?

Majoritatea dintre noi nu au făcut-o. Folosim grila cu 12 coloane care a devenit un standard în industria noastră.

  • Dar de ce folosim aceeași grilă?
  • De ce sunt grilele formate din 12 coloane?
  • De ce grilele noastre au dimensiuni egale?

Iată un răspuns posibil la motivul pentru care folosim aceeași grilă: nu vrem să facem calculul .

În trecut, cu grile pe bază de plutire, pentru a crea o grilă cu trei coloane, trebuia să calculați lățimea fiecărei coloane, dimensiunea fiecărei jgheaburi și cum să poziționați fiecare element de grilă. Apoi, trebuia să creați clase în HTML pentru a le stila corespunzător. A fost destul de complicat.

Pentru a ușura lucrurile, am adoptat cadrele grid. La început, cadre precum 960gs și 1440px ne permiteau să alegem între grile cu 8, 9, 12 și chiar 16 coloane. Mai târziu, Bootstrap a câștigat războiul cadrelor. Deoarece Bootstrap permitea doar 12 coloane, iar schimbarea a fost o durere, în cele din urmă ne-am stabilit pe 12 coloane ca standard.

Dar nu ar trebui să dăm vina pe Bootstrap. A fost cea mai bună abordare pe atunci. Cine nu și-ar dori o soluție bună, care funcționează cu un efort minim? Odată rezolvată problema grilei, ne-am îndreptat atenția către alte aspecte ale designului, cum ar fi tipografia, culoarea și accesibilitatea.

Acum, odată cu apariția CSS Grid, grilele au devenit mult mai simple . Nu trebuie să ne mai temem de matematica grilă. A devenit atât de simplu încât aș susține că crearea unei grile este mai ușoară cu CSS decât într-un instrument de proiectare precum Sketch!

De ce?

Să presupunem că doriți să faceți o grilă cu 4 coloane, fiecare coloană având o dimensiune de 100 de pixeli. Cu CSS Grid, puteți scrie 100px de patru ori în declarația grid-template-columns și va fi creată o grilă cu 4 coloane.

 .grid { display: grid; grid-template-columns: 100px 100px 100px 100px; grid-column-gap: 20px; } 
Captură de ecran a inspectorului de grilă din Firefox care arată patru coloane.
Puteți crea patru coloane de grilă specificând o lățime a coloanei de patru ori în grid-template-columns

Dacă doriți o grilă cu 12 coloane, trebuie doar să repetați 100px de 12 ori.

 .grid { display: grid; grid-template-columns: 100px 100px 100px 100px 100px 100px 100px 100px 100px 100px 100px 100px; grid-column-gap: 20px; } 
Captură de ecran a inspectorului de grilă din Firefox care arată douăsprezece coloane.
Crearea a 12 coloane cu CSS Grid

Da, codul nu este frumos, dar nu ne preocupă optimizarea pentru calitatea codului (încă) – încă ne gândim la design. CSS Grid facilitează crearea unei grile pe web pentru oricine – chiar și pentru un designer fără cunoștințe de codare.

Dacă doriți să creați coloane de grilă cu lățimi diferite, trebuie doar să specificați lățimea dorită în declarația grid-template-columns și ești gata.

 .grid { display: grid; grid-template-columns: 100px 162px 262px; grid-column-gap: 20px; } 
Captură de ecran a inspectorului de grilă din Firefox care arată trei coloane de lățimi diferite.
Crearea coloanelor de diferite lățimi este ușoară.

Faceți grilele receptive

Nicio discuție despre CSS Grid nu este completă fără a vorbi despre aspectul receptiv. Există mai multe moduri de a face CSS Grid receptiv. O modalitate (probabil cea mai populară modalitate) este utilizarea unității fr . O altă modalitate este de a modifica numărul de coloane cu interogări media.

fr este o lungime flexibilă care reprezintă o fracție. Când utilizați unitatea fr , browserele împart spațiul deschis și alocă zonele pe coloane pe baza multiplului fr . Aceasta înseamnă că pentru a crea patru coloane de dimensiune egală, ai scrie 1fr patru ori.

 .grid { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; grid-column-gap: 20px; } 
GIF arată patru coloane create cu unitatea fr. Aceste coloane se redimensionează în funcție de spațiul alb disponibil
Grilele create cu unitatea fr respectă lățimea maximă a grilei. (Previzualizare mare)

Să facem câteva calcule pentru a înțelege de ce sunt create patru coloane de dimensiuni egale .

În primul rând, să presupunem că spațiul total disponibil pentru grilă este 1260px .

Înainte de a aloca lățime fiecărei coloane, CSS Grid trebuie să știe cât spațiu este disponibil (sau rămas). Aici, scade declarațiile grip-gap din 1260px . Deoarece fiecare decalaj este de 20 20px , ne rămâne cu 1200px pentru spațiul disponibil. (1260 - (20 * 3) = 1200) .

Apoi, adună multiplii fr . În acest caz, avem patru multipli de 1fr , așa că browserele împart 1200px la patru. Fiecare coloană este astfel 300px . Acesta este motivul pentru care obținem patru coloane egale.

Cu toate acestea, grilele create cu unitatea fr nu sunt întotdeauna egale !

Când utilizați fr , trebuie să știți că fiecare unitate fr este o fracțiune din spațiul disponibil (sau rămas).

Dacă aveți un element care este mai lat decât oricare dintre coloanele create cu unitatea fr , calculul trebuie făcut diferit.

De exemplu, grila de mai jos are o coloană mare și trei coloane mici (dar egale), chiar dacă este creată cu grid-template-columns: 1fr 1fr 1fr 1fr .

Vedeți demo-ul 1 al unității Pen CSS Grid `fr` de Zell Liew (@zellwk) pe CodePen.

Vedeți Pen CSS Grid fr unit demo 1 de Zell Liew (@zellwk) pe CodePen.

După ce au împărțit 1200px în patru și au alocat 300px fiecărei coloane de 1fr , browserele își dau seama că primul element de grilă conține o imagine de 1000px . Deoarece 1000px este mai mare de 300px , browserele aleg să aloce 1000px primei coloane.

Asta înseamnă că trebuie să recalculăm spațiul rămas.

Noul spațiu rămas este 1260px - 1000px - 20px * 3 = 200px ; acest 200px este apoi împărțit la trei în funcție de cantitatea de fracții rămase. Fiecare fracție este atunci 66px . Sperăm că asta explică de ce unitățile fr nu creează întotdeauna coloane cu lățime egală.

Dacă doriți ca unitatea fr să creeze coloane de lățime egală de fiecare dată, trebuie să o forțați cu minmax(0, 1fr) . Pentru acest exemplu specific, veți dori, de asemenea, să setați proprietatea max-width a imaginii la 100%.

Vedeți demo-ul 2 al unității Pen CSS Grid `fr` de Zell Liew (@zellwk) pe CodePen.

Vedeți Pen CSS Grid fr unit demo 2 de Zell Liew (@zellwk) pe CodePen.

Notă : Rachel Andrew a scris un articol uimitor despre modul în care diferitele valori CSS (conținut minim, conținut maxim, fr etc.) afectează dimensiunile conținutului. Merită citit!

Grile cu lățime inegală

Pentru a crea grile cu lățimi inegale, pur și simplu variați multiplu fr. Mai jos este o grilă care urmează raportul de aur, unde a doua coloană este de 1,618 ori față de prima coloană, iar a treia coloană este de 1,618 ori față de a doua coloană.

 .grid { display: grid; grid-template-columns: 1fr 1.618fr 2.618fr; grid-column-gap: 1em; } 
GIF arată o grilă cu trei coloane creată cu raportul de aur. Când browserul este redimensionat, coloanele se redimensionează corespunzător.
O grilă cu trei coloane creată cu raportul de aur

Schimbarea grilelor la diferite puncte de întrerupere

Dacă doriți să schimbați grila la diferite puncte de întrerupere, puteți declara o nouă grilă într-o interogare media.

 .grid { display: grid; grid-template-columns: 1fr 1fr; grid-column-gap: 1em; } @media (min-width: 30em) { .grid { grid-template-columns: 1fr 1fr 1fr 1fr; } }

Nu este ușor să creezi grile cu CSS Grid? Designerii și dezvoltatorii anteriori ar fi ucis pentru o astfel de posibilitate.

Grile bazate pe înălțime

Era imposibil să facem grile pe baza înălțimii unui site web anterior, deoarece nu exista o modalitate de a spune cât de înalt este fereastra de vizualizare. Acum, cu unități de vizualizare, CSS Calc și CSS Grid, putem chiar să facem grile bazate pe înălțimea ferestrei.

În demonstrația de mai jos, am creat pătrate de grilă pe baza înălțimii browserului.

Vedeți exemplul de grilă bazat pe înălțimea stiloului de Zell Liew (@zellwk) pe CodePen.

Vedeți exemplul de grilă bazat pe înălțimea stiloului de Zell Liew (@zellwk) pe CodePen.

Jen Simmons are un videoclip grozav care vorbește despre proiectarea pentru a patra margine - cu CSS Grid. Vă recomand cu căldură să îl urmăriți.

Plasarea elementului în grilă

Poziționarea elementelor din grilă a fost o mare durere în trecut, deoarece a trebuit să calculezi proprietatea margin-left .

Acum, cu CSS Grid, puteți plasa elemente de grilă direct cu CSS fără calcule suplimentare.

 .grid-item { grid-column: 2; /* Put on the second column */ } 
Captură de ecran a unui element de grilă plasat pe a doua coloană
Plasarea unui articol pe a doua coloană.

Puteți chiar să spuneți unui element de grilă câte coloane ar trebui să ocupe cu cuvântul cheie span .

 .grid-item { /* Put in the second column, span 2 columns */ grid-column: 2 / span 2; } 
Captură de ecran a unui element de grilă care este plasat pe a doua coloană. Se întinde pe două coloane
Puteți spune elementelor din grilă numărul de coloane (sau chiar rânduri) pe care ar trebui să le ocupe cu cuvântul cheie span

Inspirații

Grila CSS vă permite să aranjați lucrurile atât de ușor încât puteți crea rapid o mulțime de variante ale aceluiași site web. Un prim exemplu este pagina de pornire personală a lui Lynn Fisher.

Dacă doriți să aflați mai multe despre ce poate face CSS Grid, consultați laboratorul lui Jen Simmon, unde ea explorează cum să creați diferite tipuri de layout-uri cu CSS Grid și alte instrumente.

Pentru a afla mai multe despre CSS Grid, consultați următoarele resurse:

  • Master CSS Grid, Rachel Andrew și Jen Simmons tutoriale video
  • Layout Land, Jen Simmons O serie de videoclipuri despre aspect
  • Atelier de layout CSS, Rachel Andrew Un curs de layout CSS
  • Învață CSS Grid, Jonathan Suh Un curs gratuit despre CSS Grid.
  • Grid critters, Dave Geddes Un mod distractiv de a învăța CSS Grid

Proiectare cu forme neregulate

Suntem obișnuiți să creăm machete dreptunghiulare pe web deoarece modelul casetei CSS este un dreptunghi. Pe lângă dreptunghiuri, am găsit și modalități de a crea forme simple, cum ar fi triunghiuri și cercuri.

Astăzi, nu trebuie să ne oprim aici. Cu formele CSS și clip-path la dispoziția noastră, putem crea forme neregulate fără prea mult efort.

De exemplu, Aysha Anggraini a experimentat cu un aspect inspirat de benzi desenate, cu grilă CSS și clip path de decuplare .

Vedeți aspectul în stil benzi desenate stilou cu grilă CSS de Aysha Anggraini (@rrenula) pe CodePen.

Vedeți aspectul în stil benzi desenate stilou cu grilă CSS de Aysha Anggraini (@rrenula) pe CodePen.

Hui Jing explică cum să folosești formele CSS într-un mod care să permită textului să curgă de-a lungul curbei Beyonce.

O imagine a articolului lui Huijing, în care textul curge în jurul lui Beyonce.
Textul poate curge în jurul lui Beyonce dacă doriți!

Dacă doriți să aprofundați, Sara Soueidan are un articol care vă va ajuta să creați machete non-dreptunghiulare.

Formele CSS și clip-path vă oferă posibilități infinite de a crea forme personalizate unice pentru modelele dvs. Din păcate, din punct de vedere al sintaxelor, formele CSS și clip-path nu sunt la fel de intuitive ca Grila CSS. Din fericire, avem instrumente precum Clippy și Shape Path Editor din Firefox care ne ajută să creăm formele pe care le dorim.

Imagine cu Clippy, un instrument care vă ajută să creați forme CSS personalizate
Clippy vă ajută să creați cu ușurință forme personalizate cu clip-path .

Comutarea fluxului de text cu writing-mode CSS

Suntem obișnuiți să vedem cuvintele curgând de la stânga la dreapta pe web, deoarece web-ul este creat în principal pentru oameni vorbitori de engleză (cel puțin așa a început).

Dar unele limbi nu curg în această direcție. De exemplu, cuvintele chinezești se pot citi de sus în jos și de la dreapta la stânga.

writing-mode al CSS face textul să curgă în direcția nativă pentru fiecare limbă. Hui Jing a experimentat un aspect bazat pe chineză, care curge de sus în jos și de la dreapta la stânga pe un site web numit Penang Hokkien. Puteți citi mai multe despre experimentul ei în articolul ei, „The One About Home”.

Pe lângă articole, Hui Jing are o discuție grozavă despre tipografie și writing-mode , „When East Meets West: Web Typography and How It Can Inspire Modern Layouts”. Vă încurajez cu căldură să îl urmăriți.

O imagine a Penang Hokken, prezentând text care se citește de sus în jos și de la dreapta la stânga.
Penang Hokkien arată că textul chinezesc poate fi scris de sus în jos, de la dreapta la stânga.

Chiar dacă nu proiectați pentru limbi precum chineza, aceasta nu înseamnă că nu puteți aplica writing-mode CSS în engleză. În 2016, când am creat Devfest.asia, am flexibilizat un mic mușchi creativ și am optat pentru rotirea textului cu writing-mode .

O imagine care arată cum am rotit textul într-un design creat pentru Devfest.asia
Etichetele au fost create utilizând modul de scriere și transformări.

Laboratorul lui Jen Simmons conține și multe experimente cu writing-mode . Recomand cu căldură să-l verificați și.

O imagine din laboratorul lui Jen Simmon care arată un design de la Jan Tschichold.
O imagine din laboratorul lui Jen Simmon care îl arată pe Jan Tschichold

Efortul și ingeniozitatea merg pe cale lungă

Chiar dacă noile instrumente CSS sunt utile, nu aveți nevoie de niciunul dintre ele pentru a crea site-uri web unice. Puțină ingeniozitate și ceva efort merg departe.

De exemplu, în Super Silly Hackathon, Cheeaun rotește întregul site cu -15 grade și te face să arăți prost când citești site-ul.

O captură de ecran de la Super Silly Hackthon, cu text ușor rotit spre stânga
Cheeaun se asigură că arăți prost dacă vrei să intri în Super Silly Hackathon.

Darin Senneff a creat un avatar de conectare animat cu ceva trigonometrie și GSAP. Uită-te la cât de drăguță este maimuța și cum își acoperă ochii atunci când te concentrezi pe câmpul parolei. Similar cu formularul de conectare interactiv, există și un calculator foarte frumos și interactiv, care ajută la estimarea cantității de venituri pierdute atunci când utilizați servicii externe, cum ar fi JustEat!

Când am creat pagina de vânzări pentru cursul meu, Learn JavaScript, am adăugat elemente care îl fac pe cel care învață JavaScript să se simtă ca acasă.

Imagine în care am folosit elemente JavaScript în designul pentru Learn JavaScript.
Am folosit sintaxa function pentru a crea pachete de curs în loc să scriu despre pachetele de curs

Încheierea

Un design web unic nu se referă doar la aspect. Este vorba despre modul în care designul se integrează cu conținutul. Cu puțin efort și ingeniozitate, toți putem crea modele unice care vorbesc publicului nostru. Instrumentele pe care le avem astăzi la dispoziție ne ușurează munca.

Întrebarea este, îți pasă suficient pentru a realiza un design unic? Sper să faci.