Как отображаются в документе узлы, у которых объект-прототип - TEXT?

503
03 февраля 2017, 03:44

Привет.

Вопрос по хтмл. Когда пишется разметка, то используются символы форматирования - пробел, табуляция, перевод строки. Потом из этих символов форматирования получаются объекты узлы с прототипом TEXT. Эти объекты-узлы не являются блочными или строчными элементами, так как это не лежащий в элементе текст, но они как-то отображаются. Вопрос - как отображаются эти узлы? Эти узлы не являются элементами, поэтому к ним неприменимо понятие "блочный элемент" и "строчный элемент". Как рассчитывается ширина текстового узла? Вообще об этом ни слова не встречал.

Перед тем, как отобразить, браузер строит макет страницы. При макетировании браузер вычисляет размеры и положение всего на странице перед тем, как расположить. вот меня как раз и заинтересовало, как браузер считает размеры и положение строковых узлов.

Вот пример:

<style>
            span{
                display:inline-block;
                width:50px;
                height:50px;
                background-color:red;
            }
 </style>
<div>
            <span>qwe</span>
            <span>asd</span>
            <span>zxc</span>
</div>

Получаю это:

Маргины спанам я не задавал.

Эту фигню можно победить тремя способами:

  1. писать в одну строку без пробелов и энтэров.

  2. удалить узлы текстовые джаваскриптом.

  3. задать диву-контейнеру font-size:0px, а спану - нужный font-size, например 12px

Answer 1

При рендере html - браузеры учитывают пробелы, переводы строк и табуляции, сворачивая их до одиночного пробела, который вы и видите в результате. Зазор между блоками как раз выходит шириной в одиночный пробел.

По этой же причине, если указать для контейнера font-size: 0; - ширина любых символов (и пробелов) будет равна нулю. И зазоров уже не будет.

Answer 2

У вас родительский div имеет font-size. И из-за этого получается проблема. Поставивьте родительскому диву font-size: 0 а дочерним задайте свой font-size

READ ALSO
Как получить Html из буфера обмена в формате Unicode?

Как получить Html из буфера обмена в формате Unicode?

Программа берет содержание буфера(Хранится Html) должна сделать над ним какую-то работу

494
Скорректировать изображение C#

Скорректировать изображение C#

Проблема такова, стояла задача в вырезании объекта из фонаПосле всех манипуляций получилось вот что

391
Запуск макроса Excel из c#

Запуск макроса Excel из c#

Добрый деньЕсть файл excel, в котором прикручена кнопка

491