Создай блок «Day → Night»: фотография города при прокрутке превращается из дневной в ночную, разделяясь на вертикальные полосы, которые с разными задержками сдвигаются вверх, как ленты механического табло. Только вертикальный сдвиг фрагментов, без 3D-поворота и кроссфейда.
Изображения:
Day:
static.tildacdn.com/tild6663-3633-4966-a231-376233373830/photo-1435738623530-.jpgNight:
static.tildacdn.com/tild3832-3363-4236-b465-666263646539/ChatGPT_Image_23__20.pngФон секции #0D0F12, высота 240vh. Внутри sticky top:0, height:100vh, flex-центр по обеим осям, padding 70px по вертикали. У секции overflow:clip. Кадр min(92vw, 1180px), 16:10, overflow:hidden, без рамки, скруглений и тени. Под ним через 18px подпись «DAY → NIGHT»: Arial/Helvetica 11px regular, трекинг .18em, текст rgba(255,255,255,.55), стрелка #E9704F, промежутки 10px. Без других заголовков и кнопок.
Раздели кадр на N вертикальных полос: 15 на десктопе ≥1200px, 11 на планшете 768−1199px, 7 на телефоне ≤767px. Полоса обрезает содержимое по своим размерам. Внутри лента высотой 200%: верхняя половина — фрагмент Day, нижняя — тот же фрагмент Night. Оба фото на полный кадр WxH: background-size:Wpx Hpx, background-position-x:-i*W/N. Полосы собирают цельный кадр. Ширина полосы W/N+.5px, margin-right:-.5px против швов.
Привяжи анимацию к скроллу секции: p=clamp(-sectionRect.top/(sectionHeight-innerHeight), 0,1). Сглаживай p через rAF/lerp .14 с поправкой на длительность кадра: factor=1-(1-.14)^(delta/16.67). До 16% показывай дневной кадр, после 84% — ночной. Для полосы i (индекс с нуля): order=i%2===0? i/2: N-1-(i-1)/2; start=.16+order/(N-1)*.42; t=clamp((p-start)/.26,0,1). Применяй easeInOutCubic(t) и translate3d(0,-50*eased%, 0) к ленте. Получится чередующаяся волна, обратимая при прокрутке назад; положение задаёт скролл, не таймер.
Планшет: секция 220vh, кадр 3:2. Телефон: секция 200vh, ширина кадра calc(100vw - 28px), пропорции 4:5. Подпись и sticky сохраняются.
Исходные фото — два img с alt и data-vb-role="from"/"to"; полосы JS строит из их src, конструкция aria-hidden. Для выбора фото в редакторе поверх кадра невидимый (opacity:0) слой с двумя img по половине ширины, pointer-events:auto. При resize пересчитывай полосы и фон через ResizeObserver, debounce 150ms; после загрузки фото обновляй кадр. При выходе секции за экран и скрытии вкладки останавливай rAF. Изолируй CSS/JS, поддержи несколько экземпляров без повторной инициализации. Без JS и при reduced-motion показывай два исходных фото вертикально, без sticky и анимации, высота секции auto.
Контент должен легко редактироваться в Тильде: все карточки, фото и тексты сразу в HTML, без генерации через JS, массивы, innerHTML или canvas. Фото — img с data-tilda-img="y", тексты — с data-tilda-edit="y". JS только для анимации и синхронизации декоративных фрагментов с главным img. В редакторе покажи главное фото и все обороты статично для выбора и замены контента; не перехватывай клики.