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

Previsão diária de Virgem

Virgem -  -

22 de Maio

Pode ser um bom momento para lidar com questões financeiras mais profundas, como dívidas ou investimentos. Use a sua habilidade prática para lidar com assuntos materiais e planeje o seu próximo o profissional. Tudo o que é compartilhado merece atenção!

Receba as previsões de Virgem por email

Email inválido

Previsão semanal de Virgem

Semana de 18/05 a 25/05

Previsão para Virgem

Procure ter cautela ao lidar com temas delicados, especialmente envolvendo crenças, estudos ou planos de longo prazo. Nem tudo precisa ser...

Previsão mensal de Virgem

Maio

Cenário do mês

O início de maio traz uma forte conexão com seus ideais e suas crenças. Questões como propósito, conhecimento e expansão da mente ganham destaqu...

Virgem no trabalho

Terra é o elemento que rege este signo, que graças a isso traz como aspecto forte a racionalidade. Ter o pé no chão permite que pessoas de Virgem consigam se sair bem trabalhos organizacionais, istrativos e sistemáticos. Facilmente vai ganhar a confiança de pessoas que estão em posição de liderança. Tende a fazer carreira em poucas empresas, sempre com muito tempo de experiência em cada uma. Não aceita pedir dinheiro emprestado e pode até mesmo ser considerada mão de vaca. Porém, sabe para onde vai cada um dos seus centavos e sempre dá um jeito de pagar todas as contas.

Virgem no amor

Românticas, as pessoas de Virgem esperam um amor ideal, romântico e que alimente seus sonhos. No começo podem se mostrar inseguras e insistentemente fechadas, pouco abertas a brincadeiras ou investidas mais íntimas. Quando se entregam a um relacionamento, é para valer e com certeza têm expectativas de construir uma família, ter um lar e um amor duradouro. Devem tomar cuidado para não cair na rotina e deixar os momentos de prazer de lado pensando nas obrigações do lar. É preciso sentir confiança para se entregar no sexo.

Virgem na família

Pessoas de Virgem sentem necessidade de cuidar da vida daqueles que as cercam. Não no sentido negativo, mas com o objetivo de proporcionar qualidade de vida e de suprir as necessidades mais básicas. Isso pode trazer uma certa frieza no trato com o outro. Com filhos e amores, Virgem deve tomar cuidado para não ser controlador. No mais, é aquela pessoa sábia que será fonte de conhecimento quando alguém precisar.


Horóscopo