Как предотвратить форматирование исходного кода HTML, влияющее на вывод? - PullRequest
7 голосов
/ 15 ноября 2009

Похоже, что дополнительные разрывы строк в HTML-коде могут добавить ненужные пробелы в окончательном выводе. Я всегда думал, что независимо от того, как я размещу свой HTML-код, это не повлияет на то, как будет выглядеть результат. Но вот пример:

<h2>
    <a href="#">Hello.</a>World
</h2>

будет отображаться: " Hello.World " - все выглядит хорошо, как ожидалось

<h2>
    <a href="#">Hello.</a>
    World
</h2>

Появится: " Hello. World " - с дополнительным пробелом после точки!

Есть ли шанс избавиться от этого эффекта? Я хочу, чтобы мой код был разделен на строки, а не на пробел.

Ответы [ 5 ]

19 голосов
/ 15 ноября 2009

Вы можете использовать комментарии:

<h2>
    <a href="#">Hello.</a><!--
    -->World
</h2>

или поставить пробелы внутри тега:

<h2>
    <a href="#">Hello.</a
    >World
</h2>
7 голосов
/ 15 ноября 2009

Нет, нет, не в этом случае.

В HTML все пробелы считаются пробелами, но несколько символов пробела друг за другом считаются только одним. Итак, ваш код эквивалентен:

<h2> <a href="#">Hello.</a> World </h2>

Удалены пробелы, смежные с элементами блока, но не пробелы внутри текста. Так как тег привязки является встроенным элементом, он не может удалить пространство рядом с ним, так как это изменило бы содержимое. Итак, после удаления пробелов, это то, что осталось:

<h2><a href="#">Hello.</a> World</h2>

Таким образом, вы можете иметь дополнительный пробел где угодно, если он не является частью контента. Это:

<h2    >

  <p >  test      test    </p     >

  <p   >  test       test  </p  >

</h2   >

Будет эквивалентно (после удаления пробелов, которые не влияют на результат):

<h2><p>test test</p><p>test test</p></h2>
1 голос
/ 15 ноября 2009

Боюсь, ты не сможешь. Любая группа пробелов считается пробелом.

Альтернатива:

<h2>
    <a href="#" style="float: left;">Hello.</a>
    <span style="float: left;">World</span>
</h2>

Но из-за плавающих элементов вам придется решать еще ряд проблем.

1 голос
/ 15 ноября 2009

Новая строка всегда переводится в пробел. В IE даже хуже, когда каждый элемент списка пишется в новой строке. Грустно, но верно.

0 голосов
/ 15 ноября 2009

Допустим, HTML работал так, как вы хотите, чтобы он работал. Тогда скажи, что я хочу пробелы. Как бы ты заставил меня их создать? Добавить специальный символ, например &nbsp; каждый раз?

...