(position: absolute; left: 50%; margin: -50px;)
100px幅のdiv(コンテナ)を中央に配置しました。
子divを絶対に配置overflow: hidden
し、そのサイズはです100x2000 px
(このような高さは、以下で説明するように、テスト用です)。
子divに画像があり、絶対に配置されています。画像は3100x100 px,
アニメーションのフレームが含まれています。
style.left
この画像を0から-1100pxに変更してアニメーション化しています。ステップは、100pxです。すべて問題ありませんが、体の幅が均一でない場合、奇妙な問題が発生します。
スクロールバーがあり、スクロールバーの幅が奇数の場合に発生する可能性があります(たとえば、Chrome / Win32で発生します)。この場合、アニメーション画像が画面の端を通過するとすぐに、画像は視覚的に水平方向に1ピクセルシフトします(1920x1080の場合、アニメーションの9〜10フレームで発生します)。この動作の回避策が見つかりません。
問題を再現する実例はここにあります
スクロールバーが表示されるように、子のdivの高さは2000pxに設定されています。スクロールバーの幅が偶数の場合は、ブラウザウィンドウのサイズを奇数の幅に変更することで問題を再現できます。