HTML DOM: перевод каретки / табуляция переводятся в пробелы? - PullRequest
1 голос
/ 26 июля 2011

Пожалуйста, посмотрите на это изображение:

http://img713.imageshack.us/img713/7443/domhd.jpg

В левом верхнем углу обратите внимание, что HelloWorld не имеет пробела между ними, в то время как Foo Bar. Правая сторона показывает разметку; после Foo или до Bar нет пробела; просто возврат каретки и несколько вкладок. Внизу слева показано, что такое DOM (для Firebug).

Вопрос: какой промежуток между Foo и Bar?

ПРИМЕЧАНИЕ: здесь он находится на JSFiddle, но кажется, что вкладки преобразованы в пробелы: http://jsfiddle.net/sM6rk/

Исходная разметка (опять же, вкладки превратились в пробелы):

<html>
    <head>
    </head>
    <body>
        <p>Hello<em>World</em></p>
        <p>Foo
            <em>Bar</em>
        </p>
    </body>
</html>

Ответы [ 3 ]

2 голосов
/ 26 июля 2011

Спецификация CSS объясняет представление модели обработки пробелов , а именно:

  1. [.. snip ..]
  2. [..snip ..]
  3. Если для параметра «Пробел» задано значение «Обычный» или «Nowrap», символы перевода строки преобразуются для целей визуализации в один из следующих символов: пробел, нольсимвол ширины пробела (U + 200B) или без символа (т. е. не отображается) в соответствии с алгоритмами UA, основанными на скрипте содержимого.
  4. Если для «пробела» установлено значение «normal»,'nowrap', или 'pre-line', каждая вкладка (U + 0009) преобразуется в пробел (U + 0020), любой пробел (U + 0020) после другого пробела (U + 0020) - даже пробел перед строкой, если для этого пространства также установлено «пустое пространство», установленное на «нормальное», «nowrap» или «pre-line» - удаляется.
1 голос
/ 26 июля 2011

В HTML все пробелы преобразуются в один пробел (или любой другой эквивалент для языка), если он не находится внутри блока, помеченного как preserve-whitespace.Сюда входят пробелы, символы табуляции и новые строки.

Для получения более подробной информации см. Спецификация HTML 4.01 .

0 голосов
/ 26 июля 2011

Да, все символы пробела интерпретируются как пробелы, а несколько символов пробела интерпретируются как один пробел.

Итак, перевод строки и пробелы между Foo и Bar интерпретируются как один пробел.

...