Warum HTML erfordert, dass mehrere Räume als einen einzigen Raum im Browser angezeigt?

StackOverflow https://stackoverflow.com/questions/433493

  •  10-07-2019
  •  | 
  •  

Frage

Ich habe vor langer Zeit erkannt, dass jeder Satz von Leerzeichen in einer HTML-Datei wird nur als ein einziger Raum angezeigt werden. Zum Beispiel dieses:

<p>Hello.        Hello. Hello. Hello.                       Hello.</p>

wie folgt angezeigt:

Hallo. Hallo. Hallo. Hallo. Hallo.

Das ist völlig in Ordnung, als ob Sie mehrere Räume der vorformatierte Text benötigen, können Sie einfach die

 Tag verwenden. Aber was ist der Grund? Genauer gesagt, , warum in der Spezifikation für HTML ist das?  

War es hilfreich?

Lösung

Die Räume sind in HTML verdichtet, weil es gibt einen Unterschied zwischen dem, wie HTML formatiert ist und wie sie gemacht werden. Betrachten Sie eine Seite wie folgt aus:

<html>
    <body>
        <a href="mylink">A link</a>
    </body>
</html>

Wenn die HTML-eingekerbt wurde Räume zum Beispiel verwendet wird, würde die Verbindung von mehreren Leerzeichen vorangestellt werden.

Andere Tipps

Um zu versuchen, die Adresse „warum“ es sein kann, weil HTML-basierte auf SGML die hatte es auf diese Weise festgelegt. Es wurde wiederum basierend auf GML aus den frühen 60er Jahren. Der Grund für Leerraum Handhabung könnte sehr gut, da sein, um Daten zu einer Zeit eine „Karte“ eingegeben damals, die in unerwünschter Trennung von Sätzen und Absätzen führen könnte. Ein Unterschied in der alten GML ist, dass es festgelegt, dass es zwei Räume zwischen den Sätzen zu sein hat (wie die alte Schreibmaschine Regeln), die eine precedenct etabliert hat, die Räume sind unabhängig von der Markup.

Wie bereits gesagt wurde, ist es in der HTML-Spezifikation.

Wenn Sie Leerzeichen erhalten wollen in der Ausgabe, können Sie die

 -Tag : 

<pre>This     text has              extra spaces

and

    newlines</pre>

Aber das wird auch im Allgemeinen den Text in einer anderen Schriftart angezeigt werden soll.

„Warum sind mehrere Räume auf einzelne Leerzeichen umgewandelt?“

Als erster „Warum“ Fragen sind schwer zu beantworten. Es ist in der spec. Das ist so ziemlich das Ende davon.

Beachten Sie, dass es mehrere Arten von Leerraum.

  • Leerraum zwischen den Tags. <p>\n<b>hi</b>\n</p>

  • Leerraum in dem Inhalt innerhalb von einem Tag. <p>Hi <i>everyone</i>.</p>

  • Leerraum in einem <pre> oder CDATA-Abschnitt.

Die ersten beiden sind schwer zu unterscheiden. Leerzeichen zwischen den Tags, auch in XML, sind "optional". Aber wenn Sie haben, was ein „gemischtes Inhaltsmodell“ genannt wird - tags mit Inhalt vermischte - die Subtilität „zwischen den Tags“ und „im Inhalt, sondern zwischen den Tags“ und „in dem Inhalt, aber nicht zwischen den Tags“ ist unmöglich, aus Art.

So sie es nicht in Ordnung bringen. Leerzeichen zwischen den Tags und Leerzeichen in den Inhalt ist alles optional.

Es ist nicht nur in die Spezifikation , aber es gibt einen Sinn zu. Wenn Räume nicht verdichtet wurden, würden Sie alle Ihre HTML-Datei auf einer einzigen Zeile setzen müssen. so etwas wie folgt aus:

<div>
    <h1>Title</h1>
    <p>
       This is some text
       <a href="#">Read More</a>
    </p>
</div>

Würde einige seltsame Ausrichtung mit Leerzeichen haben alle über den Ort. Der einzige Weg, es richtig, dass Code zu kompakt wäre zu erreichen, die nur schwer zu halten.

Wenn Browser dies nicht getan hat, könnte es schwierig sein, Ihren HTML-Code zu formatieren sie leicht lesbar zu machen. Zum Beispiel könnten Sie Ihren Code wie folgt formatiert werden:

<html>
<body>
    <div>
        I like to indent all content that is inside div tags.
    </div>
</body>
</html>

Wenn der Browser die acht oder so Leerzeichen vor dem Text innerhalb des div-Tag nicht ignorieren, Ihre Webseite könnte den Weg nicht sehen Sie es soll aussehen.

In der Regel werden diese Design-Entscheidungen in keiner Spezifikation dokumentiert und können nur aus Arbeitsgruppendiskussion Archiven nachgelesen werden, die öffentlich zugänglich sein geschehen, oder durch die spec Autoren selbst erklärt. Doch in diesem speziellen Fall HTML 3.2 nicht geben Sie die folgenden Schritte aus:

  

außer innerhalb Literaltext (beispielsweise das PRE Element), behandelt HTML zusammenhängende Sequenzen von Leerzeichen zu einem einzigen Leerzeichen äquivalent ist (ASCII dezimal 32). Diese Regeln erlauben den Autoren eine beträchtliche Flexibilität bei der Bearbeitung der markierten-up Text direkt. Beachten Sie, dass künftige Änderungen zu HTML kann für die Interpretation der horizontalen Tabulatorzeichen (ASCII dezimal 9) in Bezug auf eine Registerkarte Regel erlaubt durch eine zugehörige Stylesheet definiert.

Das Verhalten, das Sie heute sehen, ist natürlich viel komplizierter als das, was in HTML angegeben wurde 3.2, aber ich glaube, dass die Argumentation gilt nach wie vor. Ein Beispiel, wo diese Flexibilität kann nützlich sein, wenn Sie einen langen Absatz haben, die Sie hart-wrap und indent beabsichtigen:

<H1>Lorem ipsum</H1>
<P>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fastidii oportere
   consulatu no quo. Vix saepe labores an, pri illud mentitum et, ex suas quas
   duo. Sit utinam volutpat ea, id vis cibo meis dolorum, eam docendi
   accommodare voluptatibus no. Id quaeque electram vim, ut sed singulis
   neglegentur, ne graece alterum has. Simul partiendo quaerendum et his.

Wenn Leerzeichen nicht zusammengebrochen waren, würden Sie mit einem Absatz mit ungewöhnlich großen Lücken am Ende, wo der Text aufgrund der Vertiefung fest eingewickelt ist.

Keine andere HTML-Spezifikation ist jede Art von Argumentation hinter dieser Design-Entscheidung. Insbesondere HTML 4 nur beschreibt das Zusammendrückverhalten, und HTML5 und die lebendige spec verschieben sowohl CSS, die doesn‘ t nichts entweder erklären. Frühere Versionen von HTML enthalten auch keine Erklärung, obwohl der folgende Auszug in einem Beispiel-Schnipsel in

Einfach, es ist in der Beschreibung.

Von der HTML-Spezifikation, Abschnitt 9.1 :

  

Insbesondere Benutzerprogramme sollten   kollabieren Eingangsleerraum-Sequenzen   bei der Herstellung von Ausgangszwischenwort   Raum.

Zur Beantwortung Warum ist in der Beschreibung dieses für HTML? Sie haben die Ursprünge von HTML zu berücksichtigen.

Tim Berners-Lee entwickelt, HTML für die gemeinsame Nutzung von wissenschaftlichen Dokumenten. Er basiert auf bereits bestehenden Syntax Ideen in SGML, die auch ähnliche Behandlungen von Leerzeichen hat.

kann man sich vorstellen, dass frühere Autoren von HTML am CERN taten dies ohne die Hilfe von WYSIWYG-Tool und so die Fähigkeit Leerzeichen auf dieser Weise Hilfen Lesbarkeit solcher handgeschriebenen Quelldateien zu behandeln.

Es gibt auch eine typographische Antwort: Wörter und Sätze sollten nur einen Raum zwischen ihnen, unabhängig davon, was Ihre Eingabe Lehrer in der Schule haben, können Sie gesagt

.

Verwenden Sie ein Leerzeichen zwischen Sätzen

eine Single Wortraum zwischen den Sätzen

Die Definition / Spezifikationen von HTML eindeutig angegeben überschüssigen Leerzeichen zu ignorieren.

Wenn Sie zusätzliche Leerzeichen enthalten, verwenden Sie entweder die <pre> Tag oder &nbsp;

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top