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

Cruzeiro

Luxa trata jogos do Cruzeiro como finais: 'Ganhar sem medo de ser feliz'

Jogadores do Cruzeiro se abraçam antes de a bola rolar - Bruno Haddad/Cruzeiro
Jogadores do Cruzeiro se abraçam antes de a bola rolar Imagem: Bruno Haddad/Cruzeiro

Guilherme Piu

Do UOL, em Belo Horizonte

13/09/2021 04h00

Vanderlei Luxemburgo instituiu uma meta para que o Cruzeiro consiga voltar à elite do Campeonato Brasileiro. Segundo as contas do treinador, a Raposa precisaria vencer dez dos seus últimos 16 jogos e ainda empatar as partidas restantes. A missão começou com sucesso, já que o time celeste venceu a Ponte Preta no sábado (11), na Arena do Jacaré, em Sete Lagoas.

Com a vitória, o Cruzeiro subiu para a 13ª colocação, com 29 pontos. Caso vença o Operário na quinta-feira (16), às 19h, também em Sete Lagoas, pode se aproximar da décima colocação - hoje ocupada pelo Vasco, que tem 32 pontos.

Para Luxemburgo, muitos não acreditam que o Cruzeiro possa ser um dos postulantes ao o. O departamento de matemática da Universidade Federal de Minas Gerais (UFMG) diz que há apenas 1,9% de chances de a Raposa voltar à Primeira Divisão. Mesmo com esse cenário, o treinador confia que é possível alcançar a meta.

"Importante é ir jogo a jogo. As pessoas estão colocando a gente muito fora da briga pela classificação, e eu acho que nós temos briga pela classificação pelo número de pontos que vamos disputar. É mais difícil do que as outras equipes que já estão com vantagem, mas temos que acreditar e continuar trabalhando em busca disso daí. E para isso acontecer temos que ter números de vitórias sequenciais para dar ânimo, motivação, os adversários já veem um Cruzeiro diferente. Já estão vendo, mas precisamos de uma sequência de vitórias", analisou o treinador.

"Dentro de campo será sempre uma decisão para nós, sem medo de ser feliz. Temos dez jogos para ganhar", afirmou.

Com Luxemburgo, o Cruzeiro melhorou seu aproveitamento na Série B. Com o experiente técnico no comando, o time alcançou quatro vitórias e quatro empates e ampliou sua invencibilidade. Com Mozart, antecessor de Luxa, a Raposa vinha de dois empates. No total, são dez partidas sem derrota.

As vitórias também fazem o Cruzeiro diminui o risco de rebaixamento. Os matemáticos da UFMG afirmam que após a 23ª rodada o time azul tem 5,5% de chances de cair para a Série C.

"A gente tem que continuar somando independentemente do time que vai enfrentar. Temos que lutar jogo a jogo, buscar ponto a ponto, e assim vamos crescendo na tabela. O apoio da torcida é fundamental em todos os nossos jogos. A gente estava com saudade, até falei no banco o quanto faz diferença a torcida. Espero que possamos seguir assim, crescendo juntos. O Cruzeiro vai entrar para vencer sempre. Vamos ajustar o time para entrar com o mesmo espírito, com garra para conseguirmos um bom resultado na quinta-feira", disse o atacante Bruno José.

Cruzeiro