Cand vom avea mai multe elemente in pagina cu siguranta vom ajunge in situatia cand vor exista conflicte intre reguli. Acest lucru este de asteptat si cateodata ni-l dorim.

Conflictele in CSS inseamna ca aceeasi proprietate vine cu doua valori din doi selectori diferiti. De exemplu:

<html>
    <head>
        <style>
            p {
                font-size: 16px;
                margin-bottom: 10px;
            }
            div > p {
                font-size: 14px;
                background: #80DEEA;
            }
        </style>
    </head>
    <body>
        <p>
            Un paragraf
        </p>
        <div>
            <p>
                Alt paragraf
            </p>
        </div>
    </body>
</html>

Aceasta este un caz destul de intalnit. Avem o regula generala ce se aplica pentru toate paragrafele din pagina. Vrem ca ele sa aiba o anumita marime a fontului.

Dar paragrafele din <div> vrem sa ai aiba o alta marime a fontului. Asa ca cele doua proprietati sunt in conflict acum.

Efectul de cascada

Daca avem doua reguli in conflict restul proprietatilor nu sunt afectate. Pentru paragrafele din interiorul elementului <div> regulile finale ce vor fi aplicate sunt:

margin-bottom: 10px;
font-size: 14px;
background: #80DEEA;

Asa ca regulile se aduna, se creeaza un fel de reuniune a doua multimi.

Cum castiga o regula

Exista mai multe reguli in CSS care dicteaza ce valoarea pentru o proprietate va castiga, printre care: specificitatea selectorului si pozitia regulii in codul CSS cand selectorul e acelasi.

De cele mai multe ori specificitatea unui selector dicteaza ce regula castiga.

In cazul de mai sus a doua valoare pentru font-size castiga, pentru ca al doilea selector este mai specific.