Principiile de structură-coloane și rânduri, unghiuri și linii - pe care le folosim pentru a construi astăzi site-urile web, sunt în mare măsură influențate de patrimoniul lor tipărit. Și, deși implementarea rețelei pe web devine din ce în ce mai bună și mai lustruită, aspectul web este, în general, incomod în comparație cu mediile de imprimare, mai ales când vine vorba de fluxul de conținut.
Revistele și ziarele s-au bucurat întotdeauna de moduri elegante pentru aranjarea aspectului conținutului, cum ar fi împachetarea textului în jurul sau în interiorul unor forme nerectangulare.
Revista multifuncțională de către GreenSocksSă explorăm modul în care modulul CSS Shapes Module ne va permite aceeași libertate pe web.
Formatele CSS permit proiectanților web să creeze aspecte geometrice mai abstracte, dincolo de simple dreptunghiuri și pătrate. Specificația ne oferă noi proprietăți CSS care includ formă-exterior
și forma marja
. Suportul pentru browser este rezonabil, deși aceste proprietăți sunt în prezent disponibile numai în Chrome, Opera și Safari, cu -WebKit-
prefix, prin urmare -webkit forma literei afara
.
formă-exterior
proprietatea va determina ca conținutul în linie să se înfășoare (în afară) după curba elementului, mai degrabă decât modelul cutiei. Inițial a existat, de asemenea formă-interior
pentru a înfășura conținutul în interiorul unui element; textul dintr-un element circular va fi modelat și într-o formă de cerc. Cu toate acestea, implementarea a fost amânată pentru CSS Shapes Level 2.
forma marja
proprietatea stabilește marginea în jurul oricărei forme care utilizează formă-exterior
.
Să aruncăm o privire la câteva exemple.
Cel mai simplu mod de a afla cum funcționează formele CSS este probabil crearea unui cerc. Deci, iată a div
(cercul nostru), alături de mai multe paragrafe.
Lorem ipsum ...
Lorem ipsum ...
Lorem ipsum ...
Iată câteva elemente de bază, inclusiv lățimea și înălțimea cercului nostru border-radius
pentru a forma elementul și un flotor astfel încât paragraful să se înfășoare în jurul elementului.
.cerc width: 250px; înălțime: 250px; fundal-culoare: # 40a977; raza de graniță: 50%; plutește la stânga;
Așa cum am face cu excepția, paragrafele sunt acum înfășurate în jurul elementului. Cu toate acestea, deoarece proprietatea razei de frontieră nu definește forma efectivă a elementului, înfășurarea paragrafului nu formează curba cercului.
Dacă vom inspecta elementul prin intermediul browserului DevTools, vom găsi că elementul este, de fapt, încă o cutie. Deci, chiar dacă divul nostru are aspectul unui cerc, border-radius
nu a făcut nimic pentru real forma elementului.
Pentru ca punctul nostru să adere la forma circulară, trebuie să schimbăm real element prin formă-exterior
proprietate; în acest caz, vom adăuga unul cu cerc()
funcția a trecut ca valoare.
.cerc width: 250px; înălțime: 250px; fundal-culoare: # 40a977; raza de graniță: 50%; plutește la stânga; -webkit-shape-out: cerc (); formă-exterioară: cerc ();
Paragrafele noastre se înfășoară perfect pe circumferința cercului.
În plus, dacă inspectăm acum elementul prin DevTools, vom vedea că elementul este redat corect într-un cerc.
Observați culoarea mai întunecată.Cu unele margini, arătați cum ar putea îmbunătăți un aspect simplu:
cerc()
funcția necesită câteva valori pentru definirea funcției rază si coordonate de centru respectiv: cerc (r la x y)
. În mod implicit, valoarea razei este derivată din dimensiunea elementului; dacă elementul este 300px
de exemplu, raza va fi 150px
(raza fiind jumătate din diametrul cercului).
În mod similar, X
și y
coordonatele sunt măsurate în raport cu mărimea elementului și sunt setate, în mod implicit, la 50% 50%
; chiar în centrul elementului.
Aceste două valori vor fi utile atunci când doriți să redimensionați forma, păstrând în același timp dimensiunea reală a elementului sau mutați forma în timp ce păstrați poziția elementului. În următorul exemplu, vom reduce raza cercului până la 60 px
și setați coordonatul central la 30% 70%
, care ar trebui să deplaseze cercul în stânga jos a casetei element.
Este de remarcat faptul că atunci când se modifică cercul, atât coordonatele centrale cât și raza trebuie să fie definite în mod explicit; adăugând doar una dintre ele nu este validă.
cerc (60 de pixeli la 30% 70%) // corect. cerc (60px) // invalid. cerc (la 30% 70%) // invalid.
Modelele CSS moștenesc la fel model de cutie ca element, dar aplicat în afara sferei de aplicare a elementului însuși. Acest lucru ne permite să setăm separat elementul, de exemplu, la frontieră-box
în timp ce setați forma la padding-box
. Pentru a schimba forma model de cutie, adăugați una dintre model de cutie Cuvinte cheie, conținut-box
, Marja-box
, frontieră-box
, sau padding-box
după funcția respectivă.
.cerc width: 250px; înălțime: 250px; fundal-culoare: # 40a977; raza de graniță: 50%; plutește la stânga; padding: 10px; frontieră: 20px solid #ccc; margine: 30px; -webkit-shape-exterior: cerc () padding-box; forma-exterioară: cerc ();
Modelul cutie implicit al formei este setat la Marja-box
. Și în exemplul următor am schimbat-o padding-box
pentru a le spune browserului să excludă marginea elementului atunci când se determină dimensiunea sau intervalul de formă. Acum ar trebui să găsim că paragraful trece prin graniță și imediat atinge căptușeala elementului.
Vă recomandăm să verificați cursul nostru gratuit cu privire la modul de bază al CSS Box Model pentru mai multe informații despre modul în care modelul cutie funcționează în detaliu.
Specificațiile CSS Shapes au mai multe funcții de formă:
elipsă()
: După cum sugerează și numele, această funcție va crea o formă de elipsă. Putem configura raza de elipsă și putem muta și coordonatele centrelor de formă. Dar spre deosebire de cerc()
funcția, elipsă()
funcționează două măsurători de rază, orizontală și verticală, prin urmare elipsă (100px 180px la 10% 20%)
.poligon()
: Această funcție ne permite să realizăm forme mai complexe, cum ar fi triunghiurile, hexagonii, precum și formele non-geometrice. Folosirea poligonului nu este la fel de ușor ca crearea unui cerc, dar instrumentul Path to Polygon Converter îl face puțin mai intuitiv.În acest tutorial, am analizat aplicația de bază a formelor CSS; am creat o formă, am personalizat dimensiunea, poziția și model de cutie. La momentul scrierii, mai multe aspecte ale formelor CSS sunt încă foarte dure în jurul marginilor, ceea ce probabil este motivul pentru care nu o vedem folosită pe scară largă încă.
formă-interior
proprietatea, care ne permite să înfășurăm și să formăm conținutul în interiorul unui element, a fost pus pe gheață.forma-box
pentru a defini modelul cutie de forma, deși în prezent pare inaplicabil pentru orice browser.-WebKit-
prefix, evidențiind faptul că această caracteristică este experimentală.Cu toate acestea, în ciuda progreselor lente și a diferențelor dintre browsere în acest moment, aștept cu nerăbdare Formatele CSS! Odată ce browserele majore o iau, nu pot să aștept să vad câteva layout-uri cu adevărat creative pe web!