2014-04-28 39 views
12

Czy istnieje otwarte lub ogólne wdrożenie kodu CSS, które można zastosować do dowolnej hierarchii wyświetlania? Próbuję utworzyć dla hierarchii wyświetlania Flash w AS3.Jak i kiedy reguły CSS są stosowane do hierarchii wyświetlania?

Ciekawi mnie procedura zastosowana do zastosowania stylów CSS do hierarchii wyświetlania. Wydaje mi się, że niektóre lub wszystkie selektory będą musiały być ponownie zastosowane do całej listy wyświetlania za każdym razem, gdy obiekt wyświetlany zostanie dodany, usunięty lub przesunięty, a także gdy wystąpią zdarzenia, takie jak zmiany ostrości, biorąc pod uwagę istnienie selektorów jak "first-child" i pseudo-selektory typu ": focus".

Czy początkowe zastosowanie stylów obejmuje skanowanie całej listy wyświetlania po jednym elemencie naraz, stosowanie stylów lub czy wszystkie obiekty będą posortowane z góry i powiązane z określonymi kategoriami reguł? Czy coś takiego.

Naprawdę szukam dobrego ogólnego zasobu na prawdziwą implementację.

Aktualizacja: prawdopodobnie szukam czegoś na poziomie this, ale nie wiem, czy to jest stan techniki: "Hierarchiczne ograniczenia zapewniają prosty, jednolity sposób zrozumienia dużej części specyfikacji CSS 2.0 Ten punkt widzenia sugeruje również, że rozwiązania do rozwiązywania ograniczeń udostępniają naturalną technikę implementacji Każda właściwość stylu i umieszczenie każdego elementu w dokumencie może być modelowane przez zmienną Ograniczenia dotyczące tych zmiennych wynikają z możliwości przeglądarki, domyślnego zachowania układu wynikającego z rodzaju element, ze struktury drzewa dokumentu oraz z zastosowania reguł stylu. Ostateczny wygląd dokumentu określa się, znajdując rozwiązanie tych ograniczeń. " Co nasuwa pytanie, jak i kiedy rozwiązać ograniczenia.

+0

Flex używa CSS z MXML, choć nie jestem pewien, czy jego realizacja CSS jest open source (prawdopodobnie jest). – BoltClock

+0

Zajrzę do tego. IBM ma fajny napis na CSS w Flex: http://www.ibm.com/developerworks/web/library/wa-cssflex/index.html Zbudowałem własny parser listy wyświetlania XML, który będę obsługiwał obsługę CSS do wkrótce. Jednym z miejsc, w którym moja implementacja będzie się różnić będzie to, że style zostaną zastosowane zarówno do DisplayObjects, jak i TextFields. Zastanawiałem się nad zachowaniem funkcjonalności normalnych selektorów, takich jak "nazwa bloku" i "nazwa klasy", dzięki temu, że działają one wyłącznie w htmlText w TextFields, podczas gdy nowe selektory, takie jak "#instancename" i "$ instancetype", miałyby zastosowanie do nazw obiektów i typów obiektów. – Triynko

+0

Mam już zaimplementowaną obsługę inteligentnego parsowania atrybutów (w oparciu o znane pary obiektów i pary atrybutów, a także sprawdzanie obiektów dla implementacji interfejsu IAttributeParser), rozróżnianie odwołań w atrybutach (np. Inne obiekty na liście wyświetlania mogą być odwołuje się za pośrednictwem "this.objectname", odroczonego przypisania wartości referencyjnych i tekstu pola tekstowego w celu zapewnienia, że ​​odniesienia są rozwiązywane, a tekst jest przypisany jako ostatni, powiązanie danych (2-way, 1-way, 1-way-to-source), import przestrzeni nazw , wirtualne nazwy bazowe dla referencji, aliasy znaczników, konstruktory pobierające parametry itd. – Triynko

Odpowiedz

1

@Triynko, dotyczące How Browsers Work w HTML5 Rocks:

Cholera ...

WebCore prostu rzuca przełącznik globalny gdy każdy napotkany jest selektor rodzeństwa i wyłącza dzielenie styl dla całego dokumentu, gdy są obecni. Obejmuje to selektor + i selektory, takie jak: first-child i: last-child.

To jeden sposób, aby obsłużyć to, sledghammer, aby zabić muchę, będę pamiętać, aby nie używać tych selektorów, nigdy, lol.

Bardzo przydatne:

Po parsowania arkusza stylów, reguły są dodawane do jednego z kilku map hash, zgodnie z selektora. Są mapy według identyfikatora, nazwy klasy, nazwy znacznika i mapy ogólnej ... Jeśli selektor jest identyfikatorem, reguła zostanie dodana do mapy id, jeśli jest to klasa, która zostanie dodana do mapy klasy itp. Ta manipulacja ułatwia dopasowanie reguł. Nie trzeba zaglądać w każdą deklarację: możemy wyodrębnić odpowiednie reguły dla elementu z map. Ta optymalizacja eliminuje 95% reguł, więc nie muszą one być brane pod uwagę podczas procesu dopasowywania (4.1).

I @BoltClock:

Na ogół, złożone selektory są dopasowane od prawej do lewej (średnie z tych optymalizacji przebiegu), oceny każdej sekwencji proste przełączniki oraz przechodzeniu każdego syntezatora w robiąc tak.

Odniesienia