În dezvoltarea web modernă, limbajul CSS oferă o gamă variată de selectoare pentru a aplica stiluri precise elementelor dintr-o pagină. Printre acestea, selectorul universal, reprezentat de caracterul asterisc (*), este unul dintre cele mai puternice și versatile instrumente, dar care trebuie utilizat cu atenție.
Ce este și cum funcționează selectorul universal (*)
Selectorul universal se potrivește cu orice element HTML din Document Object Model (DOM). Atunci când este folosit de sine stătător, acesta țintește fiecare nod din pagină, de la <html> și <body> până la ultimul paragraf sau buton.
Iată cel mai răspândit exemplu de utilizare a selectorului universal – o formă simplificată de reset CSS:
* {
margin: 0;
padding: 0;
}
Această regulă instruiește browserul să elimine spațierea implicită (marginile exterioare și interioare) pentru toate elementele documentului, oferind dezvoltatorului un punct de plecare uniform indiferent de stilurile implicite aplicate de diferite browsere.
Utilizarea selectorului universal în cadrul unui container părinte
Selectorul universal devine și mai util atunci când este combinat cu un selector de clasă sau de identificator (ID), acționând ca descendent. Să analizăm următorul exemplu:
#container * {
border: 1px solid black;
}
În acest caz, regula nu mai afectează întreaga pagină, ci se aplică exclusiv elementelor care se găsesc în interiorul elementului cu identificatorul #container. Toate aceste elemente descendente vor primi o bordură neagră de 1 pixel.
Bune practici și impactul asupra performanței
Deși este foarte comod, selectorul universal trebuie folosit conștient. Deoarece browserele evaluează regulile CSS de la dreapta la stânga, folosirea unui selector de forma .clasa * obligă motorul de randare să verifice arborele DOM pentru fiecare element găsit, ceea ce poate încetini afișarea în pagini foarte complexe.
În schimb, un tipar modern și extrem de eficient de utilizare a selectorului universal este resetarea proprietății box-sizing:
*, *::before, *::after {
box-sizing: border-box;
}
Această regulă asigură calcularea facilă a lățimilor și înălțimilor elementelor, incluzând spațierea interioară (padding) și bordura în dimensiunea totală a acestora.