Backlog Unificado
Projeto: RioNoTeatro. Fonte principal: /www/wwwroot/rionoteatro.com.br/docs/BACKLOG.md.
Modo read-only: ações de escrita ficam disponíveis apenas para o Cérebro.
Sem itens pendentes em /www/wwwroot/rionoteatro.com.br/docs/BACKLOG.md.
Especificações Disponíveis (fora da fila pendente)
- BK-136
- BK-137
- BK-138
- BK-147
- BK-148
- BK-149
- BK-150
- BK-151
- BK-156
- BK-158
- BK-159
- BK-160
- BK-161
- BK-162
- BK-163
- BK-164
- BK-165
- BK-166
- BK-170
- BK-171
- BK-172
- BK-177
- BK-183
- BK-186
- BK-187
- BK-189
- BK-190
- BK-191
- BK-192
- BK-193
- BK-195
- BK-196
- BK-197
- BK-198
- BK-199
- BK-201
- BK-205
- BK-207
- BK-208
- BK-209
- BK-210
- BK-211
- BK-212
- BK-213
- BK-214
- BK-215
- BK-216
- BK-217
- BK-218
- BK-219
- BK-220
- BK-221
- BK-229
- BK-230
- BK-231
- BK-232
- BK-233
- BK-234
- BK-235
- BK-236
- BK-239
- BK-240
- BK-241
- BK-242
- BK-243
- BK-244
- BK-245
- BK-246
- BK-248
- BK-249
- BK-250
- BK-251
- BK-252
- BK-253
- BK-254
- BK-255
- BK-256
- BK-257
- BK-258
- BK-259
- BK-260
- BK-261
- BK-262
- BK-263
- BK-264
- BK-265
- BK-266
- BK-267
- BK-268
- BK-269
- BK-270
- BK-271
- BK-272
- BK-275
- BK-276
- BK-277
- BK-278
- BK-279
- BK-280
- BK-295
- BK-313
Detalhe do BK Selecionado
/www/wwwroot/rionoteatro.com.br/docs/backlog/BK-271-carrossel-flutuante-eventos-scroll-direcional.md • 2026-04-13T04:54:52.729Z
BK-271 - Carrossel flutuante em eventos.php + scroll direcional em evento.php
Status
- concluído em
2026-04-13
Objetivo
- fazer
eventos.phpexibir o carrossel flutuante de ofertas - alinhar o comportamento de
evento.phpeeventos.phppara: - esconder ao rolar para baixo
- mostrar ao rolar para cima
- reduzir a classificação no carrossel para apenas o selo numérico pequeno
- expor um marcador versionado em comentário HTML para validação do admin
Escopo
eventos.phpevento.php
Estratégia
- reaproveitar a linguagem visual e comercial do carrossel já usado em
evento.php - em
eventos.php, injetar o shell do carrossel no#carousel-placeholderdo header público - trocar a lógica de visibilidade para depender da direção do scroll, não só da posição vertical
- usar apenas
eventoClassificacaoBadgeMiniHtmlPublico()/eventosClassificacaoBadgeMiniHtmlPublico()dentro do carrossel
Validações esperadas
php -l evento.phpphp -l eventos.php- conferência visual do comentário versionado no HTML
Validações executadas
php -l evento.phpphp -l eventos.php- comentário versionado confirmado no HTML público de:
https://rionoteatro.com.br/eventos.phphttps://rionoteatro.com.br/se-der-corda
Subfix de flicker
- o primeiro hotfix ainda piscava porque a visibilidade do carrossel dependia apenas do frame atual de scroll (
subindo/descendo) - quando o usuário parava de rolar, o carrossel perdia o estado e desligava no frame seguinte
- correção final aplicada:
- estado persistente de visibilidade
- liga quando sobe após o trigger
- desliga quando desce, volta ao topo ou ainda não passou do trigger
- ao parar de rolar, mantém o último estado visível
Follow-up de estabilidade e performance
- a trilha AJAX parcial gerada por worker externo foi rejeitada antes do fechamento:
- ela havia deixado
eventos.phpcom blocos duplicados/incompletos e chegava a quebrar o rodapé da página - o endpoint
ajax/eventos_carregar.phpnão foi mantido - a correção consolidada em
eventos.phpficou assim: - o shell do carrossel passou a clipar overflow horizontal para não induzir barra de scroll interna
- a sincronização do carrossel passou a usar
requestAnimationFrameno scroll - a vitrine inicial passou a mostrar os primeiros
12cards - ao aproximar do fim da tela, a página revela automaticamente mais
6cards por vez - cards ocultos mantêm metadata no DOM para preservar busca e agenda, mas só ativam a imagem real quando ficam visíveis
- banners inseridos entre cards acompanham o mesmo limite visível da vitrine
Validações executadas no follow-up
php -l eventos.php- conferência HTTP do HTML publicado em
https://rionoteatro.com.br/eventos.php - confirmação da presença de:
RNT_FLOATING_CAROUSEL_MARKER: 2026-04-13 04:43 -03data-card-deferred="1"nos cards pós-limite inicialdata-banner-after-indexnos banners da listagem#rnt-eventos-lazy-anchorno fim da grade
Follow-up do body/header público
- o scroll duplo residual não vinha do carrossel em si; vinha da compensação redundante do header público
includes/inc_peca.phpadicionavaheader-fixedaobody, enquanto o header público emredesign_2026.cssjá opera composition: sticky- isso mantinha o
bodycompadding-tope fazia o admin perceber um segundo contexto de rolagem/compensação visual - correção aplicada:
inc_peca.phpdeixou de adicionarheader-fixedaobodyinc_peca.phpdeixou de alternarheader-scrollednobody- o efeito visual de scroll continua só no próprio
.rnt-header
Validações executadas no follow-up do body/header
php -l includes/inc_peca.php- conferência HTTP do HTML publicado em
https://rionoteatro.com.br/eventos.php - confirmação de que a página agora sai com:
<body>- sem
header-fixed - sem
header-scrolled
Simplificação final do comportamento
- por decisão operacional do admin, a lógica do carrossel em
eventos.phpfoi simplificada - comportamento final:
- inicia oculto
- no primeiro scroll para cima após o trigger, aparece
- depois disso permanece fixo/exibido
- não volta mais a esconder por scroll
- escopo deliberadamente restrito a
eventos.php
Validações executadas na simplificação final
php -l eventos.php- conferência HTTP do JS publicado em
https://rionoteatro.com.br/eventos.php - confirmação da presença de:
var carrosselEventosTravado = false;if (!carrosselEventosTravado && passouTrigger && subindo)carrosselEventosVisivel = carrosselEventosTravado;
Espelhamento em evento.php
- a mesma regra final foi espelhada na página individual do evento
- comportamento final em
evento.php: - inicia oculto
- no primeiro scroll para cima após o trigger, aparece
- depois fica travado como visível
- não volta a esconder por scroll
Validações executadas no espelhamento de evento.php
php -l evento.php- conferência HTTP do JS publicado em
https://rionoteatro.com.br/se-der-corda - confirmação da presença de:
var carrosselEventoTravado = false;if (!carrosselEventoTravado && passouTrigger && subindo)carrosselEventoVisivel = carrosselEventoTravado;