Zagnieżdżanie


Original: http://webtips.dan.info/nesting.html

WSKAZÓWKA: Zawsze elementy HTML gniazdo prawidłowo! Zasadniczo oznacza to, należy zamknąć rzeczy w odwrotnej kolejności je otworzyło.

Ptaki to zrobić, pszczoły nie zrobić (po prostu wyrwać się z ula), i HTML autorzy muszą to zrobić, jeśli chcą swoje strony, aby mieć poprawny składni. To się nazywa „zagnieżdżanie“ i opisuje powiązania strukturalne z różnych elementów ograniczonej zamykając i otwierając tagi w dokumencie HTML.

Co to jest zagnieżdżanie?

Podstawową zasadą jest to, że dokument HTML składa się z wielu elementów, które są pojemniki z zawartością z liter i innych elementów, które mogłyby „Nested“ w nich. Istnieją różne zasady składni o jakiego rodzaju elementy mogą zawierać jakiego rodzaju innych elementów (w zasadzie, „blokowych“ elementy jak

może zawierać znaków poziomie elementów, takich jak i , ale nie na odwrót), ale najważniejszą zasadą jest to, że elementy muszą być zawsze zawarte w całości w innych elementach, nie pokrywały się. Są jak te rosyjskie lalki, które zawierają inne lalki, jeden w ramach drugiego, nie można mieć lalkę, która jest pół-zawarte w jednej innej lalki i pół zawarte w trzecim. To albo wszystko albo na całość.

Web deweloperów, którzy nie rozumieją tej zasady często myślą znaczników w sposób HTML puryści wyśmiewają jako „zupa znaczników“. W ten sposób myślenia, znaczniki są „formatowania polecenia“ wykonywane kolejno przez przeglądarkę, powodując konkretne działania, które należy wykonać, jak „kolei na pogrubioną czcionką“, „wyłączyć kursywy“ itp. Biorąc to widok, można produkować ten kawałek nieprawidłowym formacie HTML kod:

To odważne i jest to również italic , ale co to jest?

„Tag Soup“ deweloperzy oczekują ostatnie cztery słowa powyżej, aby być zapisane kursywą nie śmiałych, ponieważ boldfacing został „wyłączony“ przez , ale italicizing nadal jest „włączony“. Ale to naprawdę nie jest jak HTML działa. The B i elementy tutaj zostały ustanowione w sposób nakładania, co jest naruszeniem HTML gniazdujących zasad. Więc on tylko się domyślać, jak przeglądarka może faktycznie renderowania tekstu. Wszelkie rendering będzie oparty na przeglądarce zasad korekcji błędów, a nie na specyfikacji HTML, w których funkcja takiego zniekształconego kodu, jest to nieokreślone. Więc może się znacznie różnić między różnymi przeglądarkami, nawet jeśli wszystkie przeglądarki śledzić widowisko. Niektóre wersje Netscape, na przykład, traktuje się tag jakby to było , a tag ona jak gdyby , zamykając tym elementy w kolejności prawidłowo zagnieżdżonego . Tak więc końcowa część zdania zakończył się w odważnych nie kursywa, chyba nie tego, co autor web przeznaczone. Inne przeglądarki mogą robić inne rzeczy w ich próbach error-prawidłowe. Nie należy polegać na ich robić, co chcesz, użyj poprawnego kodu, aby rozpocząć!

Oczywiście, można się jeszcze gorzej niż powyższym przykładzie. Ktoś pisał na grupie dyskusyjnej HTML authoringu, że miał problemy z czcionkami nie pokazuje się w zamierzonych kolorów w niektórych przeglądarkach. Okazało się jego strona była pełna długiej sekwencji znaczników takich jak

Nagłówek

… ustawienie koloru na czerwony, potem czarny, i tak dalej, bez jednego znacznika FONT zamknięcia w pęczek. To wyraźnie pochodzi od błędnego myślenia, że ​​tagi były polecenia, aby zmienić kolor, co może być zatrzymany w kodzie nigdzie autor chce coś wymyślić w innym kolorze niż to, co byli przed nim. Czasami może to faktycznie działa, w zależności od korekcji błędów przeglądarki, ale nie można na to liczyć. W przypadku witryny wymienionej na grupie dyskusyjnej, Firefox udało się kolory odpowiednie dla wielu pozycjach, a następnie niektóre stos przepełniła czy coś, a reszta strony pokazywał się z czarnego tekstu, niezależnie od kolejnych znaczników czcionki. Prawidłowy sposób myśleć tagów czcionka jest, że otwieranie i zamykanie tagów o rozgraniczenie elementu FONT zakres tekstu, który ma być wykonywane w tym kolorze. Ponadto, ponieważ charakter elementu FONT to wyrównać i nagłówki, takie jak H2 są blokowy, gdy nie można zagnieżdżać w ciągu pierwszych. Powinieneś mieć swoją otwierających i zamykających znaczników czcionki w elemencie H2 … lub, jeszcze lepiej, zrezygnować z tagami FONT całkowicie i używać klas stylów sugerować kolorów nagłówków. (Niestety, grupa dyskusyjna plakat stanowczo odmówił złapać pojęcia na ten temat, myślę, że po jakimś szczypanie jego strona troche-jakoś działało, raz na jakiś czas, ale nadal jak źle zagnieżdżone jak zawsze.)
Dodatkowe znaki zamykające

Niektóre znaczniki zamknięcia mogą zostać pominięte. Na przykład, akapit rozpoczyna się

i zakończył się

, ale tag zamykający może być pominięta. Powodem jest to, że punkty nie mogą być zagnieżdżone w innych punktach, więc otwarcie

do następnego akapitu można założyć przez przeglądarkę, aby zamknąć również poprzednim akapicie. Wszelkie inne blokowe otwarcie lub tag zamykający może również założyć do zamknięcia ust, które jest w toku, kiedy takie tag zostanie osiągnięty, ponieważ to narusza gniazdowania zasady ust kontynuację w taki tag.

Nawiasem mówiąc, w bardzo najwcześniejszego wdrożenia HTML, czasami określane jako „HTML 1.0“, choć nigdy nie było formalnej spec tej wersji (nie doszło do momentu HTML 2.0), tag pkt był pusty „pkt złamać“ znacznie jak
jest podział wiersza. Nie ma takiego tag jako
, od nowej linii jest „pusty tag“, który nie jest kontener. Tag ustęp stosuje się w ten sposób, ale w HTML 2.0 został zmieniony za pojemnik taki jest teraz. Jednak niektóre z pierwszych ćwiczeń na rozwój HTML były oparte na HTML 1.0 i traktowane

pustym „break punkcie“, a mało ludzi nauczył go w ten sposób i uczył innych, same (długo po to przestarzałe), że niewłaściwe z

jako „przerwy ust“ zamiast „pojemnika ust“ jest nadal powszechne. I nawet używany to w ten sposób się na początku, ale zmusić się, aby użyć tagu poprawnie I w końcu zaczął praktykę zawsze przy użyciu zamknięcia

tag, choć jest to opcja, w celu upewnienia się, że utrzymanie prawidłowego Sposób myślenia w odniesieniu do elementu jako pojemnik z początkiem i końcem. Można powiedzieć, że deweloper witryna ma przestarzałą postawę wobec znaczników akapitu, jeśli okaże się, że tagi

są zawsze na końcu ust, i nie ma jednej przed pierwszym ust.

Inne opcjonalne znaczniki zamykające są

i

tagi na końcu wierszy tabeli i elementów. Ale nie należy pomijać je tak, ponieważ niektóre przeglądarki znane bałagan w renderingu tabel z nich nie znaleziono. I pamiętaj, że zamykający

tag w tabeli nie jest opcjonalne, a niektóre przeglądarki (zwłaszcza Netscape) nie pokaże użytkownikowi jakichkolwiek treści tabeli w ogóle, jeśli tag zamykający jest pominięty.

Mam do kawałka online argumentu raz z kimś, kto opowiadał, że HTML standardy powinny zostać zmienione, aby umożliwić bardziej pobłażliwe składni w obszarach lęgowych i wymagane tagów zamykających. Problemem jest to, że zmiany pragnęła były w zasadzie wykluczają się wzajemnie, jeśli masz łagodniejsze, umożliwiając złym gniazdowania, to tym bardziej trudne do jednoznacznego określenia punktu, w którym można wnioskować na koniec elementu w przypadku braku wyraźne tag zamykający. A sądząc rzeczywistej składni niektóre z jej własnych stron internetowych, ona widocznie uważa, że ​​zamknięcie

tag powinien wywnioskować obecność znacznika

otwarcia następnej tabeli na stronie. Ale to niemożliwe, ponieważ tablice mogą gnieździe wewnątrz siebie; wszelkie nowe zasady składni wywnioskować zamykania stół w ten sposób by „złamać“ tysiące stron istniejących, które opierają się na zagnieżdżone tabele. Czy korzystanie z tabel zagnieżdżonych do układu strony jest to dobry pomysł, to kolejny temat do (ogrzewany) debaty, ale faktem jest, że istnieje wiele stron, które obecnie nie robić, i to nie jest dobry pomysł, aby wprowadzić nowy standardu HTML, który sprawia, że ​​wszystko przestaje działać, to narusza koncepcję maksymalizacji zgodności pomiędzy kolejnymi standardami wersjach tak, aby w możliwie największym stopniu, stare przeglądarki można jeszcze zobaczyć nowe strony i nowe przeglądarki można jeszcze zobaczyć stare strony, z podstawową zawartością nienaruszone, nawet jeśli najnowsze dzwonki i gwizdki nie będzie działać w takich przypadkach.

Comments are closed.