все правильно вы гоняете translateX или в плюс или в минус. что бы было по кругу, надо к предыдущему изменению прибавлять/вычитать новое. т.е. прежде чем сдвинуть на -300 узнайте на сколько он уже сдвинут и вычтете еще 300 и в результате надо сдвинуть для второго шага на -600px, для 3 на -900px и т.д.