https://codepen.io/tadashi___/pen/mwdOZp

上記のcodepenのように、
複数のcを連ねて、画面に入っているもののみtranslateYを上にずらしていく。
divの底辺が画面内にはいったら次のdomを一緒に動かしていく。
という内容を実装しています。

この時、velocityを6秒おきにランダムな速度に変更していますが
velocityの速度が速い時、divとdivの間に不均等に隙間が生じてしまいます。

framerateが低いわけはないのですが、どのあたりの計算を見直すべきかわからず。。
ご教示いただければ幸いです。

下記箇所で3つのdivを、自分の座標+=velocity*侵攻方向として移動しています。

function updatePosition(){


  if(_past2View){
    let _num = _positions[_past2Index] += velocity * _direction;
    _past2View.style.setProperty('transform', `translateY(${ _num }px)`);    
  }

  if(_pastView){
    let _num = _positions[_pastIndex] += velocity * _direction;
    _pastView.style.setProperty('transform', `translateY(${ _num }px)`);    
  }

  let _num = _positions[_currentIndex] += velocity * _direction;
  _currentView.style.setProperty('transform', `translateY(${ _num }px)`);    

}

上記処理の前に下記も実行していきます。

function updateCurrent(){

   // currentのtailが画面内に入ったら処理
   if(isInTail(_currentIndex)){

      // 画面外に出たらpause flagをたてる
       if(!_pause[_pastIndex] && isOutTail(_pastIndex)){
         _pause[_pastIndex] = true;
       }

      // pastViewがあったら2つ前の履歴に突っ込む。
       if(_pastView){
         _past2Index = _pastIndex;
         _past2View = _pastView;
         _positions[_past2Index] = _positions[_pastIndex];    
       }

      // 現在のcurrentを過去分に
       _pastIndex = _currentIndex;
       _pastView = _currentView;
       _positions[_pastIndex] = _positions[_currentIndex];

         // 次をcurrentに
       let _nextIndex = _currentIndex - _direction;

      // loopするようindexがはみ出た際の調整
       if(_nextIndex > _child.length - 1){
         _nextIndex = 0;
       }else if(_nextIndex < 0){
         _nextIndex = _child.length - 1;
       }

         // currentを次のdivに差し替え。
         // positionを0にセットしflagをfalseに。
       _currentView = _child[_nextIndex];
       _positions[_nextIndex] = 0;
       _pause[_nextIndex] = false;

      _currentIndex = _nextIndex;

  }
  //
}