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

Fluminense

Xerém resolve, e Fluminense vai de 'surpresa' à briga por G4 no Brasileirão

Moleques de Xerém têm sido destaque do Fluminense na boa campanha no Brasileirão - Mailson Santana/Fluminense FC
Moleques de Xerém têm sido destaque do Fluminense na boa campanha no Brasileirão Imagem: Mailson Santana/Fluminense FC

Caio Blois

Do UOL, no Rio de Janeiro

04/02/2021 04h00

A vitória sobre o Bahia colocou o Fluminense de vez na briga por uma vaga na fase de grupos da Libertadores. De "surpresa" do Campeonato Brasileiro à disputa pelo G4 da competição, o Tricolor contou com os moleques de Xerém, que mais uma vez resolveram nos momentos difíceis.

A boa fase vivida pelo Tricolor, que chegou ao terceiro triunfo consecutivo no Brasileirão pela primeira vez desde 2016, tem as digitais dos jovens, que vêm sendo destaques do time comandado por Marcão na reta final da competição.

Na Fonte Nova, o gol da vitória marcado por Luiz Henrique foi mais um resultado conquistado com grandes atuações dos jovens formados nas divisões de base do clube. Antes, contra o Goiás, quem decidiu foi Martinelli, marcando seus dois primeiros gols na carreira justamente em um jogo que o Flu precisava convencer depois de duas atuações sem brilho contra Coritiba e Botafogo.

Outro destaque não só do time como da competição é o lateral direito Calegari. Substituto de Gilberto, que trocou o Fluminense pelo Benfica, o menino de 18 anos tomou conta da vaga e é um dos melhores da posição no Campeonato Brasileiro.

"O Calegari fez uma partida de alto nível. Entrega, posicionamento. Sempre pega um velocista. Evolução muito grande em um Campeonato Brasileiro. Tem muita coisa legal para esse menino, estamos felizes demais com ele no clube. O Martinelli parece que tem 30 anos pela capacidade e leitura de jogo. O Luiz Henrique taticamente nos ajuda bastante, hoje foi premiado com o gol que nos garantiu a vitória. São ótimos meninos e estão vindo outros que podem ajudar nossos guerreiros a conquistar nossos objetivos", disse.

Um pouco mais velho que o trio, o goleiro Marcos Felipe é mais um dos jogadores que saiu de Xerém para ajudar o Flu na campanha para retornar à Libertadores após oito anos fora da competição internacional. O jovem de 24 anos barrou o experiente Muriel e tem cinco jogos sem sofrer gols na competição.

Além disso, salvou a equipe em algumas partidas, como no jogo de ontem, quando operou um milagre nos últimos minutos para impedir o empate do Bahia em cabeçada de Alesson.

Mescla com experientes funciona com Marcão

Não foi só da juventude que o Flu se fortaleceu no Brasileirão. Com Nenê e Fred em boa fase juntos, o Tricolor chegou às três vitórias seguidas e aos 56 pontos no quinto lugar da competição, que colocam o time na briga por uma vaga direta na Libertadores. Após afastarem rumores de uma possível rusga nos bastidores, a dupla tem sido a liderança técnica que dá e aos jovens de Xerém.

Se não marca desde 5 de dezembro, quando o Fluminense venceu o Athletico, no Maracanã, o meia de 39 anos continua a ser o artilheiro da equipe com 20 gols e ou a aparecer também como garçom: já deu três assistências no período, somando quatro ao todo na competição. Já Fred tem sido o grande destaque, saindo um pouco mais da área para funcionar como pivô. No Brasileirão, são quatro gols e três assistências.

"São grandes jogadores, acostumados com grandes jogos. Faltam poucos jogos para o fim da competição e a gente precisa deles para ajudar os meninos, levantar o vestiário e dar toda a experiência que a situação precisa. Quem estiver em campo vai fazer o melhor para ajudar. Em alguns jogos, naturalmente, precisaremos optar por um ou outro, alguém jogar menos, faz parte pela idade e pelo campeonato muito difícil", afirmou Marcão.

Fluminense