Pseudoclase CSS
Ce sunt pseudoclasele
Pseudoclasele CSS sunt extensii ale selectorilor care permit aplicarea de stiluri în funcție de starea, poziția sau conținutul unui element, fără a modifica HTML-ul.
Categorii de pseudoclase
- De interacțiune:
:hover,:focus,:active,:visited,:checked,:link - De structură:
:first-child,:last-child,:nth-child(),:nth-of-type(),:only-child,:not(),:empty - De stare:
:disabled,:enabled,:target,:valid,:invalid,:required,:optional - Avansate:
:has(),:is(),:where()
:hover
Descriere: Selectează elementul când utilizatorul trece cu mouse-ul peste el.
Utilizare: Se folosește frecvent pentru efecte vizuale, cum ar fi schimbarea culorii sau afișarea unui meniu.
Compatibilitate: Funcționează pe majoritatea elementelor, dar este cel mai des aplicat pe linkuri, butoane sau imagini.
Exemplu: Când treci cu mouse-ul peste linkul de mai jos, culoarea se schimbă.
:focus
Descriere: Se aplică când un element primește focus, de obicei prin click sau navigare cu tastatura (Tab).
Utilizare: Este util pentru a evidenția câmpurile de formular active.
Compatibilitate: Se aplică pe elemente care pot fi focusate: input, textarea, button, link.
Exemplu: Când dai click pe inputul de mai jos, se schimbă stilul.
:active
Descriere: Se aplică în momentul în care un element este activat, adică în timp ce este apăsat.
Utilizare: Poți crea efecte vizuale pentru butoane sau linkuri în momentul interacțiunii.
Compatibilitate: Funcționează pe elemente interactive: butoane, linkuri, inputuri.
Exemplu: Apasă pe butonul de mai jos și observă schimbarea.
:visited
Descriere: Se aplică pe linkuri care au fost deja accesate de utilizator.
Utilizare: Este util pentru a diferenția vizual linkurile vizitate de cele nevizitate.
Compatibilitate: Se aplică doar pe elemente <a> cu atribut
href.
Exemplu: După ce accesezi linkul de mai jos, culoarea se va schimba.
:checked
Descriere: Se aplică pe elemente de tip checkbox sau radio care sunt bifate.
Utilizare: Este folosit pentru a stiliza elementele selectate în formulare.
Compatibilitate: Se aplică pe <input type="checkbox"> și
<input type="radio">.
Exemplu: Când bifezi caseta de mai jos, se schimbă stilul.
:link
Descriere: Se aplică pe linkuri care nu au fost încă accesate de utilizator.
Utilizare: Este folosit pentru a stiliza linkurile nevizitate, oferind un aspect distinct față de cele deja accesate.
Compatibilitate: Se aplică doar pe elemente <a> cu atribut
href.
Exemplu: Linkul de mai jos va avea un stil diferit până când este accesat.
Pseudo-clasele de structură
Pseudo-clasele de structură permit selectarea elementelor în funcție de poziția lor în arborele DOM sau de relația cu alte elemente. Sunt utile pentru a aplica stiluri fără a modifica HTML-ul, bazându-te doar pe poziționare și tipologie.
:first-child
Descriere: Selectează primul copil al unui element părinte.
Utilizare: Este util pentru a evidenția sau stiliza primul element dintr-o listă, secțiune sau grup.
Compatibilitate: Funcționează pe orice element care este primul copil în cadrul părintelui său.
Exemplu: Primul paragraf din containerul de mai jos va fi evidențiat.
:last-child
Descriere: Selectează ultimul copil al unui element părinte.
Utilizare: Este util pentru a aplica stiluri speciale ultimului element dintr-un grup, listă sau secțiune.
Compatibilitate: Funcționează pe orice element care este ultimul copil în cadrul părintelui său.
Exemplu: Ultimul paragraf din containerul de mai jos va fi evidențiat.
:nth-child()
Descriere: Selectează elementele aflate pe o anumită poziție în cadrul părintelui, pe baza unui index numeric sau expresie.
Utilizare: Este extrem de flexibil — poți selecta al doilea element, fiecare al treilea, sau chiar poziții pare/impare.
Compatibilitate: Funcționează pe orice element care are o poziție clară în cadrul părintelui său.
Exemplu: Al doilea paragraf din containerul de mai jos va fi evidențiat.
:nth-of-type()
Descriere: Selectează elementele aflate pe o anumită poziție în cadrul părintelui, dar doar dintre cele de același tip.
Utilizare: Este util când ai mai multe tipuri de elemente în același container și vrei să stilizezi doar al n-lea element de un anumit tip.
Compatibilitate: Funcționează pe orice element care are frați de același tip în cadrul părintelui.
Exemplu: Al doilea paragraf (nu al doilea copil!) din containerul de mai jos va fi evidențiat.
:only-child
Descriere: Selectează un element care este singurul copil al părintelui său.
Utilizare: Este util pentru a aplica stiluri speciale atunci când un element nu are frați.
Compatibilitate: Funcționează pe orice element care este singurul copil în cadrul părintelui.
Exemplu: Paragraful de mai jos va fi evidențiat doar dacă este singurul copil al containerului.
:not()
Descriere: Selectează toate elementele care nu corespund selectorului specificat.
Utilizare: Este extrem de util pentru a exclude anumite elemente dintr-un set fără a le modifica direct.
Compatibilitate: Funcționează pe orice element HTML, în combinație cu orice selector valid.
Exemplu: Toate paragrafele care nu au clasa .exclus vor fi evidențiate.
:empty
Descriere: Selectează elementele care nu conțin niciun nod copil — nici text, nici alte elemente.
Utilizare: Este util pentru a evidenția sau ascunde elementele goale, cum ar fi paragrafele necompletate sau div-urile fără conținut.
Compatibilitate: Funcționează pe orice element HTML care este complet gol.
Exemplu: Paragraful gol din containerul de mai jos va fi evidențiat.
Pseudo-clasele de stare
Pseudo-clasele de stare permit selectarea elementelor în funcție de starea lor actuală — cum ar fi dacă sunt activate, dezactivate, valide sau țintite. Sunt esențiale pentru formulare și interacțiuni dinamice.
:disabled
Descriere: Selectează elementele care sunt dezactivate și nu pot fi utilizate de către utilizator.
Utilizare: Este util pentru a stiliza câmpurile sau butoanele inactive, oferind un indiciu vizual clar.
Compatibilitate: Funcționează pe elemente de formular precum <input>,
<button>, <select> etc.
Exemplu: Butonul dezactivat de mai jos va fi evidențiat.
:enabled
Descriere: Selectează elementele care sunt active și pot fi utilizate de către utilizator.
Utilizare: Este util pentru a evidenția câmpurile sau butoanele funcționale dintr-un formular.
Compatibilitate: Funcționează pe elemente de formular precum <input>,
<button>, <select> etc.
Exemplu: Butonul activ de mai jos va fi evidențiat.
:target
Descriere: Selectează elementul care corespunde fragmentului din URL (adică partea după
#).
Utilizare: Este util pentru a evidenția sau modifica stilul unui element atunci când este accesat direct printr-un link intern.
Compatibilitate: Funcționează pe orice element HTML care are un id ce poate fi
referit în URL.
Exemplu: Când dai click pe linkul de mai jos, secțiunea țintită va fi evidențiată.
:valid
Descriere: Selectează elementele de formular care au un conținut valid conform regulilor HTML5.
Utilizare: Este util pentru a evidenția câmpurile completate corect, oferind feedback vizual pozitiv.
Compatibilitate: Funcționează pe elemente precum <input>,
<textarea>, <select> etc., care au atribute de validare (ex:
required, pattern, type).
Exemplu: Câmpul valid va fi evidențiat.
:invalid
Descriere: Selectează elementele de formular care nu respectă regulile de validare HTML5.
Utilizare: Este util pentru a evidenția câmpurile completate greșit, oferind feedback vizual negativ.
Compatibilitate: Funcționează pe elemente precum <input>,
<textarea>, <select> etc., care au atribute de validare (ex:
required, pattern, type).
Exemplu: Câmpul invalid va fi evidențiat.
:required
Descriere: Selectează elementele de formular care au atributul required.
Utilizare: Este util pentru a evidenția câmpurile care trebuie completate înainte de trimiterea formularului.
Compatibilitate: Funcționează pe elemente precum <input>,
<textarea>, <select> etc.
Exemplu: Câmpul obligatoriu va fi evidențiat.
:optional
Descriere: Selectează elementele de formular care nu au atributul required.
Utilizare: Este util pentru a evidenția câmpurile opționale, oferind utilizatorului un indiciu vizual că completarea lor nu este obligatorie.
Compatibilitate: Funcționează pe elemente precum <input>,
<textarea>, <select> etc.
Exemplu: Câmpul opțional va fi evidențiat.
Pseudo-clasele avansate
Pseudo-clasele avansate extind puterea CSS-ului modern, permițând selecții complexe, condiționale și optimizate. Acestea oferă un control mai precis asupra stilizării, fără a fi nevoie de JavaScript sau modificări suplimentare în HTML.
:has()
Descriere: Selectează elementele care conțin un anumit descendent sau care îndeplinesc o condiție internă.
Utilizare: Este util pentru a aplica stiluri pe un element părinte în funcție de ce conține.
De exemplu, poți evidenția un <div> care conține un <img> sau un
<input:checked>.
Compatibilitate: Funcționează doar în browsere moderne (Chrome, Edge, Safari). Nu este suportat în Firefox (la momentul redactării).
Exemplu: Evidențiază un <div> care conține un buton.
:is()
Descriere: Simplifică scrierea selectorilor complicați, grupând mai multe variante într-un singur bloc. Este util pentru a aplica același stil la mai multe tipuri de elemente fără a repeta codul.
Utilizare: Reduce redundanța și crește lizibilitatea CSS-ului, mai ales când ai stiluri comune pentru mai multe elemente sau combinații.
Compatibilitate: Suportat în toate browserele moderne.
Exemplu: Evidențiază toate titlurile <h1>, <h2> și
<h3> cu același stil.
:where()
Descriere: Selectează elementele care corespund oricăruia dintre selectorii specificați, dar fără să adauge specificitate. Este ideal pentru stiluri generice sau de bază care nu trebuie să concureze cu alte reguli CSS.
Utilizare: Este util pentru a aplica stiluri comune fără a afecta ierarhia de specificitate,
spre deosebire de :is().
Compatibilitate: Suportat în toate browserele moderne.
Exemplu: Stilizează titlurile <h1>, <h2> și
<h3> fără a crește specificitatea.
Concluzie
Pseudo-clasele CSS oferă un mod elegant și eficient de a selecta și stiliza elemente în funcție de starea, poziția sau comportamentul lor. Folosite corect, ele reduc nevoia de JavaScript, cresc claritatea codului și permit interfețe mai dinamice și accesibile. Acest ghid acoperă cele mai relevante pseudo-clase, grupate tematic pentru o înțelegere rapidă și aplicabilă.
🧠 Quiz - Pseudoclase CSS