;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Do Xou da Xuxa à cadeirada: os memes que dominaram 2024

O meme 'Que Xou da Xuxa é Esse' fez sucesso em 2024
O meme 'Que Xou da Xuxa é Esse' fez sucesso em 2024
Reprodução/TV Globo

De Splash, em São Paulo

31/12/2024 16h46

No ano de 2024, o povo brasileiro provou mais uma vez o seu talento para criar memes. Foi um ano em que também fomos reconhecidos por nossos dons na comédia: vários estrangeiros lamentaram nosso bloqueio do X entre agosto e outubro. A "seca" de memes brasileiros até virou reportagem lá fora.

Foram muitos memes que surgiram dos mais variados terrenos: da política, da televisão, dos filmes, do TikTok. Fica até difícil relembrar todos, mas alguns foram "inescapáveis".

Relembre os memes que dominaram 2024

Continua depois da publicidade

Jeniffer, a mulher do avião

Jeniffer Castro permaneceu imível ao ser confrontada por não trocar de assento com uma criança no avião. O vídeo rendeu um dos grandes memes do final do ano.

Que Xou da Xuxa é Esse?

"Que xou da Xuxa é esse?!", perguntou Patrícia Martins em 1988. A cena, que veio à tona no doc "Pra Sempre Paquitas", ganhou as redes sociais em 2024.

Calma, Calabreso

No BBB, Davi foi mal interpretado ao resgatar uma frase de Toninho Tornado. "Calma, Calabreso" viralizou, virou música e, agora, o campeão do reality adotou Calabreso como apelido.

Pé de Chinesa

"Pé de Chinesa" é invenção do dono da página Baú Explica. A novela "criada" por Gloria Perez traria Jade Picon e Davi Brito no elenco. Até Angélica e Ana Maria entraram na piada.

Casca de Bala

A música de Thullio Milionário fez sucesso no TikTok, e "casca de bala" virou sinônimo de melhor amigo, parça, companheiro. Foi impossível escapar da faixa neste ano.

Continua depois da publicidade

"Vou nada!"

O humorista Tatá virou meme após se recusar a jogar uma casca de melancia fora. O resultado? Participações em clipes e podcasts e mais de 6 milhões de seguidores nas redes sociais.

Cadeirada do Datena

A política também rendeu memes, e o mais memorável do ano saiu do debate para a prefeitura de SP na TV Cultura: a cadeirada de Datena em Pablo Marçal.

Idioma: Maya Massafera

Maya Massafera se comunicou apenas com gestos enquanto se recuperava de uma cirurgia nas cordas vocais. Assim, criou sua própria "língua", baseada em beijinhos e corações.

Raygun e o breaking nas Olimpíadas

A performance duvidosa da australiana Raygun se tornou um dos maiores memes nas Olimpíadas. Infelizmente, por outras razões, a modalidade estará de fora das Olimpíadas de LA.

via GIPHY

É verdade que muitos desses memes já estão "saturados"....

Aguardamos ansiosos pelos memes que 2025 nos trará!