
В HTML пробелы между строчными элементами, такими как <span> или <a>, возникают из-за символов пробела и перевода строки в коде. Даже если визуально элементы идут подряд, браузер интерпретирует эти пробелы как текстовые узлы, что создаёт дополнительные промежутки.
Один из способов устранения – убрать все пробелы и переносы между тегами в исходном коде. Например, запись <span>Элемент1</span><span>Элемент2</span> отображается без промежутка, в отличие от варианта с переносом строки между тегами.
Другой метод – использовать CSS-свойство font-size: 0 у родительского контейнера, чтобы обнулить ширину пробелов, а для дочерних элементов задать нужный размер шрифта. Этот подход подходит при работе с inline-block элементами.
Также можно применять отрицательные маргины: margin-right: -4px на первом элементе или margin-left: -4px на втором. Точное значение зависит от шрифта и размера текста, поэтому требуется тестирование в конкретной верстке.
Для блоков с плавающей компоновкой (float) или flex-контейнерами (display: flex) пробелы между элементами исчезают автоматически, что делает эти методы предпочтительными при создании сеток и горизонтальных списков.
Использование display: flex для контейнера

Свойство display: flex превращает контейнер в гибкий блок, автоматически управляя расстоянием между дочерними элементами. При этом пробелы, возникающие из-за пробелов в HTML-коде между тегами, не влияют на визуальное расположение элементов.
Для удаления нежелательных отступов достаточно задать контейнеру:
display: flex;
flex-direction: row;
Если нужно, чтобы элементы плотно примыкали друг к другу, можно дополнительно использовать gap: 0;. Это отключает любые промежутки между флекс-элементами, не затрагивая их размеры и выравнивание.
Для выравнивания элементов по центру или краям контейнера применяют свойства justify-content и align-items. Например, justify-content: flex-start; помещает элементы слева без дополнительных пробелов, а align-items: center; выравнивает их по вертикали.
Flex-контейнер автоматически адаптируется к содержимому, поэтому удаление пробелов между тегами в HTML становится необязательным, если используется display: flex с корректными настройками gap и justify-content.
Удаление пробелов между inline-block элементами

Пробел между элементами с display: inline-block возникает из-за символов перевода строки и пробелов в HTML-коде. Самый простой способ устранить его – убрать все пробелы между тегами элементов в разметке. Например, вместо:
<div class=»box»></div> <div class=»box»></div>
используйте:
<div class=»box»></div><div class=»box»></div>
Альтернатива – перенос пробелов в комментарии, чтобы код оставался читаемым:
<div class=»box»></div>
