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

Quem é Vinícius Freitas, o galã do vôlei de praia que encantou até a Anitta

Do UOL

Em São Paulo

24/07/2021 18h20

O jogador de vôlei de praia Vinícius Freitas chamou atenção da cantora Anitta nas redes sociais. Em uma publicação que listava os atletas mais "gatos" da delegação brasileira em Tóquio, entre várias modalidades, a funkeira escreveu: "Adoro vôlei de praia, menina".

A resposta da cantora teve mais de 3.700 curtidas e muito engajamento. Muitos seguidores alertaram Anitta que o rapaz tem namorado. A funkeira reagiu com bom humor: "Adoro dar uma volta no vale". Até mesmo o namorado do rapaz, o médico Rafael Helmer, entrou na brincadeira: "Uma deusa dessas de olho no meu boy, como faz?"

Conversa de Anitta com internautas sobre Vinícius Freitas - Reprodução/Instagram - Reprodução/Instagram
Conversa de Anitta com internautas sobre Vinícius Freitas
Imagem: Reprodução/Instagram

Mas afinal, quem é Vinícius Freitas? O jogador, de 26 anos, está em Tóquio, mas não briga por medalhas. A função dele é ajudar no treinamento das duplas Alisson e Álvaro e Bruno Schmitd e Evandro.

Natural de Vitória, no Espírito Santo, Vinícius começou a jogar vôlei de quadra com 12 anos. Logo migrou para areia e começou a se destacar em campeonatos. Após conquistar o título de campeão brasileiro sub-19, em 2013, ele foi convocado para a seleção sub-21 e ou um período de treinamentos em Saquarema. No ano seguinte, ficou em quinto lugar no mundial sub-21. Na temporada 20/21, ou a jogar ao lado de Pedro Solberg.

Recentemente, ele conquistou, ao lado de Luciano, a temporada Challenger do Circuito Brasileiro de vôlei de praia 20/21.

Homossexual assumido, o rapaz costuma postar fotos ao lado do namorado Rafael Helmer e fazer declarações de amor.

Além do vôlei, Vinícius, que cursou até o segundo período de direito, gosta de se arriscar em outras modalidades esportivas, como mergulho e standup paddle. O jovem até já se arriscou como modelo, mas deixou claro que o vôlei de praia é prioridade. E aí, leva jeito?