2010-07-31 10 views
28

Mein Google Fu ist heute Abend nicht fertig. Was sind die gültigen HTML-Elemente, falls vorhanden, die in einem <a>-Tag enthalten sein können?Welche Elemente können in einem <a>-Tag enthalten sein?

<a> ?? </a> 
+0

[Die MDN 'a' Seite] (https://developer.mozilla.org/en-US/docs/Web/HTML/Elem ent/a) sagt "Zulässiger Inhalt: Transparent, enthält entweder [Flussinhalt] (https: //developer.mozilla.org/de-DE/docs/Web/Guide/HTML/Content_categories # Flow_content) oder [Phrasierungsinhalt] (https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) . " – Jeroen

Antwort

27

Inline-Elemente (a, span, strong, em ua) können andere Inline-Elemente und Textknoten. Ein Anker kann einen Bereich enthalten, der einen Textknoten enthalten kann.

allgemeinen Blockelemente können enthalten Inline-Elemente und andere Block-Elemente. Im Allgemeinen können Inline-Elemente nur Daten und andere Inline-Elemente enthalten. Inhärent in diese strukturelle Unterscheidung ist die Idee, dass Blockelemente "größere" Strukturen als inline Elemente erstellen.

Von http://www.w3.org/TR/html401/struct/global.html

Wie in anderen Antworten erwähnt, können Sie nicht verschachtelt ein a in einem a.

+1

Sie können herausfinden, ob Sie ein HTML-Dokument erstellen und validieren @ http://validator.w3.org/ :) –

+0

Frage wurde tatsächlich von einer anderen SO-Frage inspiriert :) Ich mache das eigentlich nicht und sehe mich nie selbst mit einer '' innerhalb einer '' .. Danke .. noch weitere 6 Minuten, bevor ich dies markieren kann als akzeptiert – Ahmad

3

Ein <a> Tag kann jedes Inline Element neben einem anderen <a> Tag enthalten.

2

Sie kann Nur-Text- und Inline-Elemente enthalten. Inline-Elemente sind folgende:

TT | I | B | BIG | SMALL | EM | STRONG | DFN | CODE | SAMP | 
KBD | VAR | CITE | ABBR | ACRONYM | A | IMG | OBJECT | BR | 
SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO 

Aber A kann nicht in einem anderen A und SCRIPT Verschachtelung verschachtelt werden nicht senese machen.

+0

Sie haben die [formctrl] (http://www.w3.org/TR/html401/sgml/dtd.html#formctrl) Elemente dort vergessen. (Hell, wer würde ein 'select' in einem' a verwenden '?) – user123444555621

+0

Ich habe sie mit Absicht vergessen :) Es ist nicht notwendig, Formularelemente im Anker zu verschachteln. Vielleicht ohne href Attribut, aber wer benutzt es heute? :) –

+0

Warum macht das Nesting-Skript keinen Sinn? Wenn ich text/plain habe, wäre es nett, das verschachtelte Skript-Tag als Daten und nicht als Tag zu behandeln. –

2

Siehe anchor section der Spezifikation.

<!ELEMENT A - - (%inline;)* -(A)  -- anchor --> 

Der entsprechende Abschnitt ist (%inline;)* -(A), die "Alles, was in der Gruppe% inline ohne A-Elemente" bezeichnet. %inline ist ein Hyperlink, um die Erweiterung zu erleichtern.

2

Ein Anker-Tag ist ein Inline-Element, daher kann es andere Inline-Elemente enthalten (mit Ausnahme von anderen Anker-Tags).

Wenn Sie ein Blockelement in einen Anker einfügen möchten, müssen Sie ein Inline-Element verwenden und es mithilfe von CSS zusammen mit dem Anker-Tag selbst in ein Blockelement umwandeln.

Beispiel:

<a href="page.html" class="blocklink"><span>eat me</span></a> 

CSS:

.blocklink { display: block; } 
.blocklink span { display: block; } 
41

Wie von HTML 5, <a> kann nicht nur enthalten (gültig) Inline-Elemente, sondern auch Elemente blockieren usw.

W3 : http://dev.w3.org/html5/markup/a.html

+2

Schöner Fund. Es ist auch erwähnenswert, dass das übergeordnete Element ein Element sein muss, das Blockelemente enthalten darf. – remarsh

+4

Der genaue Link zu dem Absatz, der diese Frage diskutiert: http://w3c.github.io/html-reference/a.html#a-changes – Laizer