Newbie: "<br>" Tag schliessen != Tag offen lassen?

Hallo zusammen

Bin momentan im HTML-Lernprozess und mir ist etwas aufgefallen wofür ich keine sinnvolle Erklärung finde. Ich habe gelesen das man den "<br>" Tag nicht zwingend mit "</br>" schliessen muss, dies jedoch empfohlen wird, da sonst Probleme mit XML usw. auftauchen können. Für mich heisst das soviel wie: Egal ob ich den Tag schliesse oder nicht, das visuelle Ergebnis sollte das selbe sein. Jedoch habe ich das kurz getestet und bemerkt das es trotzdem einen Unterschied macht ob ich den "<br>" Tag offen oder geschlossen lasse. Im Falle eines offenen Tags gibt es lediglich einen Zeilenumbruch während es bei einem geschlossenen Tag gleich einen neuen Absatz darstellt. Wenn ich jetzt in Zukunft nur einen Zeilenumbruch darstellen möchte aber die Umstände verlangen dass der <br> Tag geschlossen wird, ist das dann nicht mehr möglich? Hat jemand eine logische Erklärung dafür?

Gruss

  1. Tach!

    Ich habe gelesen das man den "<br>" Tag nicht zwingend mit "</br>" schliessen muss, dies jedoch empfohlen wird, da sonst Probleme mit XML usw. auftauchen können.

    Ist denn bei dir XML ein Anwendungsfall? Solange du damit nichts machst, kannst du XML ignorieren. Die Wahrscheinlichkeit, dass XML bei Webseiten eine Rolle spielt, ist äußerst gering.

    Für mich heisst das soviel wie: Egal ob ich den Tag schliesse oder nicht, das visuelle Ergebnis sollte das selbe sein.

    Ja, weil br als inhaltsleer definiert ist und deshalb niemals in die Verlegenheit kommen wird, einen solchen zu umschließen. Deswegen wissen die HTML-Parser auch, dass da keinen End-Tag erwarten können. Und das betrifft auch andere Elemente, wie input, img oder hr.

    Jedoch habe ich das kurz getestet und bemerkt das es trotzdem einen Unterschied macht ob ich den "<br>" Tag offen oder geschlossen lasse. Im Falle eines offenen Tags gibt es lediglich einen Zeilenumbruch während es bei einem geschlossenen Tag gleich einen neuen Absatz darstellt.

    Dann schau mal in die Entwicklertools des Browsers (Rechtsklick auf den "Absatz" und "Element untersuchen"), was der Browser da interpretiert hat. Vielleicht hat er zwei <br> angenommen.

    Wenn ich jetzt in Zukunft nur einen Zeilenumbruch darstellen möchte aber die Umstände verlangen dass der <br> Tag geschlossen wird, ist das dann nicht mehr möglich?

    Es wird keine (technisch fundierten) Umstände geben, die das verlangen. Das kann ich dir guten Gewissens in die Zukunft schauend prophezeien.

    dedlfix.

    1. Danke für die Antwort. Der Browser hat tatsächlich <br></br> als 2x <br></br> interpretiert (er schliesst diesen Tag also automatisch). Ich werde den Vorschlag von Bobby übernehmen und einfach den Tag in sich selbst schliessen.

  2. Moin,

    Jedoch habe ich das kurz getestet und bemerkt das es trotzdem einen Unterschied macht ob ich den "<br>" Tag offen oder geschlossen lasse. Im Falle eines offenen Tags gibt es lediglich einen Zeilenumbruch während es bei einem geschlossenen Tag gleich einen neuen Absatz darstellt.

    Wenn ich jetzt in Zukunft nur einen Zeilenumbruch darstellen möchte aber die Umstände verlangen dass der <br> Tag geschlossen wird, ist das dann nicht mehr möglich? Hat jemand eine logische Erklärung dafür?

    <br></br> erzeugt tatsächlich einen größeren Umbruch. Dies ist aber auch nicht nötig für die Validität. Schließe das BR in sich selbst <br/>. Dann ist es geschlossen und erzeugt nur einen Zeilenumbruch

    Siehe: https://jsfiddle.net/veoc36fv/

    Gruß Bobby

    --
    -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <- ### Henry L. Mencken ### -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <- ### Viktor Frankl ### ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
    1. Tach!

      <br></br> erzeugt tatsächlich einen größeren Umbruch.

      Wenn du mal "Element untersuchen" nimmst, wirst du sehen, dass das so nicht stimmt (zumindest für Firefox und Chrome). Das </br> wird augenscheinlich als Schreibfehler interpretiert und stattdessen ein weiteres <br> ins DOM eingefügt. Das sind dann also zwei Umbrüche und damit nur eine Leerzeile.

      dedlfix.

      1. Moin,

        Das sind dann also zwei Umbrüche und damit nur eine Leerzeile.

        ok, im Fiddle sah es nach einem Absatz aus. ;)

        Gruß Bobby

        --
        -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <- ### Henry L. Mencken ### -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <- ### Viktor Frankl ### ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
    2. Danke für den Vorschlag. Werde diesen übernehmen.

  3. Hallo

    Jedoch habe ich das kurz getestet und bemerkt das es trotzdem einen Unterschied macht ob ich den "<br>" Tag offen oder geschlossen lasse. Im Falle eines offenen Tags gibt es lediglich einen Zeilenumbruch während es bei einem geschlossenen Tag gleich einen neuen Absatz darstellt. Wenn ich jetzt in Zukunft nur einen Zeilenumbruch darstellen möchte aber die Umstände verlangen dass der <br> Tag geschlossen wird, ist das dann nicht mehr möglich? Hat jemand eine logische Erklärung dafür?

    Wenn du dein HTML als XML verarbeiten willst, kannst du auch HTML5 weiterhin nach den XML-Regeln notieren. Dazu gehört, inhaltslose Elemente, wie es z.B. auch br ist, zu schließen. Dies erfolgt mit dem Slash am Ende nach einem Leerzeichen: <br />. Es gibt noch eine andere, allerdings unübliche Schreibweise: <br/>. Deine Schreibweise wurde in der Vergangenheit auch hin und wieder angesprochen, ob sie jemals Bestandteil des XHTML-Standards war, kann ich auf die Schnelle nicht nachvollziehen. In den von mir benutzten Browsern funktionierte sie jedenfalls nie. Das dürfte auch der Grund sein, warum in deinem Browser <br></br> als <br><br> interpretiert wird.

    Tschö, Auge

    --
    Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
    Terry Pratchett, „Gevatter Tod“
    1. Danke für die Antwort. Hat sich für mich geklärt. Ich werde den Tag einfach in sich selbst schliessen.

      1. Hallo Newbie,

        Danke für die Antwort. Hat sich für mich geklärt. Ich werde den Tag einfach in sich selbst schliessen.

        Du darfst in HTML5 auch einfach <br> schreiben.

        Bis demnächst
        Matthias

        --
        Signaturen sind bloed (Steel) und Markdown ist mächtig.
        1. Alles klar danke.

    2. @@Auge

      Wenn du dein HTML als XML verarbeiten willst, kannst du auch HTML5 weiterhin nach den XML-Regeln notieren. Dazu gehört, inhaltslose Elemente, wie es z.B. auch br ist, zu schließen.

      So weit richtig.

      Dies erfolgt mit dem Slash am Ende nach einem Leerzeichen: <br />. Es gibt noch eine andere, allerdings unübliche Schreibweise: <br/>.

      Wieso sollte die Schreibweise ohne Leerzeichen unüblich sein? Ich verwende sie seit Jahren.

      Früher™ hatten Browser mal Probleme mit <br/> etc. (womöglich sahen die HTML-Parser br/ incl. / als Elementtypen an), aber das ist lange her.

      Aus XML-Sicht ist das Leerzeichen optional. [XML]

      Deine Schreibweise wurde in der Vergangenheit auch hin und wieder angesprochen, ob sie jemals Bestandteil des XHTML-Standards war, kann ich auf die Schnelle nicht nachvollziehen.

      Natürlich ist sie das. In XML (und damit auch in XHTML) sind <br />, <br/> und <br></br> völlig äquivalent.

      In den von mir benutzten Browsern funktionierte sie jedenfalls nie.

      Ich weiß nicht, was du für Browser benutzt, aber in allen von mir benutzten funktioniert sie problemlos (Firefox, Safari, Chrome. Ich schmeiß jetzt keine VM für IE an; vermute aber auch dort keine Probleme). Du musst dazu freilich dafür sorgen, dass der XHTML-Code auch als XHTML (d.h. vom XML-Parser) verarbeitet wird (Medientyp application/xhtml+xml o.ä.).

      Das dürfte auch der Grund sein, warum in deinem Browser <br></br> als <br><br> interpretiert wird.

      Ja, der HTML-Parser tut das so.

      LLAP 🖖

      Ergänzung: Dieses Posting soll keine Empfehlung sein, polyglotten HTML-Code als XML zu verarbeiten. Und natürlich auch nicht, <br></br> im Code zu verwenden.

      --
      Ist diese Antwort anstößig? Dann könnte sie nützlich sein.
      1. Hallo

        Dies erfolgt mit dem Slash am Ende nach einem Leerzeichen: <br />. Es gibt noch eine andere, allerdings unübliche Schreibweise: <br/>.

        Wieso sollte die Schreibweise ohne Leerzeichen unüblich sein?

        Weil, wie du weiter unten selbst schreibst, ältere Browserversionen mit <br/> nicht umgehen konnten, sind fast alle Beispiele mit <br /> notiert. Das führt die meisten HTML-Schreiber zu genau dieser Notation. Wenn diese Schreibweise in den allermeisten Fällen benutzt wird [1], also die Übliche, in diesem Fall mMn sogar die fast ausschließlich Benutzte ist, sind andere mögliche Schreibweisen demnach unüblich. Ob das in XML funktioniert, ist in Hinsicht auf HTML irrelevant, weil die Wenigsten ihr HTML als XML verarbeiten.

        Früher™ hatten Browser mal Probleme mit <br/> etc. (womöglich sahen die HTML-Parser br/ incl. / als Elementtypen an), aber das ist lange her.

        Aus dieser Erfahrung heraus wird in XHTML üblicherweise <br /> benutzt.

        In den von mir benutzten Browsern funktionierte sie jedenfalls nie.

        Ich weiß nicht, was du für Browser benutzt, …

        Du hast noch nie von Dingen gelassen, weil sie deiner Erfahrung nach nicht funktionierten, als du sie probiertest, stattdessen etwas Gleichwertiges benutzt und die gelassenen Dinge, weil es nie wieder einen Grund dafür gab, es zu tun, nie wieder probiert?

        Bitteschön, extra für dich eine Konkretisierung: In den von mir benutzten Browsern funktionierte sie jedenfalls nie, als ich sie probierte.

        Das dürfte auch der Grund sein, warum in deinem Browser <br></br> als <br><br> interpretiert wird.

        Ja, der HTML-Parser tut das so.

        Über genau den reden wir [2] hier die ganze Zeit.

        Tschö, Auge

        --
        Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
        Terry Pratchett, „Gevatter Tod“

        1. Mir ist im HTML-Umfeld bisher praktisch keine andere Schreibweise als <br /> begegnet, weshalb ich davon ausgehe, dass sie in den allermeisten Fällen benutzt wird. ↩︎

        2. ausnehmlich dir ↩︎

        1. @@Auge

          Weil, wie du weiter unten selbst schreibst, ältere Browserversionen mit <br/> nicht umgehen konnten, sind fast alle Beispiele mit <br /> notiert. Das führt die meisten HTML-Schreiber zu genau dieser Notation.

          Wovon redest du? Von HTML-Schreibern? Dann ist wohl weder <br /> noch <br/> die übliche Schreibweise, sondern <br>.

          Von Schreibern, die Wert auf polyglottes HTML legen? Die also wissen, was sie tun? Die auch wissen, dass Browser, die <br/> ohne Leerzeichen nicht richtig interpretieren, inzwischen irrelevant sind?

          Aus dieser Erfahrung heraus wird in XHTML üblicherweise <br /> benutzt.

          XHMTL wird üblicherweise gar nicht benutzt.

          Ja, der HTML-Parser tut das so.

          Über genau den reden wir [ausnehmlich dir] hier die ganze Zeit.

          Nein, du nicht. Dein Absatz beginnt mit „Wenn du dein HTML als XML verarbeiten willst …“

          Dass du innerhalb des Absatzes einen Gedankensprung machst, ohne diesen irgendwie kenntlich zu machen, kann ich nicht ahnen.

          LLAP 🖖

          --
          Ist diese Antwort anstößig? Dann könnte sie nützlich sein.
  4. Hi,

    Bin momentan im HTML-Lernprozess und mir ist etwas aufgefallen wofür ich keine sinnvolle Erklärung finde. Ich habe gelesen das man den "<br>" Tag nicht zwingend mit "</br>" schliessen muss,

    Das Tag solltest Du auf jeden Fall schließen. Sprich: das > nach dem br hinschreiben.

    Das Element dagegen braucht nicht geschlossen zu werden - es reicht das öffnende Tag (daß das schließende Tag Ärger macht, weil es fehlinterpretiert wird als zweites öffnendes br, wurde ja schon erwähnt).

    @Matthias Apsel hat das mal schön bunt aufgemalt: Unterschied Element - Tag

    cu,
    Andreas a/k/a MudGuard

    1. Danke für die Klarstellung und den Link. Das mit der Fehlinterpretation hat mich verwirrt aber das hat sich geklärt.

  5. Hallo,

    nur zur Ergänzung: in den meisten Fällen kannst, oder besser sollst (!) du <br> im HTML-Markup vermeiden. <br> wird oft im Anfangsstadium fälschlicherweise dazu eingesetzt Lücken zwischen Textblöcken zu erzeugen.

    MDN weist explizit darauf hin: https://developer.mozilla.org/de/docs/Web/HTML/Element/br

    <br> nicht verwenden um die Lücken zwischen Text zu vergrößern; stattdessen sollte die CSS margin Eigenschaft oder das <p> Element verwendet werden.

    Ebenfalls aus MDN:

    [<br>] Muss ein Start-Tag und darf kein Ende-Tag besitzen. In XHTML Dokumenten wird das Element als <br /> notiert.

    lg mark

    1. Hi,

      nur zur Ergänzung: in den meisten Fällen kannst, oder besser sollst (!) du <br> im HTML-Markup vermeiden.

      ja und nein ... Ja, die Empfehlung ist im Prinzip richtig, weil br tatsächlich oft "missbraucht" wird. Und doch Nein, denn so vehement, wie oft von der Verwendung von br abgeraten wird, halte ich das auch wieder für falsch.

      Tatsächlich halte ich br genau dann für richtig und angebracht, wenn man an einer bestimmten Textstelle zwar einen gewissen Schnitt vermitteln will, aber nicht so radikal, dass gleich ein neuer Absatz gerechtfertigt wäre. Ich setze beide Varianten sehr gezielt und meist wohlüberlegt ein - auch in Textverarbeitungen, wo das Pendant zum br-Element oft das Steuerzeichen Shift-Enter ist.

      <br> wird oft im Anfangsstadium fälschlicherweise dazu eingesetzt Lücken zwischen Textblöcken zu erzeugen.

      Ja. Das sind dann aber meist die gleichen Leute, die auch z.B. in Word Abstände durch leere Absätze oder Einrückungen durch ein paar Leerzeichen am Zeilenanfang realisieren. Und ich weiß, wie schwer man manchen von ihnen diese Unsitte abgewöhnen kann ...

      So long,
       Martin

      1. @@Der Martin

        Tatsächlich halte ich br genau dann für richtig und angebracht, wenn man an einer bestimmten Textstelle zwar einen gewissen Schnitt vermitteln will, aber nicht so radikal, dass gleich ein neuer Absatz gerechtfertigt wäre.

        Ich halte es auch dann nicht für angebracht. HTML ist dazu da, Inhalte auszuzeichnen, nicht Lücken. (Beispiel mit span, in anderen Fällen sind custom elements angebracht)

        LLAP 🖖

        --
        Ist diese Antwort anstößig? Dann könnte sie nützlich sein.
  6. @@Newbie

    Jedoch habe ich das kurz getestet und bemerkt das es trotzdem einen Unterschied macht ob ich den "<br>" Tag offen oder geschlossen lasse. Im Falle eines offenen Tags gibt es lediglich einen Zeilenumbruch während es bei einem geschlossenen Tag gleich einen neuen Absatz darstellt.

    Nein. Zwei Zeilenumbrüche ist etwas anderes als ein Absatz.

    Zwei Zeilenumbrüche erzeugen eine Leerzeile, die genauso hoch ist wie die anderen Zeilen.

    Zwischen zwei Absätzen kann ein Abstand sein. Der kann auch (des vertikalen Rhythmus wegen) per Stylesheet so groß gewählt werden, dass der Abstand der Grundlinien der letzte Zeile des ersten Absatzes und der ersten Zeile des folgenden Absatzes der doppelten Zeilenhöhe entspricht. Per Browserdefault ist er jedoch geringer.

    Der Abstand zwischen Absätzen kann auch auf 0 gesetzt werden, wie im Buchdruck üblich. (Erste Zeile jedes Absatzes dann eingerückt.)

    LLAP 🖖

    --
    Ist diese Antwort anstößig? Dann könnte sie nützlich sein.