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

Movimento

Inspiração pra fazer da atividade física um hábito


UOL no Verão: arena em SP tem beach tennis, futevôlei, DJ e muita diversão

Imagem meramente ilustrativa - Getty Images
Imagem meramente ilustrativa Imagem: Getty Images

Do VivaBem em São Paulo

05/01/2022 04h00

Desde de dezembro, o UOL no Verão está agitando a estação mais quente do ano com muitos conteúdos especiais. E, nos dois próximos finais de semana (8, 9, 15 e 16 de janeiro), o evento terá um espaço "pé na areia" na cidade de São Paulo, aberto ao público das 12h às 22h, com diversas atividades gratuitas.

Na arena do UOL no Verão, que estará montada na Estação Praia, no Butantã, será possível jogar beach tennis, futevôlei, altinha (embaixadinha) e futmesa e fazer aulas de treinamento funcional. Essas modalidades poderão ser praticadas das 14h às 18h, gratuitamente, com agendamento no local.

O espaço receberá convidados especiais, como a modelo Cris Paladino, o medalhista de ouro na ginástica olímpica Arthur Zanetti e o ex-BBB André Martinelli e contará com área kids e restaurantes, que oferecerão um cardápio apropriado para o clima de verão, com wraps, espetinhos, bowls de frutas, sucos e drinques.

Além disso, a arena do UOL no Verão terá um DJ animando o público ao longo de todo o dia e pocket shows (divulgaremos as bandas e os horários em breve).

Para garantir a segurança do público, será obrigatória a apresentação do comprovante de vacinação completa contra a covid-19 para entrar na arena. No espaço serão seguidos todos os cuidados recomendados pelas autoridades de saúde, como uso obrigatório de máscara, álcool em gel e distanciamento social.

Além da arena, até o final de janeiro, o UOL no Verão trará para você uma série de conteúdos, que inclui os programas em vídeo "Otalab", "Vai Ter Churras", "E Aí, Beleza?" e "Conexão VivaBem". Acompanhe tudo em uol.com.br/uolnoverao/.

O projeto conta com o patrocínio de Diageo, 123 Milhas, Nivea, Natural One, Nestlé, Eudora, PixBet, Sabesp e Clube UOL.

UOL no Verão

Entrada gratuita, com capacidade máxima de 100 pessoas
Data 8, 9, 15 e 16 de janeiro
Horário Das 12h às 22h
Local Estação Praia - Rua Alvarenga, 2383 - Butantã, São Paulo (SP)