CSS modern pentru dinozauri. Bare de progres în CSS. Logo-uri CSS pure

Această secțiune a site-ului este dedicată în întregime două limbi pentru crearea unui site, și anume HTML și CSS. Aici puteți învăța limbi străine pas cu pas, puteți învăța totul, de la elementele de bază până la cele mai dificile momente.

Această secțiune este construită pe principiul studiului pas cu pas al materialului, prin urmare, înainte de fiecare titlu al unei lecții despre HTML și CSS, există un număr corespunzător numărului de serie al lecției. Acest lucru este firesc dacă vrei să înveți totul de la elementele de bază și să nu faci mizerie în capul tău. Dacă știi deja ceva despre Limbi HTMLși CSS, atunci puteți găsi și aici cunoștințele care vă lipsesc sau aprofundați ceea ce ați învățat deja.

ÎN aceasta sectiune Au fost postate lecții despre standardele de limbaj HTML5 și, respectiv, CSS3, dacă există versiuni mai noi ale acestor limbi, acestea vor fi reflectate și în noile lecții din această secțiune și veți afla cu siguranță.



Probabil că fiecare persoană care s-a confruntat cu crearea unui site web cel puțin o dată în viață a auzit cu siguranță despre o astfel de combinație precum html și css, pot spune cu încredere că dacă vrei să faci singur site-uri, atunci nu te poți lipsi de cunoștințele acestora. două dintre lucruri.

Odată ce ai o înțelegere generală a ce este html-ul în capul tău, ai în mod clar o imagine mixtă și cred că acest lucru nu este surprinzător. Este timpul să treceți direct la exersare și să creați primul dvs. document HTML.

Ca și limbajul html, CSS are propriile caracteristici, reguli și structură. În această lecție vă voi spune despre conceptele de bază ale limbajului CSS, structura, designul acestuia și vom face primul Tabel CSS stiluri și învățați cum să conectați o foaie de stil la un document html.

Selectorii din CSS sunt baza limbajului în sine, iar învățarea și înțelegerea lor este foarte importantă, așa că în această lecție vă voi spune despre mai multe tipuri de selectoare și vă voi descrie capacitățile acestora.

Un punct foarte important în crearea unui site web este lucrul cu text și, după cum înțelegeți, trebuie să puteți lucra cu text în html și să știți ce etichete există și cum pot fi utilizate.

După ce ați învățat toate etichetele HTML pentru lucrul cu text, acum este timpul să treceți direct la CSS care lucrează cu text, ceea ce vă va extinde semnificativ cunoștințele și capacitățile.

În CSS o cantitate mare tot felul de proprietăți convenabile și care se schimbă calitativ și continuăm să studiem CSS care lucrează cu text și în această lecție, vom aprofunda subiectul lucrului cu text și vom analiza noile proprietăți ale textului.

Lucrul cu imagini la crearea de pe un site web, unul dintre puncte cheie, atât atunci când creați un design, cât și atunci când pur și simplu așezați sau scrieți orice materiale pentru site-ul dvs.

CSS extinde semnificativ posibilitățile de a lucra cu orice obiect html în această lecție aș dori să vă spun în detaliu despre parametrii care pot fi aplicați imaginilor.

Această colecție conține cele mai bune și de cea mai înaltă calitate funcții CSS. Aici puteți găsi exemple și tehnici demonstrative diverse și uimitoare de la designeri și designeri de layout celebri care încearcă să demonstreze că acum este posibil să faceți aproape totul folosind doar CSS pur. De asemenea, puteți găsi aici câteva lecții care vă spun în detaliu cum să realizați o astfel de creație. Sper că această colecție vă va fi de folos.

CSS nori 3D

În această demonstrație, veți putea crea și edita nori fantastici în 3D. Aceste nori CSS ne arată clar că posibilitățile tehnologiilor web sunt aproape nelimitate.

Logo-uri CSS pure

Acestea sunt exemple de logo-uri realizate numai cu CSS pur. Gândește-te la asta, nu au fost folosite imagini la crearea sa. E doar ceva.

Alfabet cu animație CSS

Exemplu minunat și artistic de utilizare a CSS în alfabet

Navigare 3D pentru site

O bară de navigare simplă, dar foarte elegantă pentru site, bineînțeles realizată folosind doar CSS3. fără imagini sau scripturi.

Google Doodle cu CSS

Unul dintre numeroasele doodle-uri din motorul de căutare Google, realizat în CSS. Acesta este un exemplu grozav utilizare de calitate Animații CSS

Glisor

Un glisor de imagine bine realizat și de înaltă calitate. Plus 4 exemple în demo.

Inel dublu animat

Un inel frumos animat și multicolor, fără prea mult cod CSS

Estompare în CSS

Mi se pare că acest filtru este foarte necesar, mai ales că este realizat folosind CSS pur. Folosind estomparea, puteți atrage atenția utilizatorului asupra unui anumit punct.

Ghidul complet pentru Flexbox

Acest articol este despre blocurile Flexbox receptive. Vorbește complet despre aceste blocuri, deși articolul este în engleză.

Meniu colorat și animat folosind CSS3

Un meniu derulant frumos pentru un site web cu pictograme. Un mare plus este că este realizat în întregime în CSS.

filtre CSS

Material de înaltă calitate în limba engleză, care vorbește despre utilizarea filtrelor CSS pe imagini.

Forme CSS

Postează despre Forme CSS cu numeroase exemple

Bare de progres în CSS

O lecție despre cum să creați bare de progres elegante folosind CSS pur și animație. De asemenea, puteți să vă uitați la exemplu și să descărcați sursele.

Animație - Animate.css

Cel mai popular proiect de animație CSS de pe Internet astăzi. Și probabil cel mai simplu și de cea mai înaltă calitate, și, de asemenea, gratuit.

Indicatori de încărcare - Spinkit

Sincer să fiu, acești indicatori au fost deja văzuți pe blog, dar mi se pare că merită să vă arăt din nou. Pentru că aceștia sunt cei mai frumoși indicatori CSS de pe Internet.

Butoane

În zilele noastre este greu să surprinzi cu butoanele CSS, dar aceasta este o opțiune destul de decentă

Generator pentru crearea comutatoarelor

Mic și internet de înaltă calitate o aplicație cu care poți crea întrerupătoare frumoase pentru utilizare pe site.

Sfaturi instrumente

Bibliotecă CSS pentru sfaturi gratuite - Hint.css

Scheme de culori

Scheme de culori pentru oamenii cărora nu le place să sape în cod

22/12/12 7,9K

CSS a fost lansat în 1997 pentru a ajuta dezvoltatorii de site-uri web să proiecteze și să creeze pagini web atractive. Cascading Style Sheets (CSS) este un tip de limbaj folosit pentru a schimba formatul și aspectul documentelor scrise. Exista Tipuri variate CSS care este utilizat pe scară largă și acceptat de toate browserele.

Când începeți să utilizați CSS, întâmpinați o serie de dificultăți. Dar există trucuri utile, îmbunătățind procesul CSS de la început până la sfârșit și permițându-vă să obțineți un cod cu adevărat competent.

3 tipuri principale de foi de stil CSS

Inline - codul se încadrează în eticheta documentului și îl afectează numai pe acesta.

1

Încorporat - codul este „încorporat” în antetul documentului. Afectează doar pagina în care este „încorporată”.

1

Externe — foile de stil sunt create într-un document separat. Acestea sunt apoi legate de alte documente web și influențează orice document care este legat de ele.

1

Există 15 bune practici pentru lucrul cu CSS.

Păstrează lucrurile în ordine

Urmărirea unei anumite comenzi necesită costuri, dar are un efect pozitiv. Acest lucru este deosebit de important atunci când utilizați CSS. În loc să notezi codurile în ordinea haotică în care ți-au venit în minte, este mult mai bine să organizezi stocarea codurilor după un anumit tipar.

Ar trebui să începeți cu cele mai generale și mai puțin importante puncte, trecând la cele mai importante. Această abordare creează o structură logică care facilitează viitoarele editări CSS. Utilizarea diagramelor și structurilor simple este utilă nu numai pentru editările viitoare, ci și pentru viitorii dezvoltatori.

Evitați CSS inline

Deși CSS inline este util pentru anumite utilizări, ar trebui evitat din anumite motive specifice. Unul dintre argumentele principale este că stilurile inline nu separă conținutul de design. Acest lucru face dificilă proiectarea și dezvoltarea. Un alt motiv este că acest stil este mai greu de întreținut.

Dacă trebuie făcute modificări la codul de stil inline, acele modificări vor trebui făcute pe fiecare pagină care îl conține. În cele din urmă, stilurile CSS inline nu sunt ușor de înțeles și măresc dimensiunea paginii.

Separați conținutul de design

Unul dintre principalele argumente în favoarea utilizării CSS este acela că codurile și HTML sunt stocate separat - acest lucru face ca designerul de layout să le găsească și să le întrețină mai ușor. Aceasta este o soluție bună, mai ales având în vedere faptul că designerul site-ului web nu este neapărat dezvoltatorul de conținut.

Data, titlul și semnătura

Când trebuie să aflați ceva despre CSS, comentariile din partea de sus a codului dvs. pot fi foarte utile. Mai ales atunci când proiectați teme și șabloane pentru alții. De asemenea, este o practică bună să adăugați codul eșantionului de culoare la începutul codului. Acest lucru va economisi mult timp pentru editare și modificări. Nu va fi nevoie să descoperiți codul de culoare. Tot ce trebuie să faci este să-l copiați.

1 /*====== 2 Echipa Onextrapixel 3 Copyright 2011 OXP 4 Scris pentru - www.onextrapixel.com 5 6 mostre de culori 7 ------------- 8 13437a - albastru închis 9 1d74be - albastru mijlociu 10 e1e1e1 - gri deschis 11 a3a4a4 - gri mijlociu 12 8a8a8a - gri 13 ======== */

Salvați biblioteca de șabloane

Dacă o structură este folosită frecvent, de ce să nu păstrați o copie a acesteia? Acest lucru ar permite data viitoare într-o situație similară să nu pornească de la zero. Pentru a face acest lucru, extrageți toate codurile care nu sunt partajate și salvați fișierul ca șablon CSS pentru utilizare ulterioară.

Utilizați comenzile rapide CSS

Pentru a încărca rapid foaia de stil și a economisi timp, utilizați comenzile rapide când codați CSS. Acest truc bun de codare CSS vă va face foaia de stil îngrijită și clară.

In loc de asta:

Ar trebui sa scrii asta:

1 #creion ( marja 2: 8px 7px 0px 5px; // valori sus, dreapta, jos și stânga, respectiv. 3 )

Utilizați tehnici utile de denumire

După cum am menționat mai devreme, unul dintre cele mai bune motive pentru utilizarea CSS este capacitatea de a separa stilurile de conținut. CSS facilitează reproiectarea unui site web fără a afecta HTML. Dacă elementele sunt denumite în așa fel încât va fi dificil să le distingem în viitor, atunci acest lucru va crea unele dificultăți și o pierdere suplimentară de timp. Este necesar să folosiți o denumire simplă, dar în același timp ușor de înțeles a elementelor relevante. În niciun caz nu trebuie să numiți o coloană „coloană din stânga”, deoarece în timpul operațiunilor ulterioare puteți confunda unde se află partea de cod responsabilă pentru conținut și unde direct pentru aspect.

Folosiți o cratimă în loc de un caracter de subliniere

Când utilizați versiuni mai vechi de browsere, CSS-ul se va rupe sau nu va funcționa deloc dacă sunt folosite liniuțe de subliniere. Utilizarea unei cratime în loc de liniuță de subliniere are ca rezultat o mai bună compatibilitate cu browserele mai vechi și mai puține blocări.

Nu te repeta

Unul dintre cele mai bune trucuri CSS pentru a-ți ușura viața este să folosești stenografia ori de câte ori este posibil. Căutați întotdeauna modalități de a grupa elemente similare care ar putea folosi aceeași dimensiune a fontului, margini și culoare. Aveți o înțelegere clară a modului în care CSS va interpreta aceste comenzi rapide. Ordinea de vizualizare este similară cu mișcarea acelui orelor de la 12 - sus, dreapta, jos și apoi stânga.

Mai eficient decât asta:

1 h1 ( 2 marje: 1em 0 2em 0; 3 mărimea fontului: 1em; 4 culori: #222; 5 ) 6 7 h2 ( 8 marje: 1em 0 2em 0; 9 dimensiunea fontului: 1em; 10 culori: #222 unsprezece)

Evitați să folosiți imagini cu adevărat mari

Utilizarea imaginilor mari ca fundal al unei pagini web va crește timpul de încărcare a paginii. O soluție bună este să folosiți imagini mici și, dacă este posibil, să le plasați cu caracteristici CSS acolo unde este necesar.

1 corp ( 2 background:url(bg.jpg) repeat-x; 3 )

Eliminați codul redundant

Utilizarea unora dintre sfaturile de mai sus va ajuta cu adevărat la reducerea dimensiunii foii de stil. Acest lucru va face ca pagina să se încarce mai repede. În plus, o foaie de stil mai mică este mai ușor de întreținut și actualizat. Eliminați întotdeauna codurile redundante și îmbinați acolo unde este posibil.

Un alt truc pentru a face un tabel mai mic este să nu definiți zero ca unitate de măsură. Dacă marginea ar trebui să fie setată la 0, atunci nu este nevoie să scrieți 0px sau 0cm. CSS va înțelege că 0 este zero, indiferent de unitate.

Validare CSS

Dacă apar erori la compilarea codului, trebuie să petreceți timp pentru a le găsi și a le corecta. Pentru a economisi timp, utilizați Validatorul CSS W3C pentru a vă ajuta să găsiți unele dintre cele mai frecvente erori CSS. Acesta este un instrument gratuit și foarte convenabil.

Utilizați funcția Reset CSS

Folosind Resetare CSS, va fi posibil să se evite inconsecvențele între diferite browsere. În practică, acest lucru este important pentru eliminarea câmpurilor care sunt incompatibile, precum și a altor incompatibilități de atribute care fac ca paginile web să arate diferit în browsere diferite. Folosind funcția Reset CSS, veți obține coerența paginii în diferite browsere.

html,body,iv,span,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronim,adresă,big,cite,code,del,dfn,em,font, img,ins,kbd,q,s,samp,small,strike,puternic,sub,sup, tt,var,dl,dt,dd,ol,ul,li,fieldset,form,etichetă,legendă,tabel,legendă, tbody,tfoot,thead,tr,th,td(margine:0; padding:0; chenar:0; outline:0; font-weight:inherit; font-style:inherit; font-size:100%; font-family :inherit; vertical-align:baseline; 2:focus (outline:0; ) 3 body (line-height:1; color:#000; background:#fff; ) 4 ol,ul (list-style:none; ) 5 tabel ( border-collapse:separate; border-spacing:0; ) 6 caption,th,td ( text-align:left; font-weight:normal; )

Scrieți mai întâi pentru Gecko, apoi personalizați pentru IE și Webkit

De obicei, dacă CSS funcționează corect pentru browserele Gecko (Netscape, Firefox Mozilla, Camino, Flock), este foarte probabil să funcționeze bine pentru alte browsere - IE și Webkit (Safari, Chrome). Pentru a economisi timp și nervi atunci când încercați să descoperi erorile de codare, este mai bine să începeți prin a scrie CSS pentru browserele Gecko.

Atenție

Este un obicei bun să păstrați foile de stil specifice browserului separate una de cealaltă, inclusiv JavaScript, comentariile condiționate și codul de pe server necesare pentru a face acest lucru.
Această metodă este excelentă pentru a evita atacurile hackerilor asupra foilor de stil de bază.
Acest lucru este, de asemenea, esențial pentru a menține CSS-ul gestionabil.

Concluzie

Există multe beneficii în utilizarea CSS. Nu numai că face ca paginile să se încarce rapid, dar atunci când folosești cele mai bune 15 trucuri CSS de mai sus, nu numai că îți ușurează viața, ci și proiectarea și editarea temelor și șabloanelor. Utilizarea CSS oferă beneficii atunci când lucrați cu Google. Motorul de căutare acordă mai multă pondere conținutului din partea de sus a documentului HTML. Când păianjenii motoarelor de căutare accesează cu crawlere HTML-ul unui site web, ei se uită la conținutul care vine primul. Folosind CSS, este ușor să creați un aspect în care conținutul apare primul, urmat de restul codului sursă al paginilor.

Prost

CSS (Foi de stil în cascadă) sau foi de stil în cascadă, sunt folosite pentru a descrie aspectul unui document scris într-un limbaj de marcare. Stilurile CSS sunt de obicei folosite pentru a crea și stiliza elemente ale paginilor web și ale interfețelor utilizator scrise în HTML și XHTML, dar pot fi aplicate și oricărui tip de document XML, inclusiv XML, SVG și XUL.

Foile de stil în cascadă descriu regulile de formatare a elementelor folosind proprietăți și valorile permise pentru acele proprietăți. Pentru fiecare element, puteți utiliza un set limitat de proprietăți, alte proprietăți nu vor avea niciun efect asupra acestuia.

O declarație de stil constă din două părți: elementul paginii web − selector, și comenzi de formatare - bloc de anunțuri. Selectorul spune browserului ce element să formateze, iar blocul de declarație (cod între acolade) listează comenzile de formatare - proprietăți și valorile acestora.


Orez. 1. Structura de declarare a stilului CSS

Tipuri de foi de stil în cascadă și specificul acestora

1. Tipuri de foi de stil

1.1. Foaie de stil externă

Foaie de stil externă este un fișier text cu extensia .css, care conține un set de stiluri CSS pentru elemente. Fișierul este creat într-un editor de cod, la fel ca o pagină HTML. Fișierul poate conține doar stiluri, fără marcaj HTML. O foaie de stil externă este conectată la o pagină web folosind o etichetă , situat in interiorul sectiei . Aceste stiluri funcționează pentru toate paginile site-ului.

Puteți atașa mai multe foi de stil la fiecare pagină web adăugând mai multe etichete în succesiune , indicând scopul acestei foi de stil în atributul etichetă media. rel="stylesheet" specifică tipul de link (link către o foaie de stil).

Atributul type="text/css" nu este cerut de standardul HTML5, deci poate fi omis. Dacă atributul lipsește, valoarea implicită este type="text/css" .

1.2. Stiluri interne

Stiluri interneîncorporat într-o secțiune document HTML și sunt definite în interiorul etichetei. Stilurile interne au prioritate față de cele externe, dar sunt inferioare stilurilor inline (specificate prin atributul stil).

...

1.3. Stiluri încorporate

Când scriem stiluri inline, scriem codul CSS în fișierul HTML, direct în interiorul etichetei elementului folosind atributul style:

Fii atent la acest text.

Astfel de stiluri afectează doar elementul pentru care sunt setate.

1.4. regulă @import

regulă @import Vă permite să încărcați foi de stil externe. Pentru ca directiva @import să funcționeze, trebuie să apară în foaia de stil (externă sau internă) înaintea tuturor celorlalte reguli:

Regula @import este folosită și pentru a include fonturi web:

@import url(https://fonts.googleapis.com/css?family=Open+Sans&subset=latin,cyrillic);

2. Tipuri de selectoare

Selectoare reprezintă structura unei pagini web. Ele ajută la crearea regulilor pentru formatarea elementelor paginii web. Selectorii pot fi elemente, clasele și identificatorii acestora, precum și pseudo-clase și pseudo-elemente.

2.1. Selector universal

Se potrivește cu orice element HTML. De exemplu, * (marja: 0;) va reseta marginile pentru toate elementele site-ului. Selectorul poate fi folosit și în combinație cu o pseudo-clasă sau pseudo-element: *:after (stiluri CSS) , *:checked (stiluri CSS) .

2.2. Selector de elemente

Selectorii de elemente vă permit să formatați toate elementele de un anumit tip de pe toate paginile site-ului. De exemplu, h1 (familie de fonturi: homar, cursiv;) va seta stilul general de formatare pentru toate titlurile h1.

2.3. Selector de clasă

Selectorii de clasă vă permit să setați stiluri pentru unul sau mai multe elemente cu același nume de clasă, plasate în locuri diferite pe pagină sau pe pagini diferite ale site-ului. De exemplu, pentru a crea un titlu cu clasa de titlu, trebuie să adăugați atributul de clasă cu titlul de valoare la eticheta de deschidere

și setați stilul pentru clasa specificată. Stilurile create folosind o clasă pot fi aplicate altor elemente, nu neapărat de acel tip.

Instrucțiuni pentru utilizarea unui computer personal

.titlu (text-transform: majuscule; culoare: albastru deschis; )

2.4. Selector ID

Selectorul ID vă permite să formatați unu element specific. Id-ul trebuie să fie unic și poate apărea o singură dată pe o singură pagină.

#sidebar ( lățime: 300px; float: stânga; )

2.5. Selector de descendenți

Selectorii descendenți aplică stiluri elementelor dintr-un element container. De exemplu, ul li (text-transform: majuscule;) - va selecta toate elementele li care sunt copii ale tuturor elementelor ul.

Dacă doriți să formatați descendenții unui anumit element, trebuie să dați acelui element o clasă de stil:

p.first a (culoare: verde;) - acest stil va fi aplicat tuturor legăturilor descendenți ai paragrafului cu prima clasă;

p .first a (culoare: verde;) - dacă adăugați un spațiu, linkurile situate în interiorul oricărei etichete .first class care este un copil al elementului vor fi stilate

Mai întâi a (culoare: verde;) - acest stil va fi aplicat oricărui link situat în interiorul altui element, desemnat de class.first .

2.6. Selector de copii

Un element copil este un copil direct al elementului său care îl conține. Un element poate avea mai multe elemente copil, dar fiecare element poate avea doar un element părinte. Selectorul copil vă permite să aplicați stiluri numai dacă elementul copil vine imediat după elementul părinte și nu există alte elemente între ele, adică elementul copil nu este imbricat în nimic altceva.
De exemplu, p > strong va selecta toate elementele puternice care sunt copii ale elementului p.

2.7. Sora selectoare

Fraternitatea apare între elemente care au un părinte comun. Selectoarele de frați vă permit să selectați elemente dintr-un grup de elemente de același nivel.

h1 + p - va selecta toate primele paragrafe imediat după orice etichetă

fără a afecta paragrafele rămase;

h1 ~ p - va selecta toate paragrafele care sunt sora oricărui titlu h1 și imediat după acesta.

2.8. Selector de atribute

Selectorii de atribute selectează elemente în funcție de numele sau valoarea atributului:

[atribut] - toate elementele care conțin atributul specificat - toate elementele pentru care este specificat atributul alt;

selector[atribut] - elemente de acest tip care conțin atributul specificat, img - doar imagini pentru care este specificat atributul alt;

selector[attribute="valoare"] - elemente de acest tip care conțin atributul specificat cu o anumită valoare, img - toate imaginile al căror titlu conține cuvântul floare;

selector[atribut~="valoare"] - elemente care conțin parțial o valoare dată, de exemplu, dacă pentru un element sunt specificate mai multe clase separate printr-un spațiu, p - paragrafe al căror nume de clasă conține caracteristică ;

selector[atribut|="valoare"] - elemente a căror listă de valori de atribut începe cu cuvântul specificat, p - paragrafe al căror nume de clasă este caracteristică sau începe cu caracteristică ;

selector[attribute^="valoare"] - elemente a căror valoare de atribut începe cu valoarea specificată, a - toate legăturile care încep cu http://;

selector[attribute$="valoare"] - elemente a căror valoare de atribut se termină cu valoarea specificată, img - toate imaginile în format png;

selector[attribute*="valoare"] - elemente a căror valoare de atribut conține cuvântul specificat oriunde, a - toate linkurile al căror nume conține book .

2.9. Selector de pseudo-clase

Pseudo-clasele sunt clase care nu sunt atașate etichetelor HTML. Acestea vă permit să aplicați reguli CSS elementelor atunci când are loc un eveniment sau respectă o anumită regulă. Pseudoclase caracterizează elemente cu următoarele proprietăți:

:hover - orice element peste care este plasat cursorul mouse-ului;

:focus - un element interactiv la care a fost navigat folosind tastatura sau activat cu mouse-ul;

:activ - element care a fost activat de utilizator;

:valid - câmpuri de formular al căror conținut a fost verificat în browser pentru conformitatea cu tipul de date specificat;

:invalid — câmpuri de formular al căror conținut nu se potrivește cu tipul de date specificat;

:activat - toate câmpurile de formular active;

:disabled — câmpuri de formular blocate, adică într-o stare inactivă;

:in-range - câmpuri de formular ale căror valori sunt în intervalul specificat;

:out-of-range - câmpuri de formular ale căror valori nu se încadrează în intervalul specificat;

:lang() - elemente cu text în limba specificată;

:not(selector) - elemente care nu conțin selectorul specificat - clasă, identificator, nume sau tip câmp de formular - :not() ;

:target este un element cu simbolul # care este referit în document;

:checked — elemente de formular selectate (selectate de utilizator).

2.10. Selector structural de pseudoclase

Pseudoclase structurale selectează elementele copil conform parametrului specificat în paranteze:

:nth-child(odd) - elemente copil impar;

:nth-child(even) - chiar elemente copil;

:nth-child(3n) - fiecare al treilea element dintre copii;

:nth-child(3n+2) - selectează fiecare al treilea element, începând cu al doilea copil (+2) ;

:nth-child(n+2) - selectează toate elementele începând cu al doilea;

:nth-child(3) - selectează al treilea element copil;

:nth-last-child() - în lista elementelor copil, selectează elementul cu locația specificată, similar cu :nth-child() , dar începând de la ultimul, în sens invers;

:first-child - vă permite să stilați doar primul element copil al etichetei;

:last-child - vă permite să formatați ultimul element copil al etichetei;

:only-child - selectează un element care este singurul element copil;

:empty - selectează elemente care nu au copii;

:root - selectează elementul care este rădăcina documentului - elementul html.

2.11. Selector de pseudo-clasă de tip structural

Indică un anumit tip de etichetă copil:

:nth-of-type() - selectează elemente similare cu :nth-child() , dar ia în considerare doar tipul elementului;

:first-of-type - selectează primul copil dintr-un anumit tip;

:last-of-type - selectează ultimul element de acest tip;

:nth-last-of-type() - selectează un element de tipul dat într-o listă de elemente în funcție de locația specificată, începând de la sfârșit;

:only-of-type - selectează singurul element de tipul specificat dintre elementele fiu ale elementului părinte.

2.12. Selector de pseudo-element

Pseudoelementele sunt folosite pentru a adăuga conținut, care este generat folosind proprietatea conținut:

:first-letter - selectează prima literă a fiecărui paragraf, se aplică doar elementelor bloc;

:first-line - selectează prima linie a textului elementului, se aplică numai elementelor bloc;

:before - inserează conținutul generat înaintea elementului;

:after - adaugă conținut generat după element.

3. Combinație selectoare

Pentru a selecta mai precis elementele pentru formatare, puteți utiliza combinații de selectoare:

img:nth-of-type(even) - va selecta toate imaginile cu numere pare al căror text alternativ conține cuvântul css .

4. Gruparea selectoarelor

Același stil poate fi aplicat mai multor elemente în același timp. Pentru a face acest lucru, trebuie să enumerați selectorii necesari în partea stângă a declarației, separați prin virgule:

H1, h2, p, span (culoare: roșie; fundal: alb; )

5. Moștenirea și cascada

Moștenirea și cascada sunt două concepte fundamentale în CSS care sunt strâns legate. Moștenirea este locul în care elementele moștenesc proprietăți de la părintele lor (elementul care le conține). Cascada se manifestă prin modul în care diferitele tipuri de foi de stil sunt aplicate unui document și modul în care regulile conflictuale se suprascriu reciproc.

5.1. Moştenire

Moştenire este mecanismul prin care anumite proprietăți sunt transmise de la un strămoș la descendenții săi. Specificația CSS permite moștenirea proprietăților legate de conținutul text al paginii, cum ar fi culoarea, fontul, spațierea literelor, înălțimea liniilor, stilul listei, alinierea textului, indentarea textului, transformarea textului, vizibilitatea, alb. -spațiu și spațiere între cuvinte. În multe cazuri, acest lucru este convenabil deoarece nu trebuie să setați dimensiunea și familia de fonturi pentru fiecare element de pe pagina web.

Proprietățile legate de formatarea blocurilor nu sunt moștenite. Acestea sunt fundal , chenar , afișare , float și clar , înălțime și lățime , margine , min-max-înălțime și -lățime , outline , overflow , padding , position , text-decoration , vertical-align and z-index .

Moștenirea forțată

Puteți utiliza cuvântul cheie moștenire pentru a forța un element să moștenească orice valoare de proprietate a elementului părinte. Acest lucru funcționează chiar și pentru proprietăți care nu sunt moștenite în mod implicit.

Cum sunt setate și cum funcționează stilurile CSS

1) Stilurile pot fi moștenite de la elementul părinte (proprietăți moștenite sau folosind valoarea de moștenire);

2) Stilurile situate în foaia de stil de mai jos suprascrie stilurile situate în tabelul de mai sus;

3) Stilurile din diferite surse pot fi aplicate unui element. Puteți verifica ce stiluri sunt aplicate în modul dezvoltator browser. Pentru a face acest lucru, faceți clic dreapta pe element și selectați „Vizualizare cod” (sau ceva similar). Coloana din dreapta va lista toate proprietățile care sunt setate pe acest element sau moștenite de la un element părinte, împreună cu fișierele de stil în care sunt specificate și numărul ordinal al liniei de cod.


Orez. 2. Modul dezvoltator în browserul Google Chrome

4) Când definiți un stil, puteți utiliza orice combinație de selectori - un selector de element, o pseudo-clasă de element, o clasă sau un identificator de element.

div (chenar: 1px solid #eee;) #wrap (lățime: 500px;).box (float: stânga;).clear (clear: ambele;)

5.2. Cascadă

În cascadă este un mecanism care controlează rezultatul final într-o situație în care reguli CSS diferite sunt aplicate aceluiași element. Există trei criterii care determină ordinea în care sunt aplicate proprietățile — regula!importantă, specificitatea și ordinea în care sunt incluse foile de stil.

Regulă!important

Greutatea unei reguli poate fi specificată folosind cuvântul cheie!important, care este adăugat imediat după valoarea proprietății, de exemplu, span (font-weight: bold!important;) . Regula trebuie plasată la sfârșitul declarației înaintea parantezei de închidere, fără spațiu. Un astfel de anunț va avea prioritate față de toate celelalte reguli. Această regulă vă permite să anulați o valoare de proprietate și să setați una nouă pentru un element dintr-un grup de elemente în cazul în care nu există acces direct la fișierul de stil.

Specificitate

Pentru fiecare regulă, browserul calculează specificitatea selectorului, iar dacă un element are declarații de proprietate conflictuale, se ia în considerare regula care are cea mai mare specificitate. Valoarea specificității are patru părți: 0, 0, 0, 0. Specificitatea selectorului este definită după cum urmează:

pentru id, se adaugă 0, 1, 0, 0;
pentru clasa 0, 0, 1, 0 se adaugă;
pentru fiecare element și pseudo-element se adaugă 0, 0, 0, 1;
pentru un stil inline adăugat direct unui element - 1, 0, 0, 0 ;
Un selector universal nu are specificitate.

H1 (culoare: albastru deschis;) /*specificitate 0, 0, 0, 1*/ em (culoare: argintiu;) /*specificitate 0, 0, 0, 1*/ h1 em (culoare: auriu;) /*specificitate: 0, 0, 0, 1 + 0, 0, 0, 1 = 0, 0, 0, 2*/ div#main p.about (culoare: albastru;) /*specificitate: 0, 0, 0, 1 + 0 , 1, 0, 0 + 0, 0, 0, 1 + 0, 0, 1, 0 = 0, 1, 1, 2*/ .sidebar (culoare: gri;) /*specificitate 0, 0, 1, 0 */ #sidebar (culoare: portocaliu;) /*specificitate 0, 1, 0, 0*/ li#sidebar (culoare: aqua;) /*specificitate: 0, 0, 0, 1 + 0, 1, 0, 0 = 0, 1, 0, 1*/

Ca rezultat, acele reguli care sunt mai specifice vor fi aplicate elementului. De exemplu, dacă un element are două specificități cu valorile 0, 0, 0, 2 și 0, 1, 0, 1, atunci a doua regulă va câștiga.

Ordinea meselor conectate

Puteți crea mai multe foi de stil externe și le puteți conecta la o singură pagină web. Dacă în tabele diferite se găsesc valori diferite ale proprietăților pentru un element, atunci, ca rezultat, regula găsită în foaia de stil listată mai jos va fi aplicată elementului.

Ryan North

În mod ciudat, CSS este considerat atât una dintre cele mai ușoare, cât și una dintre cele mai dificile limbi pentru un dezvoltator web. Cu siguranță este destul de simplu pentru început - definiți proprietățile stilului, valorile pentru anumite elemente și... cam asta este tot ce trebuie să știți! Cu toate acestea, în proiectele mari, situația devine destul de confuză și dificil de organizat CSS-ul într-un mod semnificativ. Schimbarea oricărei linii de CSS pentru a stila un element pe o pagină are adesea consecințe nedorite asupra elementelor din alte pagini.

Pentru a înțelege complexitatea inerentă a CSS, au fost create multe tipuri diferite de bune practici. Problema este că încă nu există un consens cu privire la care sunt cele mai bune și multe dintre ele se contrazic complet. Dacă este prima dată când încerci să înveți CSS, această situație poate fi cel puțin dezorientatoare.

Scopul acestui articol este de a oferi context istoric asupra modului în care tehnicile și instrumentele CSS au evoluat la starea lor actuală în 2018. Odată ce înțelegi această istorie, va fi mai ușor să înțelegi fiecare abordare și cum să o folosești în avantajul tău. Deci, să începem!

Utilizarea CSS pentru stiluri de bază

Să începem cu un site web foarte simplu, folosind doar un simplu fișier index.html care trimite la un fișier index.css separat:

CSS modern

Acesta este antetul.

Acesta este conținutul principal.

Acesta este subsolul.

Deocamdată nu folosim clase sau ID-uri în HTML, ci doar etichete semantice. În general, fără a utiliza CSS, site-ul ar arăta astfel (cu text substituent):

Funcțional, dar nu foarte frumos. Putem adăuga CSS pentru a îmbunătăți stilul de bază în index.css:

/* TIPOGRAFIE DE BAZĂ */ /* din https://github.com/oxalorg/sakura */ html ( dimensiunea fontului: 62,5%; familia fontului: serif; ) body ( dimensiunea fontului: 1.8rem; înălțimea liniei : 1.618; lățime maximă: 38em: culoare de fundal: #f9f9f9; h3, h4, h5, h6 ( line-height: 1,1; font-family: Verdana, Geneva, sans-serif; font-weight: 700; word-wrap: break-word; -ms-word-break: break-word ; -moz-hyphens: auto -webkit-hyphens: auto hyphens: auto ) h1 (font-size: 2em; ) h3 (font-size: 1.75em; ) -size: 1.5em; ) h5 (font-size: 1.25em; ) h6 (font-size: 1em; )
Aici, cea mai mare parte a CSS este stil (dimensiuni font, înălțimi de linii etc.), cu unele stiluri de culoare și aspect centrat. Ar trebui să studiezi design pentru a afla
valori bune acești parametri (aici sunt stilurile din sakura.css), dar codul CSS în sine nu este prea greu de citit. Rezultatul arată cam așa:


Faceți clic pentru un exemplu real

Ce diferență! Aceasta este promisiunea CSS - o modalitate ușoară de a adăuga stiluri la un document, fără codare sau logica complexa. Din păcate, lucrurile devin puțin mai complicate când începem să folosim CSS pentru mai mult decât doar stil și culori (vom ajunge la asta mai târziu).

Utilizarea CSS pentru marcare

În anii 1990, înainte ca tehnologia CSS să se răspândească, existau puține opțiuni pentru marcarea conținutului pe o pagină. HTML a fost conceput inițial ca un limbaj pentru crearea de documente simple, nu site-uri web dinamice cu bare laterale, coloane etc. În acele zile, marcarea se făcea adesea folosind tabele HTML - întreaga pagină era plasată într-un tabel, care era folosit pentru a organiza conținutul în coloane și rânduri. Această abordare a funcționat, dar reversul A existat o legătură strânsă între conținut și prezentare - dacă doreai să schimbi marcajul pe un site, uneori trebuia să rescrii o cantitate semnificativă de HTML.

CSS a dat un impuls mare pentru a separa conținutul (scris în HTML) și prezentarea (scris în CSS). Acum există o modalitate de a muta toate markupurile din HTML (nu mai multe tabele) în CSS. Este important de reținut că CSS, ca și HTML, nu a fost conceput inițial pentru aspectul paginii, așa că primele încercări de aspect nu sunt deloc elegante.

Să vedem cum funcționează acest lucru în practică cu exemplul nostru de mai sus. Înainte de a defini vreuna Markup CSS, mai întâi vom reseta toate marginile și umplutura (care afectează calculul aspectului) și, de asemenea, vom marca secțiunile cu culori diferite (nu pentru frumusețe, ci pentru a le distinge vizual atunci când testați diferite machete).

/* RESETARE DISPOZIȚIA ȘI ADĂUGAȚI CULORI */ body ( marja: 0; padding: 0; max-width: inherit; fundal: #fff; culoare: #4a4a4a; ) antet, subsol ( font-size: mare; text-align: centru; umplutură: 0.3em 0; culoare: #4a4a4a: #f9f9f9;
Acum, site-ul web va arăta temporar astfel:


Faceți clic pentru un exemplu real

Acum suntem gata să folosim CSS pentru a marca conținutul de pe pagină. Să evaluăm trei abordări diferite în ordine cronologica, începând cu aranjamentele flotante clasice.

aspect bazat pe float

Proprietatea float CSS a fost introdusă inițial pentru a încadra o imagine într-o coloană de text la stânga sau la dreapta (cum ați văzut adesea în ziare). Dezvoltatorii web de la începutul anilor 2000 au profitat de faptul că puteai flota nu doar imagini, ci orice element, ceea ce înseamnă că puteai crea iluzia de rânduri și coloane prin flotarea întregului conținut div. Dar, din nou, float-urile nu sunt concepute pentru acest scop , așa că o astfel de iluzie este dificil de realizat într-o manieră consecventă.

În 2006, A List Apart a publicat articolul popular „În căutarea Sfântului Graal”, care a subliniat o abordare detaliată și meticuloasă a creării unui aspect cunoscut sub numele de Sfântul Graal - un antet, trei coloane și subsol. Acum pare o nebunie că un astfel de aspect destul de simplu a fost numit Sfântul Graal, dar a fost atât de dificil să creezi un aspect consistent folosind CSS pur.

Mai jos este un aspect bazat pe float pentru exemplul nostru bazat pe tehnica descrisă în articol:

/* FLOAT-BASED LAYOUT */ body ( padding-left: 200px; padding-right: 190px; min-width: 240px; ) antet, subsol ( margin-left: -200px; margin-right: -190px; ) principal, nav, deoparte ( poziție: relativă; float: stânga; ) principal ( padding: 0 20px; lățime: 100%; ) nav ( lățime: 180px; padding: 0 10px; dreapta: 240px; margin-left: -100%; ) deoparte ( lățime: 130 px; umplutură: 0 10 px; margine-dreapta: -100%; ) subsol ( clar: ambele; ) * html nav ( stânga: 150 px; )
Privind CSS-ul, sunt necesare mai multe hack-uri pentru ca aspectul să funcționeze (chenarele negative, clare: ambele proprietăți, calcule de lățime hardcoded etc.) - articolul explică în detaliu necesitatea fiecăruia dintre aceste hack-uri. Cam asa arata rezultatul:


Faceți clic pentru un exemplu real

Nu-i rău, dar cele trei culori arată că coloanele nu au aceeași înălțime, iar pagina nu umple toată înălțimea ecranului. Acestea sunt probleme inevitabile atunci când se utilizează abordarea bazată pe plutire. Tot ce poate face un float este să împingă conținutul la marginea stângă sau dreaptă a unei secțiuni - nu există nicio modalitate în CSS de a afecta înălțimea conținutului în alte secțiuni. Ani de zile nu a existat o soluție simplă la problemă până când au apărut machetele bazate pe flexbox.

Aspect bazat pe Flexbox

Proprietatea flexbox în CSS a fost propusă pentru prima dată în 2009, dar nu a câștigat suport pe scară largă în browsere decât în ​​jurul anului 2015. Proprietatea este concepută pentru a determina modul în care spațiul este alocat într-o singură coloană sau rând, făcându-l mai mult într-un mod adecvat layout decât float. Deci, după zece ani de utilizare a machetelor bazate pe float, dezvoltatorii web pot folosi în sfârșit CSS pentru aspect fără hack-urile inerente machetelor bazate pe float.

Mai jos este un aspect bazat pe flexbox pentru exemplul nostru. Este realizat pe baza tehnicii descrise pe site-ul Rezolvat de Flexbox ( resursă populară unde sunt publicate diverse exemple pe flexbox). Rețineți că flexbox necesită un wrapper div suplimentar în jurul a trei coloane în HTML pentru a funcționa:

CSS modern

Acesta este antetul.

Acesta este conținutul principal.

Acesta este subsolul.

Iată codul flexbox în CSS:

/* FLEXBOX-BASED LAYOUT */ body ( min-height: 100vh; display: flex; flex-direction: column; ) .container ( display: flex; flex: 1; ) main ( flex: 1; padding: 0 20px; ) nav (flex: 0 0 180px; padding: 0 10px; order: -1; ) deoparte (flex: 0 0 130px; padding: 0 10px; )
Acesta este un cod mult mai compact în comparație cu aspectul bazat pe float! Proprietățile și valorile flexbox sunt puțin confuze la prima vedere, dar elimină necesitatea multor hack-uri, cum ar fi marginile negative - un câștig uriaș. Cam asa arata rezultatul:


Faceți clic pentru un exemplu real

Mult mai bine! Toate coloanele au aceeași înălțime și ocupă întreaga înălțime a paginii. În unele privințe, acest lucru pare ideal, dar există câteva mici dezavantaje ale acestei abordări. În primul rând, suport pentru browser - toate browserele moderne acceptă acum flexbox, dar unele browsere mai vechi nu îl vor accepta niciodată. Din fericire, dezvoltatorii de browsere fac progrese semnificative pentru a pune capăt ciclului de viață al versiunilor mai vechi, ceea ce va crea un mediu de dezvoltare mai stabil pentru designerii web. Un alt dezavantaj este faptul că trebuie să adăugăm la markup

- Ar fi frumos să te descurci fără asta. Într-o lume ideală, orice aspect CSS nu ar necesita deloc editarea marcajului HTML.

Dar cel mai mare dezavantaj este în codul CSS în sine. Flexbox elimină o mulțime de hack-uri de float, dar codul nu este atât de expresiv pe cât ar putea fi pentru a descrie aspectul. Flexbox CSS este dificil de citit și de a obține o înțelegere vizuală a modului în care toate elementele se vor potrivi pe pagină. Din această cauză, încercați să ghiciți parametrii corecti - și verificați ce se întâmplă.

Este important să subliniem încă o dată că flexbox este conceput pentru a plasa elemente într-o coloană sau rând - nu este conceput pentru a așeza o pagină întreagă! Chiar dacă se descurcă bine (mult mai bine decât abordarea bazată pe plutitor), diferite specificații au fost concepute special pentru mai multe coloane sau mai multe rânduri. Ele sunt numite grilă CSS.

Aspect bazat pe grilă

Grila CSS a fost introdusă pentru prima dată în 2011 (nu mult mai târziu decât flexbox), dar a durat mult timp pentru ca browserele să o accepte. La începutul lui 2018, grila CSS este suportată de majoritatea browserelor moderne (un pas uriaș înainte față de situația de acum un an sau doi).

Mai jos este aspectul bazat pe grilă pentru exemplul nostru. Se bazează pe prima metodă descrisă în acest articol despre trucurile CSS. Rețineți că în acest exemplu putem scăpa de

, care a trebuit să fie adăugat la un aspect bazat pe flexbox. Aici pur și simplu folosim HTML-ul original fără nicio modificare. Iată cum arată CSS-ul:

/* DISPOSARE BAZAT PE GRĂ */ body ( afișare: grilă; înălțime minimă: 100vh; coloane-șablon-grilă: 200px 1fr 150px; rânduri-șablon-grilă: conținut minim 1 conținut minim; ) antet (rând-grilă : 1; grilă-coloană: 1 / 4; padding: 0 20px; ) deoparte ( grilă-rând: 2; grilă-coloană: 3 / 4; padding: 0 10px; ) subsol ( grilă-rând: 3; grilă-coloană: 1 / 4; )
Rezultatul este vizual identic cu un aspect bazat pe flexbox. Cu toate acestea, codul CSS de aici este mult mai bun în sensul că arată în mod explicit aspectul pe care îl căutați. Mărimea și forma coloanelor și rândurilor sunt definite în selectorul de corp, iar fiecare element de grilă este determinat direct de poziția sa.

Singurul lucru care ar putea fi confuz este proprietatea grilă-coloană, care definește pozițiile de început și de sfârșit ale coloanei. Poate fi confuz deoarece acest exemplu are trei coloane, dar folosește numere de la 1 la 4. Situația devine mai clară dacă te uiți la ilustrație:


Faceți clic pentru un exemplu real

Prima coloană începe la poziția 1 și se termină la poziția 2, a doua coloană începe la 2 și se termină la 3, iar a treia coloană începe la poziția 3 și se termină la poziția 4. Antetul are proprietatea grilă-coloană setată la 1/ 4 pentru extinderea pe întreaga pagină, nav-ul indică grid-coloană cu o valoare de 1 / 2 pentru a se extinde la prima coloană etc.

Odată ce te obișnuiești cu sintaxa grilei, devine clar că aceasta este modalitatea ideală de a face aspectul în CSS. Singurul dezavantaj real este că nu este acceptat în toate browserele. Dar, din nou, situația s-a îmbunătățit semnificativ în ultimul an. Este greu de supraestimat Valoarea CSS grid ca primul instrument real în CSS, care a fost de fapt creat inițial pentru aspect, adică pentru aspectul întregii pagini. Într-un fel, designerii web au trebuit întotdeauna să fie foarte conservatori atunci când creează machete creative, deoarece până de curând instrumentele au rămas foarte fragile, necesitând o varietate de hack-uri și lacune non-standard. Acum, odată cu apariția grilei CSS, vine potențialul pentru nou val Aspecte creative de design care nu au putut fi create niciodată înainte - vremuri minunate!


- Primit? Este amuzant cum, atunci când schimbi ceva în CSS, se rupe altceva!
- Poate, dar cu noi specificații precum flexbox și grid totul a devenit mult mai bun!
- Ha! Există mult mai mult în CSS decât doar aspectul!

Utilizarea unui preprocesor CSS pentru o nouă sintaxă

Până acum ne-am uitat la utilizarea CSS pentru stiluri și machete simple. Acum haideți să studiem instrumentele care vă ajută să lucrați cu limbajul CSS în sine. Să începem cu preprocesoarele CSS.

Un preprocesor CSS vă permite să scrieți stiluri în alte limbi, care sunt apoi convertite în CSS, astfel încât browserul să le poată înțelege. Acest lucru a fost extrem de important într-un moment în care browserele au întârziat să accepte funcții noi. Primul preprocesor CSS popular, Sass, a fost lansat în 2006. A implementat o nouă sintaxă concisă (indentație în loc de paranteze, fără punct și virgulă etc.) și a adăugat caracteristici avansate care nu se găsesc în CSS, cum ar fi variabile, funcții de ajutor și calcule. Iată cum arată secțiunea colorată din exemplul nostru anterior când folosiți Sass cu variabile:

$culoare-întunecată: #4a4a4a $culoare-deschisă: #f9f9f9 $culoare-întunecată: #eee culoarea corpului: $culoare-întunecată antet, subsol culoarea fundalului: $culoare-întunecată: $culoare-închisă fundal principal: $lumină -color nav, fundal deoparte: $side-color
Observați cum simbolul $ indică variabile reutilizate. Nu există paranteze sau punct și virgulă, ceea ce face sintaxa mai curată. Sintaxa curată este drăguță, dar caracteristici precum variabilele erau cu adevărat revoluționare la acea vreme, deoarece au deschis noi posibilități pentru a scrie CSS curat și ușor de întreținut.

Pentru a utiliza Sass, trebuie să instalați Ruby. Acest limbaj de programare este folosit pentru a compila codul Sass în CSS simplu. Apoi, trebuie să instalați bijuteria Sass, apoi să rulați o comandă pe linia de comandă pentru a vă converti fișierele .sass în fișiere .css. Iată un exemplu despre cum arată o astfel de comandă:

Sass --watch index.sass index.css

Această comandă va converti codul Sass din fișierul index.sass în CSS simplu din fișierul index.css (argumentul --watch specifică rularea de fiecare dată când intrarea se schimbă după salvare, ceea ce este convenabil).

Acest proces este cunoscut sub numele de etapa de construire, iar în 2006 a fost o barieră destul de semnificativă la intrare. Dacă sunteți familiarizat cu limbaje de programare precum Ruby, atunci totul este simplu pentru dvs. Dar mulți dezvoltatori front-end la acea vreme lucrau doar cu HTML și CSS, unde astfel de instrumente nu sunt necesare. Deci, este o provocare pentru un dezvoltator să învețe întregul ecosistem pentru a profita de funcțiile preprocesorului CSS.

În 2009, a fost lansat preprocesorul Less CSS. Este, de asemenea, scris în Ruby și are funcționalități similare cu Sass. Diferența cheie a fost sintaxa, care a fost făcută cât mai asemănătoare cu CSS. Aceasta înseamnă că orice cod CSS este și cod valid. Iată același exemplu în sintaxa Less:

@dark-color: #4a4a4a; @ culoare-deschis: #f9f9f9; @side-color: #eee; body ( culoare: @dark-color; ) antet, subsol ( background-color: @dark-color; culoare: @light-color; ) main ( fundal: @light-color; ) nav, aside ( fundal: @side- culoare;
Este aproape același (doar prefixul @ în loc de $ pentru variabile), dar nu arată la fel de frumos ca exemplul Sass. Aici vedem aceleași acolade și punct și virgulă ca în CSS. Dar faptul că este aproape de CSS a făcut ca designerii web să stăpânească mai ușor acest preprocesor. În 2012, Less a fost rescris pentru a utiliza JavaScript (în special Node.js) în loc de Ruby la compilare. După aceasta, Less a început să funcționeze mai repede decât concurenții săi Ruby, iar preprocesorul în sine a devenit mai atractiv pentru dezvoltatorii care folosesc deja Node.js în munca lor.

Pentru a converti codul de mai sus în CSS obișnuit, trebuie mai întâi să instalați Node.js, apoi să instalați Less și să rulați comanda:

Lessc index.less index.css

Comanda convertește codul Less din fișierul index.less în CSS obișnuit din fișierul index.css. Rețineți că comanda lessc nu are o modalitate de a monitoriza modificările fișierelor, așa cum o face sass. Așa că va trebui să utilizați un alt instrument pentru a urmări și a compila automat fișierele .less, ceea ce face procesul puțin mai complicat. Din nou, aceasta nu este mare lucru pentru programatorii care sunt obișnuiți să folosească instrumente de linie de comandă, dar este o barieră semnificativă pentru designerii ocazionali care doresc pur și simplu să folosească un preprocesor CSS.

Pe măsură ce Less a câștigat popularitate, dezvoltatorii Sass au adăugat o nouă sintaxă numită SCSS (un superset de CSS similar cu Less) la preprocesorul lor în 2010. De asemenea, au lansat LibSass, un port C/C++ al motorului Ruby Sass, făcându-l mai rapid și mai accesibil pentru programare într-o varietate de limbi.

Un alt preprocesor CSS alternativ, Stylus, a fost lansat în 2010. Este scris în Node.js și are o sintaxă mai curată în comparație cu Sass or Less. De obicei, atunci când discutăm despre preprocesoare CSS, aceste trei programe sunt menționate ca fiind cele mai populare (Sass, Less și Stylus). La urma urmei, toate sunt foarte asemănătoare ca funcționalitate, așa că nu puteți greși niciunul dintre ele.

Cu toate acestea, unii cred că în În ultima vreme Importanța preprocesoarelor CSS a scăzut deoarece browserele au început în sfârșit să implementeze unele dintre caracteristicile lor (cum ar fi variabilele și calculele). Mai mult decât atât, există abordarea opusă - post-procesarea CSS, care poate face preprocesoarele CSS complet învechite (în mod evident, aceasta problema controversata). Ne vom uita acum la post-procesoarele CSS.

Utilizarea unui post-procesor CSS pentru funcții de transformare

Post-procesorul CSS utilizează JavaScript pentru a analiza și transforma CSS-ul dvs. în CSS valid. În acest sens este destul de asemănător cu un preprocesor CSS - poate fi văzut ca o modalitate diferită de a rezolva aceeași problemă. Diferența cheie este că preprocesorul CSS utilizează o sintaxă specială pentru a defini obiectul de transformare, în timp ce postprocesorul CSS poate analiza codul CSS original și îl poate transforma fără nicio sintaxă specială. Cel mai bun mod de a arăta acest lucru este cu un exemplu. Să ne uităm la porțiunea CSS din exemplul de mai sus unde am stilat etichetele de titlu:

H1, h2, h3, h4, h5, h6 ( -ms-cratime: automat; -moz-hyphens: auto; -webkit-hyphens: auto; cratime: automat; )
Liniile două până la patru se numesc prefixe de furnizor. Browserele folosesc prefixe de furnizor atunci când testează noi funcții CSS sau le folosesc în modul experimental. În acest fel, dezvoltatorii pot testa aceste funcții înainte de implementarea finală în browser. Există un prefix -ms pentru Microsoft Internet Explorer, un prefix -moz pentru Mozilla Firefox și un prefix -webkit pentru browserele bazate pe Webkit (cum ar fi Google Chrome, Safari și ultimele versiuni Operă).

Este destul de incomod să inserați aceste prefixe diferite de furnizor pentru a utiliza proprietățile CSS. Ar fi bine dacă un instrument ar face automat acest lucru pentru noi, dacă este necesar. Acest lucru se poate face folosind preprocesoare CSS. De exemplu, în sintaxa SCSS:

@mixin cratime($valoare) ( ​​-ms-cratime: $valoare; -moz-cratime: $valoare; -webkit-cratime: $valoare; cratime: $valoare; ) h1, h2, h3, h4, h5, h6 ( @include cratime(auto);
Aici folosim funcția mixin în Sass, care definește o bucată de CSS o dată - și apoi o reutiliza peste tot. Când acest fișier este compilat în CSS obișnuit, orice instrucțiune @include va fi înlocuită cu codul CSS din @mixin corespunzătoare. În general, aceasta este o soluție bună, dar ești responsabil pentru definirea unui mixin pentru fiecare Proprietăți CSS, unde sunt necesare prefixele furnizorului. Aceste definiții mixin necesită suport: atunci când browserele implementează oficial unele caracteristici CSS, este posibil să doriți să eliminați prefixele inutile ale furnizorului.

În loc de mixin, aș dori să scriu doar CSS normal, astfel încât instrumentul să găsească automat proprietăți care au nevoie de prefixe și să le adauge acolo unde este necesar. Post-procesorul CSS poate funcționa exact în acest mod. De exemplu, dacă utilizați PostCSS cu pluginul autoprefixer, puteți scrie CSS complet normal fără prefixe de furnizor, iar post-procesorul va face toată treaba:

H1, h2, h3, h4, h5, h6 ( cratime: automat; )
Dacă rulați post-procesorul CSS pe acest cod, atunci în loc de cratimele de linie: auto; Vor apărea toate prefixele de furnizor corespunzătoare (în conformitate cu regulile de autocorrecție din pluginul de autoprefixare, care nu trebuie modificate manual). Aceasta înseamnă că puteți scrie doar CSS obișnuit fără să vă faceți griji cu privire la compatibilitate sau sintaxă specială, și asta este grozav!

Pe lângă autoprefixer, există și alte plugin-uri PostCSS care vă permit să faceți niște lucruri foarte interesante. Pluginul cssnext vă permite să utilizați funcții CSS experimentale. Pluginul de module CSS modifică automat clasele pentru a evita conflictele de nume. Pluginul stylelint găsește erori și termeni inconsecvenți în CSS. Aceste instrumente au început cu adevărat în anul trecut sau două, prezentând capabilitățile fluxului de lucru pentru dezvoltatori ca niciodată!

Cu toate acestea, progresul are un preț. Instalarea și utilizarea unui post-procesor CSS precum PostCSS necesită mai mult efort în comparație cu un pre-procesor CSS. Nu numai că trebuie să instalați și să rulați instrumentele din linia de comandă, dar trebuie să instalați și să configurați pluginuri individuale și să definiți un set mai complex de reguli (cum ar fi ce browsere să țineți cont etc.). În loc să ruleze PostCSS direct din linia de comandă, mulți dezvoltatori îl integrează în sisteme de compilare configurabile precum Grunt, Gulp sau webpack. Acest lucru face mai ușor să gestionați toate instrumentele de construcție diferite pe care le puteți utiliza pentru front-end.

Notă: Dacă nu ați folosit niciodată sisteme moderne construirea pentru partea frontală, poate părea că există prea multe informații de absorbit. Dacă doriți să începeți cu o tabără curată, consultați articolul meu JavaScript modern pentru dinozauri, care explică toate instrumentele JavaScript necesare pentru a le folosi. funcții moderneîn dezvoltarea front-end.

Este demn de remarcat faptul că au existat unele controverse în jurul postprocesoarelor CSS. Unii spun că terminologia este prea confuză (unii spun că toate aceste instrumente ar trebui numite preprocesoare CSS; alții spun că ar trebui să fie numite doar procesoare CSS etc.). Unii cred că post-procesoarele CSS vor elimina cu totul nevoia de pre-procesoare CSS, în timp ce alții cred că ar trebui folosite împreună. Oricum, trebuie să înveți post-procesoarele CSS dacă vrei să profiti la maximum de CSS.


- Ha! Cred că CSS se schimbă prea repede pentru binele său.
- Ei bine, nu toate deodată!
- Ha! Stai, ce vrei să spui?
-Te plângi că CSS este greu, dar în același timp te plângi că oamenii fac instrumente pentru a-l îmbunătăți!
- Pot fi! Dar nu puteți repara CSS numai cu instrumente!
- Și aici te va ajuta metodologia CSS!

Utilizarea metodologiilor CSS pentru întreținere fiabilă

Instrumente precum preprocesoarele CSS și postprocesoarele CSS au parcurs un drum lung pentru a îmbunătăți capacitatea de utilizare a dezvoltării CSS. Dar aceste instrumente singure nu sunt suficiente pentru a rezolva problema suportării bazelor de cod CSS mari. Pentru a rezolva această problemă, au început să fie create diverse linii directoare cu privire la modul de scriere CSS - numite de obicei metodologii CSS.

Înainte de a aborda orice metodologie CSS specifică, este important să înțelegeți de ce întreținerea CSS pe termen lung este atât de dificilă. Problema cheie- în natura globală a CSS. Fiecare stil pe care îl setați este aplicat global tuturor părților paginii. Depinde de dvs. fie să introduceți o convenție de denumire detaliată pentru a suporta nume de clase unice, fie să introduceți reguli de specificitate CSS pentru a determina ce stil ar trebui aplicat fiecărui element. Metodologiile CSS oferă o modalitate organizată de a scrie CSS pentru a le evita puncte dureroaseîn baze mari de cod. Să ne uităm la câteva metodologii populare în ordine cronologică.

OOCSS

OOCSS (Object Oriented CSS) a fost introdus pentru prima dată în 2009 ca o metodologie bazată pe două principii principale. Primul principiu este separa structura de carcasă. Aceasta înseamnă că CSS care definește structura (cum ar fi aspectul) nu trebuie amestecat cu CSS care definește pielea (cum ar fi culorile, fonturile etc.). Acest lucru facilitează reproiectarea carcasei, adică aspectul aplicației. Al doilea principiu - separați conținutul de recipient. Aceasta înseamnă să ne gândim la elemente ca pe obiecte reutilizabile, cu ideea cheie că un obiect ar trebui să arate la fel, indiferent de poziția sa pe pagină.

OOCSS oferă ghiduri bine gândite, dar nu este foarte clar cu privire la specificul acestei abordări. Metodologii ulterioare precum SMACSS au luat concepte cheieși a adăugat mai multe detalii pentru a le face mai ușor de lucrat.

SMACSS

SMACSS (Scalable and Modular Architecture for CSS) a apărut în 2011 ca o metodologie care recomandă scrierea CSS în cinci categorii distincte: reguli de bază, reguli de aspect, module, reguli de stat și reguli de temă. Metodologia SMACSS recomandă, de asemenea, o anumită convenție de denumire. De exemplu, în regulile de aspect, numele claselor ar trebui să fie prefixate cu l- sau layout- . În regulile de stat, numele claselor trebuie să fie precedate de prefixe care descriu starea, cum ar fi is-hidden sau is-colapsed .

SMACSS este mult mai specific decât OOCSS, dar metodologia încă necesită o gândire atentă la ce Reguli CSS ar trebui incluse în fiecare categorie. Abordările ulterioare precum BEM preiau o parte din luarea deciziilor, astfel încât acestea sunt mai ușor de utilizat în practică.

BEM

Introdusă în 2010, metodologia BEM (Block, Element, Modifier) ​​se bazează pe diviziunea interfața cu utilizatorulîn blocuri independente. bloc este o componentă reutilizabilă (un exemplu ar fi un formular de căutare definit ca
). Element este o parte mai mică a unui bloc și nu poate fi reutilizată de la sine (un exemplu ar fi un buton dintr-un formular de căutare definit ca ). Modificator este o entitate care definește aspectul, starea sau comportamentul unui bloc sau element (un exemplu ar fi un buton de formular de căutare dezactivat definit ca ).

Metodologia BEM este ușor de înțeles, cu o convenție specifică de denumire care permite începătorilor să o aplice fără a fi nevoie să adopte solutii complexe. Partea inversă a monedei este că unele nume de clase sunt destul de verbose și nu respectă regulile tradiționale pentru specificarea numelor semantice. Ulterior, au apărut noi metodologii precum Atomic CSS, unde această abordare neconvențională a atins un nivel complet nou!

CSS atomic

Metodologia Atomic CSS (cunoscută și sub numele de CSS funcțional) a apărut în 2014. Se bazează pe ideea de a crea clase mici, foarte specializate, cu nume care se bazează pe funcția vizuală. Această abordare este complet opusul OOCSS, SMACSS și BEM menționate mai sus: în loc să trateze elementele dintr-o pagină ca obiecte reutilizabile, Atomic CSS ignoră cu totul aceste obiecte și folosește clase de utilitate reutilizabile, foarte specializate, pentru a seta stilul fiecărui element. Deci in schimb vei primi ceva de genul .

Dacă prima ta reacție la acest exemplu este să te retragi îngrozit, nu ești singur. Mulți consideră această metodologie ca o încălcare completă a stabilit cele mai bune practici CSS. Cu toate acestea, au existat multe discuții de fond care pun la îndoială eficacitatea acestor practici în unele cazuri.

  • Serghei Savenkov

    un fel de recenzie „scurtă”... de parcă s-ar grăbi undeva