;(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

Beijo na boca, fã animada e novo cabelo: o fim de semana insano de Anitta

De Splash, em São Paulo

22/08/2022 04h00

Anitta teve um fim de semana de trabalho, mas também de muita diversão. A cantora fez um show no festival Garota Vip, no Rio de Janeiro, e aproveitou que estava em casa para curtir o evento com os amigos e em um after animado na mansão dela na Barra da Tijuca.

O show de Anitta já deu o tom de como seria a noite louca dela. Uma fã de 55 anos insistiu para subir no palco. Anitta deu confiança e não se arrependeu nem um pouco. Tia Marli subiu no palco, roubou a cena com ela e os bailarinos, e ainda criou um meme.

"Criticar Marli é fácil. Difícil é ser Marli"

Anitta riu muito com a mulher, que ela apelidou de tia Marli. A secretária potiguar ganhou fama instantânea e está aproveitando a popularidade com seus milhares de novos seguidores no Instagram.

Outro ponto marcante do show foi a performance de Anitta com Ohana Lefundes. A cantora e a bailarina costumam performar juntas no momento da faixa "Downtown". Ontem, rolou até beijo em cima do palco, para delírio do público.

Mais tarde, Ohana compartilhou os cliques do momento quente nas suas redes sociais e foi repostada por Anitta. Lefundes já está no balé de Anitta há seis anos, e a cantora já contou que elas ficam de vez em quando.

Garota VIP: show de Anitta tem beijo na boca, fã no palco e GKay disfarçada

"A gente se curte há muitos anos. Desde sempre quando rola, rola", itiu Anitta em uma entrevista ao TV Fama em 2019. A cantora se identifica como bissexual.

Mas o ponto alto viria na manhã de domingo. Ainda virada do show no Garota Vip e curtindo um after com GKay, outros influenciadores e mais amigos na área externa de sua casa, Anitta teve a brilhante ideia de cortar o cabelo.

Uma tesoura surgiu do nada e a cantora cortou boa parte de seu cabelo. Depois, ficou brincando com a mecha cortada e o novo visual. Ao acordar, o arrependimento bateu.

Anitta arrependida - Reprodução/Instagram - Reprodução/Instagram
Anitta arrependida depois de cortar o cabelo em uma after party em sua mansão
Imagem: Reprodução/Instagram

Mas nada que uma pessoa cheia de contatos como Anitta não possa resolver. Ela pegou o telefone e conseguiu em poucas horas um cabeleireiro profissional para arrumar o estrago da noite de bebedeira.

Para completar, Anitta recebeu a família em casa para um churrascão no domingo. Afinal, nada melhor do que um almoço caprichado depois de uma noite e madrugada animadas.

Anitta arruma cabelo após corte de Gkay - Reprodução/Instagram - Reprodução/Instagram
Imagem: Reprodução/Instagram