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


#ProjetoVivaBem: receba em seu email treino e dieta para perder gordura

Os treinos do #ProjetoVivaBem contam com exercícios que podem ser feitos em qualquer lugar - iStock
Os treinos do #ProjetoVivaBem contam com exercícios que podem ser feitos em qualquer lugar Imagem: iStock

Do VivaBem

04/11/2020 13h38

O home office, a ansiedade e as mudanças no dia a dia provocadas pela pandemia do coronavírus atrapalharam os planos de muita gente que iniciou 2020 disposto a mudar o cardápio, sair do sedentarismo e emagrecer. Se você é uma dessas pessoas que viu sua meta para perder peso sair dos trilhos, saiba que ainda dá tempo de mudar hábitos e conquistar o que foi planejado lá no começo do ano. E o VivaBem vai dar uma mãozinha para quem deseja conseguir isso.

Transformamos o #ProjetoVivaBem —3 meses para entrar em forma, realizado no início do ano, em uma série de newsletters (neste link tem a caixa para você se cadastrar para recebê-las). Ao a newsletter do #ProjetoVivaBem, você vai receber em seu email, ao longo de 12 semanas, um plano completo e gratuito com treino, dieta e dicas para mudar o estilo de vida, que ajudarão a alcançar o objetivo de perder gordura, ganhar músculos e, principalmente, adotar hábitos mais saudáveis.

Uma vez por mês, você receberá um cardápio específico para a redução de gordura corporal, elaborado pela nutricionista Suzana Bonumá, especialista em nutrição pela USP (Universidade de São Paulo). Já os treinos de força serão enviados três vezes por semana ao seu email.

A rotina de atividades é bastante intensa e foi desenvolvida pelo treinador Fernando Guerreiro, colunista do VivaBem. Ela tem como objetivos proporcionar um grande gasto calórico e definir os músculos, e conta somente com exercícios realizados com o peso do corpo, que podem ser feitos na sala de casa, no quintal, na quadra do prédio, no parque ou até mesmo na academia.

Assine a newsletter do #ProjetoVivaBem, siga nosso programa de treino e dieta e compartilhe nas redes sociais sua nova rotina e todos os resultados que ela trará usando a #ProjetoVivaBem.