Это ожидаемое поведение из-за того, как символ пробела интерпретируется браузером.В вашем случае начальная раскладка кнопок имеет несколько пробелов, выглядит новыми строками.Браузер будет представлять все (новые строки, табуляции, пробелы) как один пробел.Вот почему вы видите некоторое начальное пространство между кнопками.
После изменения положения кнопок в DOM вы эффективно избавляетесь от этих пробелов.Следовательно, кнопки визуально соприкасаются друг с другом.
Простое решение - либо сохранить пробел между кнопками:
buttons.insertBefore(buttonA, buttonB);
buttons.insertBefore(document.createTextNode(' '), buttonB)
Или вы можете убедиться, что ваши кнопки применяют надлежащие поля CSS, чтобы символы пробела былипренебречь или не существует всех.Смотрите этот вопрос .