Пробелы на самом деле являются новыми строками (пробелами) между вашими <li>
тегами. Поскольку вы создали встроенные блоки <li>
s, пробельные символы обрабатываются как текст в той же строке, что и ваши встроенные блоки, что приводит к их разнесению.
Вы можете либо удалить символы новой строки из своего HTML-кода, либо использовать <li>
s вместо display: inline-block
:
nav ul.topnav li {
float: left;
...
}