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

Vai maquiar os olhos? Veja como usar diferentes tipos de pincéis

A maquiadora Gabriela Barros, da Liga da Beleza, explica quais pincéis funcionam melhor para cada situação - Divulgação/ Liga da Beleza
A maquiadora Gabriela Barros, da Liga da Beleza, explica quais pincéis funcionam melhor para cada situação Imagem: Divulgação/ Liga da Beleza

Clara Novais

Colaboração para Universa

01/07/2022 14h14

Já reparou que existe uma infinidade de pincéis para maquiar os olhos? Fica até difícil entender para que serve cada um ou se é preciso ter um kit completo para arrasar no make. Como nada é melhor do que uma profissional para ajudar nessa questão, pedimos para a maquiadora Gabriela Barros, da nossa Liga da Beleza, explicar quais funcionam melhor para cada situação.

O primeiro aspecto a observar é o tamanho do pincel, já que ele precisa se adequar ao seu olho. Experimente, veja o que performa melhor em você. Mas como regra básica é bom saber: quanto mais compridas as cerdas, menor o controle da área. Então é melhor deixar os mais longos para preencher uma área maior. As cerdas mais curtinhas são melhores para depositar sombra com mais precisão em espaços menores.

Já a densidade influencia na quantidade de produto depositado. Quanto mais apertadinhas as cerdas, mais sombra é aplicada. Quanto mais abertas, mais suave fica o resultado. Agora, sabe aquele pincel de cerdas bem curtinhas? É chamado de pincel de detalhe e serve para ir com muita precisão na linha dos cílios ou nos cantinhos.

Pronto! São essas as regras que você precisa saber para usar os pincéis de olhos. Não existe uma resposta definitiva. É preciso observar comprimento e densidade das cerdas, e entender qual efeito você busca antes de decidir qual usar.

E mais!

Quem aí é fã de delineado, mas sente dificuldade de fazer porque tem a pálpebra mais gordinha? Savana Sá ensina o segredo para arrasar mesmo assim:

Já Angélica Silva criou um make cheio de referências dos anos 2000 para quem quiser se inspirar: