HTML\CSS → inline-block и пробелы

Блочно-строчные элементы ведут себя как текст, поэтому если в коде есть пробел между элементами, то он отображается и на странице. Этот пробел часто увеличивает отступы между элементами и они не помещаются в родительский блок в одну строку, хотя по размерам должны бы.

Решить проблему можно несколькими способами. Пример:

1. Убрать пробелы:

<ul>
  <li>
   Один</li><li>
   Два</li><li>
   Три</li>
</ul>

2. Отрицательный внешний отступ margin-right:-4px у элементов. Способ заключается в том, что мы уменьшаем отступ после инлайн-блока на ширину пробела (~4px). А если нам нужно, чтобы элементы стояли вплотную друг к другу, то задаём отрицательный отступ.
Проблема с этим способом заключается в том, что размер пробела может быть разным в разных шрифтах и может изменяться при изменении размера шрифта.

nav a { display: inline-block;  margin-right: -4px; }

3. Установить размер шрифта пробела, равный нулю. Способ заключается в том, что мы задаём нулевой размер шрифта у контейнера инлайн-блоков, а самим инлайн-блокам задаём исходный размер шрифта. Способ не работает, если вы используете относительные размеры шрифта.

nav { font-size: 0; }
nav a { font-size: 16px; }

4. Не использовать закрывающий тег. Относится только к спискам.

<ul>
  <li>Один
  <li>Два
  <li>Три
</ul>

5. Использовать flexbox

nav {
  display: -webkit-box;      
  display: -moz-box;         
  display: -ms-flexbox;      
  display: -webkit-flex;     
  display: flex;
}