To jest dość akademickie pytanie. Zastanawiam się, w jaki sposób jest zaimplementowana przeglądarka, w jakiej strukturze danych lub algorytmie używa się do odwzorowania selektora CSS na konkretny element DOM. Czy odbywa się to poprzez tablicę haszującą? W jaki sposób węzeł podrzędny DOM wie, że styl zastosowany do elementu nadrzędnego dotyczy także samego siebie. Przeglądam centrum programistyczne Mozilli i nic nie znalazłem. Wszelkie dokumentacje lub książki na ten temat byłyby bardzo doceniane ... dzięki!W jaki sposób CSS i DOM są zaimplementowane w przeglądarce?
Odpowiedz
Dopasowywanie odpowiedzi na pytanie "które selektory pasują do danego węzła", a nie "które węzły pasują do selektora". Pozwala to po prostu ocenić każdą część selektora względem bieżącego węzła (porównać nazwę węzła/ID/klasę). Decydujący kombinator i dziedziczenie są wykonywane poprzez skanowanie węzłów nadrzędnych.
Jeśli jesteś zainteresowany co dzieje się dalej, WebKit blog miał ładny serii: WebCore rendering basics
można wymienić Mozillę. Z pewnością łatwiej jest odpowiedzieć na twoje pytanie w kontekście konkretnej konkretnej implementacji, niż abstrakcyjnego pojęcia wszystkich możliwych implementacji.
Do skonstruowania selektora CSS na konkretny element DOM używa się [...] struktury danych lub algorytmu ... czy jest to realizowane przez tablicę skrótów?
Przypuszczam, że bezpośrednia odpowiedź na twoje pytanie, dla FF2, prawdopodobnie będzie w style directory kodu źródłowego firefox. Wyszukiwanie w tym katalogu dla "hashtable" daje 111 wyników w 7 plikach.
Jestem przekonany, że hashtables są ogólnie związane z niektórymi procesami związanymi z renderowaniem stylów CSS.
Krótka odpowiedź na twoje pytanie brzmi: "Tak, ale jest w tym coś więcej niż tylko tabele mieszania".
Więc tutaj są rzadkie docs:
- http://www.mozilla.org/newlayout/doc/style-system.html
- https://developer.mozilla.org/en/Mozilla_Style_System
Od swoje pytanie wydaje się, że należy najpierw dowiedzieć się więcej na temat CSS ma pracować (np co jest specyfika reguły, styl obliczeniowy).
W3C zapewnia ogólne podejście z punktu widzenia definicji, które znajdę informacyjny:
Jestem bardzo świadomi tego, jak CSS działa w odniesieniu do orzekania specyfika, styl obliczeniowy. Interesowały mnie szczegóły faktycznego wdrożenia silnika renderującego. Twoja odpowiedź nie rzuca żadnego światła w tym aspekcie. – Jlam
@Jlam: Dzięki, że wróciłeś 3,5 roku później, aby mi to powiedzieć! Przykro mi, jeśli cię uraziłem, ale twoje pytanie nie wyjaśniło tak dobrze i naprawdę musisz znać CSS przed zagłębieniem się w implementację. FWIW, nauczyłem się podstaw działania systemu stylu mozilli czytając te strony, a następnie poprzez implementację powiązaną z odpowiedzią Ewana. – Nickolay