Ce face Selectori de atribut ([attr], ^=, $=, *=)
Selectorii de atribut se scriu între paranteze drepte și permit stilizarea fără clase suplimentare. Poți verifica doar existența atributului ([required]) sau valoarea lui exactă ([type="checkbox"]).
Operatorii pentru potriviri parțiale:
• ^= valoarea începe cu textul dat.
• $= valoarea se termină cu textul dat.
• *= valoarea conține textul oriunde.
• ~= valoarea este o listă de cuvinte separate prin spațiu și unul dintre ele este exact textul dat.
• |= valoarea este exact textul sau începe cu textul urmat de cratimă (util pentru [lang|="ro"], care prinde ro și ro-MD).
Flag-ul i pus înainte de paranteza de închidere face comparația fără diferență între litere mari și mici: [href$=".pdf" i] prinde și .PDF. Flag-ul opus, s, are suport limitat (Firefox și Safari 27).
Valori uzuale
| Valoare | Descriere |
|---|---|
[attr] |
Elementul are atributul, cu orice valoare. |
[attr="v"] |
Valoarea este exact v. |
[attr^="v"] |
Valoarea începe cu v. |
[attr$="v"] |
Valoarea se termină cu v. |
[attr*="v"] |
Valoarea conține v. |
[attr~="v"] / [attr|="v"] |
Cuvânt exact dintr-o listă / v sau v- la început. |
Exemple
Exemplul 1: Iconițe automate pentru documente și linkuri externe
Linkurile primesc o etichetă în funcție de adresă, fără să adaugi clase în HTML.
a[href$=".pdf" i]::after {
content: " (PDF)";
color: #dc2626;
font-size: 0.8em;
}
a[href^="http"]:not([href*="dexblog.ro"])::after {
content: " ↗";
}
Efect vizual în browser
Linkul „Orarul școlii 2026” spre orar.PDF apare urmat de textul roșu, mic, „(PDF)”. Linkul spre un site extern apare cu o săgeată „↗” după text, iar linkurile interne de pe dexblog.ro rămân fără săgeată.
Exemplul 2: Stiluri după atribute data-* și tipul câmpului
Atributele data-* sunt o metodă comodă de a transmite o stare din JavaScript spre CSS.
input[type="email"],
input[type="tel"] {
font-family: ui-monospace, monospace;
}
.comanda[data-status="livrata"] {
border-left: 4px solid #16a34a;
}
.comanda[data-status="anulata"] {
border-left: 4px solid #dc2626;
opacity: 0.6;
}
Efect vizual în browser
Câmpurile pentru email și telefon folosesc un font monospațiat. În lista de comenzi, „Comanda #1042 – 250 lei” (livrată) are o bară verde în stânga, iar „Comanda #1043 – 99 lei” (anulată) are o bară roșie și apare estompată.
Greșeli frecvente
- Uitarea ghilimelelor când valoarea conține caractere speciale ([href$=.pdf] este invalid din cauza punctului); pune valoarea mereu între ghilimele.
- Folosirea *= pentru a căuta un cuvânt într-o listă de clase ([class*=”btn”] prinde și „submit-btn-mare”); pentru cuvinte întregi folosește ~= sau, mai simplu, un selector de clasă.
Comenzi înrudite
Selectori de bază (element, clasă, id): Mecanismul prin care CSS identifică elementele din HTML cărora le aplică stilurile.:not() (negarea selectorilor): Selectează elementele care NU corespund selectorilor din paranteză, de exemplu toate elementele unei liste, mai puțin ultimul.Pseudo-elemente (::before, ::after, ::placeholder): Creează elemente decorative virtuale în pagină fără HTML suplimentar sau stilizează părți specifice ale unui element.:user-valid și :user-invalid (validarea formularelor): Marchează câmpurile valide sau invalide abia după ce utilizatorul a interacționat cu ele, nu imediat la încărcarea paginii.