Дело не в темах. Речь идет о том факте, что когда код выполняет быструю последовательность изменений DOM или стиля, браузер не пытается обновить представление между ними. Вместо этого он ждет, пока все успокоится, а затем перерисовывается.
Если вы закодировали последовательность, как вы описываете, с ненулевым значением времени ожидания (скажем, 100 миллисекунд) для каждого изменения, то вы увидите, что это произойдет. Как вы уже написали, с нулевым тайм-аутом миллисекунды все обновления будут происходить в течение очень короткого периода времени - вероятно, намного меньше миллисекунды, если у вас нет тысяч таких блоков.
(Обратите внимание, что ваш пример кода не будет давать 100 в качестве тайм-аута для каждого изменения; вам придется постепенно увеличивать их в будущем, добавляя еще 100 для каждого. Или вы можете использовать интервальный таймер и отменить это после последнего обновления.)