Domanda

Mi hanno da tempo riconosciuto che qualsiasi insieme di spazi vuoti in un file HTML viene visualizzato solo come un unico spazio.Per esempio, questo:

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

visualizza come:

Ciao.Ciao.Ciao.Ciao.Ciao.

Questo è perfettamente bene, come se avete bisogno di più spazi di testo pre-formattato, puoi semplicemente usare il <pre> tag.Ma qual è il motivo?Più precisamente, perché è questo nella specifica HTML?

È stato utile?

Soluzione

Gli spazi sono compattati in HTML, perché c'è una distinzione tra il modo di HTML formattato e come devono essere formattati.Prendere in considerazione una pagina come questa:

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

Se il codice HTML è rientrato l'uso di spazi per esempio, il collegamento sarebbe stato preceduto da diversi spazi.

Altri suggerimenti

Per provare a risolvere il "perché" potrebbe essere perché era basato su HTML SGML che specificato in che modo.E ' stato a sua volta basata sulla GML dall'inizio degli anni ' 60.La ragione per lo spazio bianco gestione potrebbe essere causa di dati, è stato inserito una "carta" alla volta di allora, che potrebbe causare indesiderati rottura di frasi e paragrafi.Una differenza nel vecchio GML è specificato che deve essere fatto in due spazi tra le frasi (come la vecchia macchina da scrivere regole), che può aver stabilito un precedenct che gli spazi sono indipendenti di markup.

Come altri hanno detto, è nella specifica HTML.

Se si desidera mantenere gli spazi in uscita, è possibile utilizzare il <pre> tag:

<pre>This     text has              extra spaces

and

    newlines</pre>

Ma questo sarà anche generalmente visualizzare il testo in un carattere diverso.

"Perché sono più spazi convertiti in spazi?"

Primo, "perché" domande di difficile risposta.È di spec.Che è praticamente la fine di esso.

Considera che ci sono diversi tipi di spazio bianco.

  • Lo spazio bianco tra i tag. <p>\n<b>hi</b>\n</p>

  • Lo spazio bianco nel contenuto all'interno di un tag. <p>Hi <i>everyone</i>.</p>

  • Uno spazio bianco in una <pre> o sezione CDATA.

I primi due sono difficili da distinguere.Gli spazi tra i tag, anche in XML, è "opzionale".Ma quando si ha quello che viene chiamato un "contenuto misto modello" -- tag mescolati con contenuto -- la sottigliezza di "tra i tag" e "nel contenuto, ma tra i tag" e "nel contenuto, ma non tra i tag" è impossibile da risolvere.

E così non riescono a risolvere.Gli spazi tra i tag e spazi del contenuto opzionale.

Non solo è in il specifica, ma c'è un qualche senso.Se gli spazi non erano compattato, si dovrebbe mettere tutto il tuo codice html in una singola riga.quindi, qualcosa di simile a questo:

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

Avrebbe qualche strano allineamento con gli spazi in tutto il luogo.L'unico modo per farlo bene sarebbe per compattare il codice, che sarebbe difficile da mantenere.

Se il browser non fare questo, potrebbe essere difficile per formattare il codice HTML per rendere più facilmente leggibile.Per esempio, si potrebbe desiderare di formattare il codice come questo:

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

Se il browser non ignora le otto o modo di spazi prima del testo all'interno del tag div, la pagina web potrebbe non sembrare il modo desiderato.

Di solito, queste decisioni non sono documentati in qualsiasi specifica e possono essere raccolte dal gruppo di lavoro per la discussione archivi che capita di essere accessibile al pubblico, o spiegato con la specifica degli stessi autori.Tuttavia, in questo caso particolare, HTML 3.2 fa stato il seguente:

Tranne che nel testo letterale (ad es.il PRE elemento HTML considera sequenze contigue di spazi vuoti come equivalente a un singolo carattere di spazio (ASCII decimale 32).Queste regole permettono agli autori una notevole flessibilità quando si modifica marcato direttamente il testo.Nota che le future revisioni del HTML può consentire l'interpretazione del carattere di tabulazione orizzontale (ASCII decimale 9) rispetto a una scheda di regole definite da un foglio di stile associato.

Il comportamento che si vede oggi è, naturalmente, molto più complicato di quanto è stato specificato in HTML 3.2, ma credo che il ragionamento si applica ancora.Un esempio di dove questa flessibilità può essere utile quando si dispone di un lungo paragrafo che si desidera hard-wrap e trattino:

<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.

Se gli spazi non era crollato, si finirebbe con un paragrafo con insolitamente grandi lacune in cui il testo è stato avvolto a causa del rientro.

Nessun altro specifica HTML suggerisce alcun tipo di ragionamento che sta dietro a questa decisione.In particolare HTML 4 descrive il crollo del comportamento, e di HTML5 e la vita spec sia rinviare a CSS, che non spiega nulla.Precedenti versioni di HTML, inoltre, non contengono alcuna spiegazione, anche se il brano seguente viene visualizzato in un esempio di frammento HTML 2.0:

<OL>
...
  <UL COMPACT>
  ...
  <LI> Whitespace may be used to assist in reading the
       HTML source.
  </UL>
...
</OL>

E ' in HTML spec.È la parte su inter-word spazi reso come uno spazio ASCII.

http://www.w3.org/TR/html401/struct/text.html

Semplice, nel capitolato.

Dalle specifiche di HTML, la sezione 9.1:

In particolare, gli agenti utente deve crollo di input spazio bianco sequenze quando la produzione di output di inter-word spazio.

Per rispondere perché è questo nella specifica HTML? devi considerare le origini del HTML.

Tim Berners-Lee progettato HTML per la condivisione di documenti scientifici.Ha basato sul pre-esistente sintassi idee in SGML, che ha anche simili trattamenti di spazi vuoti.

Si può immaginare che i primi scrittori di HTML al CERN ha fatto senza l'aiuto di WYSIWYG strumenti, e quindi la capacità di trattare gli spazi in questo modo aiuti la leggibilità di tali scritti a mano i file di origine.

C'è anche un tipografico risposta:le parole e le frasi devono avere solo uno spazio tra di loro, indipendentemente da ciò che la vostra digitazione insegnante della scuola hanno detto.

Utilizzare Uno Spazio Tra Le Frasi

Usare Una Sola Parola Di Spazio Tra Le Frasi

La definizione e/o alle specifiche di HTML chiaramente affermato di ignorare l'eccesso di spazio.

Se si desidera includere spazi extra, utilizzare il <pre> tag o &nbsp;

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top