Как сделать скроллинг и css-анимацию плавными?

Рейтинг: 0Ответов: 0Опубликовано: 03.10.2014

Fiddle, о чём идёт речь – как сделать анимацию влево-вправо, которая реализована CSS3 transform, плавной?


Есть что-то похожее на большую таблицу, лишь часть которой видно через небольшое окно <div style="overflow:auto">.

«Таблица» сделана из div'ов колонок (position:absolute), внутри которых абсолютно спозиционированы по высоте отдельные ячейки — небольшие структуры из нескольких <div>.

Раньше число столбцов идеально вписывалось в ширину, и скроллинг был только вертикальный, родной браузерный. Теперь возникла необходимость неограниченно расширить число колонок.

Я хочу, чтобы:

1) вертикальный скроллинг был нативным браузерным (обычным);
2) горизонтальный – дискретным по столбцам, и желательно, без полосы прокрутки браузера, а js/кнопками. И хорошо бы с плавным CSS3 transition;
3) всё это не тормозило при большом числе невидимых деталей.

Сейчас проблема в том, что горизонтальный шаг, который я сделал назначением div'ам колонок свойства transform: translateX(-300), несмотря на transition: transform 1s, выглядит в FireFox очень скачкообразным. Видимо, сказывается большое число невидимых ячеек, для которых почему-то всё равно что-то просчитывается.

Upd. Тормоза в FireFox, а в Chrome всё прилично плавно.

В какую сторону копать? Ускорит ли CSS анимацию, если делать колонки, которые точно за кадром, display:none?


Upd. 2. Видео доклад с CSS conf US 2014 проливает свет на проблему. Paul Irish про параллакс эффект и скорость рендеринга в браузерах (на англ.)

Upd. 3. Исследования и рекомендации для плавных анимаций и прокрутки в браузерах: jankfree.org (на англ.)

Upd. 4. добавил fiddle. Разумеется, упрощённый. В настоящем и ячеек больше, и состоят они не из одного div'а, а чуть более сложные конструкции, все кликабельные.

Ответы

Ответов пока нет.