ermouth: (Default)
[personal profile] ermouth

С Рождеством всех католиков в этом чате! На меня сегодня откровение в честь праздника снизошло )

Сегодня случайно на айфоне попал на сайт Флипборда – обычно я через апп читаю – и с сайта просто в восторг пришёл. На мобильном сайте сделан параллакс с фэйдом, и это всё мгновенно реагирует на тач, и всё плавно как в приложениях. Это выглядит примерно как на картинке под катом, но только в 60fps, без рывков.

Кто пробовал такое делать через HTML для телефонов, думаю, понимает, что это исключительная по сложности задача на оптимизацию.

Я, естессно, полез смотреть код – и пропал часа на четыре. Там такая круть, что просто дух захватывает.

Решение вполне под стать сложности челленджа. На мобильном сайте Флипборда HTML играет декоративную второстепенную роль – всё рендерится через canvas. То-есть ребята просто забили на HTML DOM и сделали свою версию GDI. Ни больше, ни меньше.

По-хорошему, вся страница мобильного сайта флиборда состоит из одного <canvas> на который и рендерится весь контент.

Снимок экрана 2015-12-26 в 13.16.23

Весь этот плавный параллакс при промотке – это в реальном времени отслеживание тач-событий и рендер на канвас. Чуваки пересоздали momentum scrolling, фэйд и тп.

То-есть, суть подхода в том, что мы сложный и тяжёлый DOM+CSS заменяем на очень шустрый, пишущий прямо в GPU, canvas, понимающий минимальный наборо команд. И внезапно манипулировать чистыми битмапами оказывается быстрее, чем HTML-элементами.

Вау, аплодирую стоя. Такой бескомпромиссной крутизны в медиа я ещё не встречал.

Нашёл, как это всё сделано, непосредственно в блоге Флипборда, отличное чтение, очень… мотивирующее.

Date: 2015-12-26 01:05 pm (UTC)
From: [identity profile] levgem.livejournal.com
фраза «сложный и тяжёлый DOM+CSS заменяем на очень шустрый, пишущий прямо в GPU, canvas» всё таки состоит из эмоций, а не фактов.

Её можно перефразировать, как «высокооптимизированный, запроганный на С HTML + CSS заменили на интерпретируемый, тормознутый яваскрипт, прорисовывающий каждый пиксель вручную», хотя конечно работает флипборд хорошо.

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

Date: 2015-12-26 08:47 pm (UTC)
From: [identity profile] dennyrolling.livejournal.com
fixed that for you: "высокооптимизированный, запроганный на С HTML + CSS заменили на интерпретируемый, тормознутый яваскрипт, прорисовывающий каждый пиксель вручную, и получилось быстрее".

что наводит на мысли по поводу насколько в HTML/CSS все запущено.

Date: 2015-12-27 08:30 am (UTC)
From: [identity profile] tonsky.livejournal.com
Ага. А всё потому, что DOM дает только всё и сразу, а хочется несколько слоев контроля и фич, от самого примитивного и быстрого (ручное расположение абсолютно позиционированных прямоугольников), через что-то средних возможностей, до полноценных тормозныъх layouts. Вот webassembly правильная инициатива, только для JS. Надо то же самое для DOM.

Date: 2015-12-27 12:41 pm (UTC)
From: [identity profile] ermouth.livejournal.com
> Надо то же самое для DOM.

Тут большой вопрос, какое оно должно быть. Чуваки вот не запарились и придумали себе IR-метафайл из спрайтов и таймлайна к ним. Кому-то может и побольше понадобиться, только вот где граница этого «побольше»?

Date: 2015-12-26 09:16 pm (UTC)
From: [identity profile] ermouth.livejournal.com
Яваскрипт какбы компилируемый же ) И при правильном подходе даёт всего 3-5 кратную разницу против нативного C.

> мы сделали круто и без канваса

А посмотреть? Сам не нашёл.

И да, внезапно:

http://erlyvideo.org/vod – 404, это из меню solutions 3й пункт, 404
http://erlyvideo.org/dvr – 404, со страницы http://erlyvideo.org/flussonic третья ссылка

В обеих пропущен /doc в линках.

http://erlyvideo.org/news/2015-05-31-version-4-5-1 – это линк с заглавной в новости, нет ничего по ссылке

Date: 2015-12-27 05:32 am (UTC)
From: [identity profile] levgem.livejournal.com
Да, ссылки битые есть, но здесь уже править не будем, после НГ новый сайт запускается.

Вот тебе пример нашего плеера: http://demo.erlyvideo.ru/karusel/embed.html?dvr=true

там обычный HTML.

Date: 2015-12-27 06:31 am (UTC)
From: [identity profile] ermouth.livejournal.com
Так у вас там списков нет. И, на минуточку, кнопочки внизу не дают 60fps анимации ни на андроиде, ни на айфоне – хотя там и не нужно по сюжету.

Зато мультики посмотрел )

Date: 2015-12-27 06:35 am (UTC)
From: [identity profile] levgem.livejournal.com
видишь зеленую полоску? Вот она бывает сильно драной вперемешку с красной и ещё желтыми точками поверх. Это то и надо анимировать.


Слайд/зум работают на requestAnimationFrame

Date: 2015-12-27 12:25 pm (UTC)
From: [identity profile] ermouth.livejournal.com
Ну я тоже тогда похвастаюсь, только у меня list и честных 60fps.
http://demo.taskwall.ru/mdemo.html, выбирай Эльвиру, смотреть с мобилы лучше.

ы!

Date: 2015-12-26 08:52 pm (UTC)
From: [identity profile] elektronik.livejournal.com
Понял, не так много как надо, но, чую, ага

Profile

ermouth: (Default)
ermouth

November 2021

S M T W T F S
 123456
78910111213
14151617181920
21 222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 1st, 2026 06:37 pm
Powered by Dreamwidth Studios