2011-09-09 20 views
95

Czy w HTML5 nadal potrzebujemy końcówki, jak w XHTML?Czy nadal potrzebujemy ukośników końcowych w HTML5?

<img src="some_image.png" /> 

validator.w3.org nie skarżą gdybym upuścił go, nawet ostrzeżenie. Ale niektóre dokumenty online wydają się wskazywać, że slash końcowy jest nadal wymagany dla znaczników, takich jak img, link, meta, br, itp.

+4

* Nadal *? Czy jakakolwiek wersja HTML wymagała zamknięcia wszystkich tagów? – Gabe

+7

@Gabe XHTML 1.0 Strict go potrzebuje. Mam na myśli, że strony internetowe ładują się zwykle dobrze, ale są uważane za nieważne. – CaptSaltyJack

+2

Tak, ale to X jest nie tylko dlatego, że X jest fajny, jest dość luka między HTML i XHTML. – delnan

Odpowiedz

71

img znaczniki są elementami pustki, więc nie potrzebują znacznika końcowego.

Odpada elementy miejsca, podstawa, Br, kol, komendy, osadzanie, HR IMG wejściowe, generacji kluczy, łączenia meta param, źródło, śledzenie wbr

...

Elementy pustki mają tylko znacznik początkowy; znaczniki końcowe nie mogą być określone dla elementów pustych.

W3C | WHATWG

W związku z tym nie jest to ścisłe parsowanie w HTML5, więc nie zaszkodzi.

+0

Po prostu ciekawy, ponieważ mój edytor (Komodo) wcięcia, jeśli wpiszę "" i naciśnij enter. Oczekuje on końcowego ukośnika w trybie HTML5 i chciałem upewnić się, że to było prawidłowe zachowanie. – CaptSaltyJack

+5

To jest HTML, a nie XHTML, więc nie jest wymagane. Na szczęście parsery nadal dobrze rozumieją ukośne kreski w stylu XHTML, więc nie ma nic złego w pozostawieniu tego. Oznacza łatwiejszą konwersję z powrotem na XHTML, jeśli to konieczne z jakiegokolwiek powodu. – Nightfirecat

+0

To naprawdę dziwne. Dlaczego 'schema.org' ma końce tagów na imgs? Spójrz tutaj: 'http: // schema.org/Person' –

1

Nie. HTML nigdy tego nie wymagał, nawet przed HTML5. Jeśli zamierzasz używać XHTML z funkcjami HTML, to tak, jest to konieczne.

+1

XHTML to nie to samo co HTML5, prawda? Jeśli mój DOCTYPE jest po prostu "html", nie potrzebuję końcowych ukośników, prawda? – CaptSaltyJack

+0

@CaptSaltyJack: Prawidłowo. – Ryan

+0

@CaptSaltyJack - HTML5 obejmuje zarówno zwykły HTML, jak i XHTML. XHTML wymaga zamknięcia wszystkich elementów, ale w przypadku przeglądarek metoda doctype nie ma wpływu na sytuację. Aby uzyskać pełniejsze wyjaśnienie, zobacz http://stackoverflow.com/questions/2662508/html-4-html-5-xhtml-mime-types-the-definitive-resource/2664082#2664082 – Alohci

-13

WSZYSTKIE znaczniki muszą być zamknięte (przez samo zamknięcie lub przez oddzielne zamknięcie). Niektóre z nich zamykają się automatycznie w HTML4 (np. Tag <img>), podczas gdy inne (takie jak tag <p>) wymagają osobnych znaczników zamykających. Pamiętaj, że WSZYSTKIE znaczniki muszą być zamknięte lub przeglądarka (jeśli jest ściśle zgodna) będzie zawierać błędy. Oznacza to, że nawet znaczniki, które nie mają zawartości między otwarciem a zamknięciem, MUSZĄ być zamknięte w taki czy inny sposób. Poniżej zbadam tag <img>, ponieważ nie ma on żadnej treści między otwarciem a zamknięciem.

W HTML4 jest samozamykający. Nie oznacza to, że się nie zamyka, ponieważ należy pamiętać, że wszystkie znaczniki ALL muszą zostać zamknięte. Po prostu zamyka się samą swoją obecnością. Tak więc w HTML4 tag <img> jest po prostu: <img>

W XHTML NIE jest samozamykający. Oznacza to, że musisz podać osobny znacznik zamykający w następujący sposób: <img></img>

Następnie w HTML5 ktoś w końcu został sprytny i zdecydował się na zamknięcie znacznika, który nie zawiera treści między otwarciem a zamknięciem, bardzo prostym zadaniem. Użyj tylko jednego tagu, ale ukośnik przed znakiem wyższego niż: tak: <img />

Jest to również w pełni zgodne z HTML4. Jeśli nie używasz XHTML (który wymaga osobnego znacznika zamykającego) i nie masz pewności, czy Twój kod używa standardów HTML4 czy HTML5. Najlepiej jest ZAWSZE mieć slash zamykający przed znakiem większym niż znak dla tagów, które nie mają treści między otwarciem a zamknięciem. W ten sposób ZAWSZE będzie poprawnie wyświetlany w KAŻDEJ przeglądarce.

Oto przykład poprawnie napisanego kodu HTML, który ma wysoki stopień zgodności ze wszystkimi przeglądarkami.

<!DOCTYPE html> 
<html> 
<head> 
<title>test website</title> 
</head> 
<body> 
<p>This is a test.</p> 
<img src="testpic.jpg" /> 
</body> 
</html> 
+5

Czy możesz dołączyć cytat: Jestem pewien, że ta informacja jest niepoprawna, nigdy nie jest ważna, bez względu na typ dokumentu. – CherryFlavourPez

+2

@CherryFlavourPez Ta informacja jest bardzo błędna i powinna zostać zignorowana. JEDNAKŻE, aby wyjaśnić sytuację ponownie '' w XHMTL. Tak, to jest poprawna XHMTL, ale aby poprawnie przeanalizować przeglądarkę, musi zostać wysłana jako XML MIME: application/xhtml + xml. http://www.w3.org/International/articles/serving-xhtml/ Nawet jeśli ustawisz poprawny DOCTYPE, jeśli Twój serwer WWW wysyła strony HTML jako MIME: text/html, przeglądarki klienta będą używać parsera HTML i mogą uzyskać zmieszany.Dlatego zalecany jest '' dla XHTML. Zauważ, że jest to sprzeczne z odpowiedzią. – ToolmakerSteve

63

W HTML 5, ukośnik zamykający jest opcjonalnie na pustych elementów, takich img (dodaję to, bo tylko aktualnie akceptowane odpowiedź mówi: „znaczniki końcowe nie muszą być określone dla elementów Void”, a nie nie dotyczy zamykających ukośników w pustych elementach).

Powołując z http://www.w3.org/TR/html5/syntax.html#start-tags (nr 6):

wtedy, gdy element jest z pustych elementów, albo wtedy, gdy element jest elementem obcy, a następnie może być pojedynczym "/" (U + 002F). Ta postać nie ma wpływu na puste elementy, ale na obcych elementach oznacza znacznik początkowy jako samozamykanie.

0

Z W3C:

Odpada elementów: powierzchnia, podstawa, Br, COL umieszczenia, HR img wejściowego generacji kluczy łącza, meta param, źródło toru, wbr

" Elementy pustki mają tylko znacznik początkowy, tagi końcowe nie mogą być określone dla elementów pustych. "

http://www.w3.org/TR/html5/syntax.html#void-elements

Powiązane problemy