スワイプでもボタンでもドットでも動きます。どの方法で動かしても、現在位置の表示は必ず一致します。位置の判定は1か所にまとめてあります。

スクロール位置を scrollLeft の割り算で求める実装は、余白や端末の丸め誤差でずれます。IntersectionObserver なら「実際に見えているか」をブラウザが答えるので、計算が要りません。