Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Servon tyylisysteemin yleiskatsaus

Tämä dokumentti tarjoaa yleiskatsauksen Servon tyylisysteemistä. Laajempia yksityiskohtia varten katso style doc comments tai wikin Styling Overview, joka sisältää keskustelun Boris Zbarskyn ja Patrick Waltonin välillä siitä, miten tyylien jakaminen toimii.

Selektoritoteutus

Stylo-yhteensopivuuden varmistamiseksi (projekti, joka integroi Servon tyylisysteemin Geckoon) selektorien täytyy olla yhdenmukaisia.

Yhdenmukaisuus on toteutettu selectors’ SelectorImpl -kohdassa, joka sisältää logiikan pseudo-elementtien ja muiden pseudo-luokkien jäsentämiseen puurakenteellisten pseudo-luokkien lisäksi.

Servo laajentaa selektoritoteutuksen trait:ia salliakseen muutamien asioiden jakamisen Stylon ja Servon välillä.

Servon pääasiallinen toteutus (jota käytetään tavallisissa käännöksissä) on SelectorImpl.

DOM-liima

DOM:n, layoutin ja tyylin pitäminen eri moduuleissa vaatii muutamia trait:eja.

Stylen dom-trait:t (TDocument, TElement, TNode, TRestyleDamage) ovat pääasiallinen “muuri” layoutin ja tyylin välillä.

Layoutin wrapper-moduuli varmistaa, että layout-trait:eilla on vaaditut trait:t toteutettuina.

Stylist

stylist-rakenne sisältää kaikki selektorit ja laitteen ominaisuudet tietylle dokumentille.

Tyylitiedostojen CSS-säännöt muunnetaan Rule-objekteiksi. Ne sijoitetaan sitten SelectorMap -rakenteeseen pseudo-elementin (katso PerPseudoElementSelectorMap), tyylitiedoston originin (katso PerOriginSelectorMap) ja prioriteetin (katso normal- ja important-kentät PerOriginSelectorMap -rakenteessa) mukaan.

Tämä rakenne luodaan käytännössä kerran per pipeline, vastaavassa LayoutThread:ssä.

properties-moduuli

properties module on mako-malli. Sen monimutkaisuus johtuu koodista, joka tallentaa ominaisuuksia, cascade-funktiosta ja palautetun arvon laskentalogiikasta, joka on altistettu pääfunktiossa.