Pusemos este site a escorrer tinta, e quase derreteu o browser

Por

·

O site da Slop a pingar: pingos de tinta pendurados numa orla preta por cima da faixa de logótipos de marcas, com tinta nas pílulas e gotas a cair.

Se calhar já reparaste na tinta. Cada borda de tinta deste site ganha pingos que enchem, ficam pesados, esticam-se num fio e caem, e o mesmo acontece a cada logo na faixa das marcas para quem trabalhamos. As gotas aterram no que estiver por baixo (uma foto, um cartão, um botão) e espalham-se. Numa superfície plana, ficam quietas. Numa inclinada, escorregam, transbordam pela borda, escorrem pelo lado e continuam a pingar. Tudo acaba numa poça em cima do rodapé, que não para de subir enquanto cá estiveres.

O nosso logo é um pingo, por isso o site tinha de pingar. Nada de vídeo em loop: tinta a sério, calculada em tempo real no teu browser. Foi feito com o Claude Code, como seria de esperar de uma agência que pôs a IA no letreiro. Pôr pingos no ecrã foi a parte fácil. Deixá-los bons o suficiente para ficarem a correr num site publicado é que deu trabalho, e é disso que fala esta nota.

Pingos em tempo real no site da Slop: os pingos numa borda de tinta enchem e caem, enquanto a faixa de logos das marcas desliza com tinta a pingar das pílulas.
Fig. 60 — Tinta em tempo real a sessenta frames por segundo. Nem um é vídeo.

Tinta que sabe onde está

Cada pingo é um pequeno brinquedo de física. A tinta junta-se no bolbo, o bolbo fica mais pesado e, quanto mais pesa, mais depressa o pingo escorre, até estreitar e cair. Uma gota a cair lê o contorno real daquilo em que bate, cantos arredondados e fotos inclinadas incluídos, por isso a tinta num botão redondo abraça o botão. Também sente a página. Dá um safanão à página enquanto fazes scroll e as gotas penduradas soltam-se. Passa o rato por cima de um logo na página inicial e ele levanta, e a tinta levanta com ele.

Antes de poder entrar no site publicado, tinha de cumprir quatro regras:

  • Nunca empata. Não pode bloquear um clique, tapar texto nem tornar a página mais lenta.
  • Quieta quando lho pedem. Se o teu dispositivo pede movimento reduzido, ou se o JavaScript estiver desligado, recebes a página parada, com os pingos pintados.
  • Tinta lisa. Bordas nítidas e o mesmo brilhozinho do logo. Sem desfocado, sem gradientes.
  • A dormir quando nada mexe.

Onde a coisa se complicou

Primeiro, as coisas redondas. A maioria daqueles logos está em botões em forma de pílula, e a tinta adora contornar as pontas redondas. Foi exatamente aí que os pingos começaram a ganhar picos afiados, como se alguém os tivesse aparado à tesoura. O código que desenhava uma gota pendurada partia do princípio de que a superfície por cima era plana. Na base de uma pílula, é. Na curva, desenhava uma cunha encosta acima e uma lasca de tinta por cima do próprio botão. A solução foi deixar a tinta encontrar a curva real dos dois lados, tal como uma bola encaixada entre a gota e a superfície tocaria nas duas.

Grande plano de tinta pendurada na ponta redonda de uma pílula com um logo. Antes: um pico preto afiado e uma lasca plana a entrar na pílula. Depois: uma gota suave que acompanha a curva.
Fig. 45° — Tinta numa inclinação, antes e depois.

Depois veio a parte em que quase derreteu o browser. Quanto mais tempo ficavas, mais pesada a página ficava. A tinta acumulava-se em cada foto e cartão por onde fazias scroll, e passar o rato por um logo fazia a faixa engasgar-se. A primeira versão seguia uma ideia com que a maioria dos developers concordaria: desenhar a tinta em muitos canvas pequenos e redesenhar só os bocadinhos que mudam. Saiu ao contrário. Cada canvas custa alguma coisa ao chip gráfico só por existir e ser redesenhado, por mais pequeno que seja, e depois de uma visita longa havia cerca de 250. Menos canvas, maiores, e não pintar o que ninguém vê baixou isso para cerca de 80. Num teste que faz scroll à página toda e passa o rato por uma dúzia de logos, o trabalho gráfico caiu 39% e os engasgos longos passaram de onze para um.

Medir tinha a sua própria armadilha. A nossa primeira leitura dizia que a página estava a perder 19 frames por segundo. Não estava. Os pingos correm a 60 frames por segundo de propósito, num ecrã que atualiza 120 vezes por segundo, e o browser contava cada frame que saltávamos como uma falha. Podíamos facilmente ter passado um dia a otimizar contra esse número. Antes de correres atrás de um número, confirma o que ele quer dizer.

Um site pode ter personalidade e continuar rápido. O truque é tratar a parte divertida com a mesma disciplina das partes aborrecidas: testá-la num browser a sério, respeitar quem não quer movimento e mantê-la fora do caminho daquilo que a pessoa veio fazer.

Queres que o teu site pareça um bocadinho mais vivo?

Escrito pela Slop — agência de marketing in-house da Kempu, nativa de IA.