- Элемент canvas имеет значение по умолчанию
inline
.
- HTML сворачивает все несколько экземпляров пробела в один пробел.
Эти два свойства объединяются в вашем случае (и во многих других), чтобы создать небольшой разрыв между вашими элементами. У вас есть разрыв строки между вашими полотнами:
<canvas></canvas>
<canvas></canvas>
Браузер считает, что вы просто пытаетесь вставить кучу пробелов между двумя встроенными элементами. Он думает, что вы пытаетесь сделать что-то вроде этого:
<p>Best of all for man would be
to never exist, second best
would be to die soon.</p>
Таким образом, он «сворачивает» эти разрывы строк в один пробел. По той же причине вышеприведенный абзац, по большей части, будет отображаться в виде одной обычной строки текста.
tl; dr Положите свои полотна на одну линию.
Как подсказывает @thirtydot, это как избавиться от пробела:
<canvas>
...
</canvas><canvas>
...
</canvas>