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

Brasileirão - 2021

Fluminense vence o São Paulo e fica mais perto do G6 do Brasileirão

Colaboração para o UOL, em São Paulo

12/09/2021 22h24

O Fluminense superou o São Paulo por 2 a 1 na noite de hoje (12), no Maracanã, pela 20ª rodada do Campeonato Brasileiro, e ficou mais próximo do G6. Os gols da vitória foram marcados por Nino e Luiz Henrique. De pênalti, Reinaldo marcou para os paulistas.

Com o resultado, o Tricolor das Laranjeiras foi a 28 pontos e agora ocupa a sétima posição. O Corinthians, sexto colocado, tem 29 pontos. A equipe de Hernán Crespo continua com 22 pontos, no 16º lugar.

As duas equipes voltarão a campo já na quarta-feira (15), em jogos de volta das quartas de final da Copa do Brasil. Após empate por 2 a 2 em casa, o Tricolor Paulista visita o Fortaleza. Já o Carioca pega o Atlético-MG no Mineirão após derrota por 2 a 1 em casa.

Pela 21ª rodada do Brasileirão, os paulistas recebem o Atlético-GO no domingo (19), no Morumbi. No dia seguinte, uma segunda-feira, o Fluminense vai à Arena Pantanal para encarar o Cuiabá.

Muita marcação e poucas chances no 1º tempo

Os 45 minutos iniciais no Maracanã foram de marcação apertada das duas equipes e pouquíssimas oportunidades de gol. Com o jogo truncado e sonolento, os dois gols corretamente anulados de Luciano foram os melhores lances do Tricolor Paulista. Pelo Carioca, Danilo Barcelos teve duas oportunidades em cobranças de falta: uma parou em defesa segura de Tiago Volpi, e outra foi para fora, sem qualquer perigo à meta são-paulina.

No início da segunda etapa, Nino abre o marcador

Se faltaram bons lances no primeiro tempo, a etapa final se apresentou de forma oposta. Logo no começo, o Fluminense teve ótima oportunidade e não desperdiçou. Após cruzamento em escanteio, Luccas Claro cabeceou, a bola bateu na zaga e ficou limpa para Nino se esticar e completar para o fundo do gol.

São Paulo empata de pênalti

Minutos após Nino abrir o placar, Rodrigo Nestor fez ótimo lançamento e achou Luciano livre na área. O camisa 11 deixou o goleiro Marcos Felipe para trás e, com o gol aberto, foi derrubado por Nino. Na cobrança do pênalti, Reinaldo bateu firme, no canto, e empatou a partida.

Balde de água fria: Luiz Henrique faz o segundo do Flu

Mal deu tempo para os são-paulinos comemorarem o gol de seu camisa 6, e os donos da casa foram às redes novamente. Luiz Henrique foi lançado por Fred, ganhou de Miranda na corrida e chutou colocado, sem chances para Volpi. Gol da cria de Xerém e um balde de água fria para a equipe de Crespo.

São Paulo pressiona no fim, mas para em Marcos Felipe

Com a vantagem no placar e os minutos finais se aproximando, o Fluminense fechou a casa e recuou, abrindo espaço para os avanços do São Paulo, que pararam em boas intervenções de Marcos Felipe. O goleiro defendeu finalizações difíceis de Rigoni e Vitor Bueno no fim do jogo.

Sem Calleri, Luciano e Pablo am em branco

A torcida são-paulina vive a expectativa da reestreia do atacante Jonathan Calleri. Sem o argentino, que ainda está em fase final de preparação para voltar a vestir a camisa do clube, Hernán Crespo escalou Pablo e Luciano no ataque. A dupla de ataque ou em branco.

Gabriel Neves estreia

O meio-campista Gabriel Neves fez sua estreia pelo São Paulo. Emprestado pelo Nacional-URU, ele entrou no segundo tempo e teve desempenho razoável, com um desarme e participando ao distribuir a bola no meio-campo tricolor. Ele ainda recebeu o cartão amarelo no fim da partida. Igor Gomes, que deu lugar ao uruguaio, recebeu um cartão amarelo no primeiro tempo e está fora da próxima rodada. Os experientes Fred e Miranda também estavam pendurados e receberam a advertência.

Flu amplia invencibilidade no Brasileirão

O Tricolor Carioca entrou em campo com uma sequência de quatro jogos sem perder no Brasileirão: haviam sido dois empates, com Atlético-MG e do Juventude, e duas vitórias, sobre Bahia e Chapecoense. Com o resultado desse domingo, o Flu ampliou a invencibilidade para cinco partidas na competição.

FICHA TÉCNICA
FLUMINENSE 2 x 1 SÃO PAULO

Local: Maracanã, no Rio de Janeiro-RJ
Hora: 20h30 (horário de Brasília)
Árbitro: Jefferson Ferreira de Moraes (GO)
Auxiliares: Bruno Raphael Pires (GO) e Leone Carvalho Rocha (GO)
Cartões amarelos: Igor Gomes (São Paulo), Miranda (São Paulo), Rigoni (São Paulo) e Gabriel Neves (São Paulo); Fred (Fluminense), Nino (Fluminense), Luccas Claro (Fluminense) e André (Fluminense)
Cartões vermelhos: Nenhum
Gols: Nino (Fluminense), aos 5 minutos do 2º tempo; Reinaldo (São Paulo), aos 15 minutos; e Luiz Henrique (Fluminense), aos 20

Fluminense: Marcos Felipe; Calegari, Nino, Luccas Claro e Danilo Barcelos; André; Nonato (Wellington) e Yago Felipe; Luiz Henrique (Samuel Xavier), Caio Paulista (David Braz) e Fred (Bobadilla). Técnico: Marcão.

São Paulo: Tiago Volpi, Bruno Alves, Miranda e Léo; Galeano (Rigoni), Luan (Benítez), Igor Gomes (Gabriel), Gabriel Sara (Nestor) e Reinaldo; Luciano e Pablo (Vitor Bueno). Técnico: Hernán Crespo.