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

Griezmann rasga elogios a Mbappé: 'Ele é irrepreensível'

Antoine Griezmann, da França, em coletiva de imprensa nesta sexta-feira (02). - FRANCK FIFE/AFP
Antoine Griezmann, da França, em coletiva de imprensa nesta sexta-feira (02). Imagem: FRANCK FIFE/AFP

Do UOL, em São Paulo

02/12/2022 12h25

Classificação e Jogos

Antoine Griezmann e Kylian Mbappé fazem parceria de sucesso na França há anos. Os dois foram protagonistas no título mundial de 2018 e são titulares absolutos na atual Copa do Mundo. O jogador do Atlético de Madrid aproveitou coletiva de imprensa nesta sexta-feira (02) para elogiar o companheiro de seleção.

Na Copa da Rússia, Mbappé foi um protagonista técnico da França apesar da pouca idade. O atacante do PSG tinha 19 anos na época. Para Griezmann, o camisa 10 da seleção evoluiu de maneira positiva desde então, especialmente no aspecto pessoal.

"O Kylian (Mbappé), em 2018, não era o mesmo jogador, não tinha a mesma personalidade", disse Griezmann. "A gente vê ele muito mais no grupo, nos treinos, ele fala bastante, traz alegria para a vida. Ele sabe da sua importância para nós, e sabe que cada movimento que fizer dentro ou fora do campo será observado por torcedores, jornalistas e seus companheiros de equipe. Ele é irrepreensível (risos)", adicionou.

Além da boa relação descrita fora dos gramados, Griezmann acredita que hoje tem entrosamento melhor com Mbappé. "Não temos muitos minutos de jogo juntos ou de treinos (na seleção sa), por isso é complicado trabalhar esta cumplicidade. (...) Estou começando a entender o que ele quer, o que ele precisa, o jogo dele, fica mais fácil depois de muitas partidas juntos", declarou.

Griezmann e Mbappé devem voltar à ação com a seleção sa no próximo domingo (04), às 12h (de Brasília), contra a Polônia, pelas oitavas de final da Copa do Mundo.

Quem vai ser o artilheiro da Copa do Mundo? Vote!

Enquete encerrada

Total de 1905 votos
46,82%
Adam Pretty - FIFA/FIFA via Getty Images
36,01%
NELSON ALMEIDA / AFP
8,82%
Dan Mullan/Getty Images
2,41%
David S. Bustamante/Soccrates/Getty Images
1,84%
Aurelien Meunier/Getty Images
1,31%
Catherine Ivill/Getty Images
1,10%
Evrim Aydin/Anadolu Agency via Getty Images
1,10%
JAVIER SORIANO / AFP
0,58%
Buda Mendes/Getty Images