Selgitage, kuidas brauser määrab, millistele elementidele tuleb rakendada CSS-stiile.
sobes.tech AI
Vastus AI-lt
Brauser määrab, milliseid elemente CSS-stiile mõjutada, kasutades otsingu ja sobitamise mehhanisme, mis põhinevad CSS-valijatel.
Protsess toimub järgmiselt:
- CSS-i analüüs: Brauser analüüsib CSS-faile ja
<style>plokke HTML-s, luues sisemise stiilide esituse. - HTML-i analüüs: Brauser analüüsib HTML-i, luues DOM (Document Object Model) puu.
- Sobitamine (Matching): Iga DOM-i sõlme puhul püüab brauser seda CSS-i reeglitega sobitada. Seda tehakse kontrollides CSS-valijaid. Tavaliselt töötab see kõige spetsiifilisemast osast vähem spetsiifilisemani (paremalt vasakule). Näiteks,
div article pvalija puhul, esmalt leitaksep, siis kontrollitakse, kas see onarticlejärglane, mis omakorda ondivjärglane. - Rakendamine (Applying): Kui DOM-i sõlm vastab ühele või mitmele CSS-i reeglile, rakendab brauser vastavad stiilid sellele sõlmele. Kui on mitu rakendatavat reeglit, määrab brauser lõpliku stiili, kasutades spetsiifilisust, avaldamise järjekorda ja pärandumist.
Spetsiifilisus (Specificity):
Spetsiifilisus on algoritm, mida brauser kasutab CSS-valijate kaalu arvutamiseks. Mida spetsiifilisem valija, seda kõrgem prioriteet. Spetsiifilisus arvutatakse ID-de, klasside/pseudoklasside/atribuutide ning elementide/pseidoelementide arvu põhjal valijas.
// Spetsiifilisuse arvutamine: (a, b, c)
// a = ID-de arv
// b = klasside, pseudoklasside, atribuutide arv
// c = elementide, pseudoelementide arv
// Inline stiilidel on kõrgeim prioriteet (1, 0, 0, 0)
// `*` valijal on spetsiifilisus (0, 0, 0)
Näide spetsiifilisuse arvutamisest:
p: (0, 0, 1).class: (0, 1, 0)#id: (1, 0, 0)div p: (0, 0, 2)div .class: (0, 1, 1)
Avaldamise järjekord:
Kui kaks reeglit omavad sama spetsiifilisust, rakendatakse see, mis on CSS-koodis viimati avaldatud.
Pärandum (Inheritance):
Mõned CSS-omadused päranduvad vanemelementidelt lastele (näiteks color, font-family). Kui omadusele ei ole otseselt määratud väärtust, otsib brauser pärandatud väärtust DOM-puust ülespoole.
Seega määrab brauser stiilid elemendile, sobitades selektoreid, lahendades konfliktid spetsiifilisuse ja avaldamise järjekorra abil ning arvestades pärandumist.