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

Universa Ensina

Dicas de moda e beleza de um jeito rápido e descomplicado


Preguiça de se arrumar? Aprenda a fazer esse coque prático e estiloso

Simples, chique e versátil: esse coque será a solução dos seus problemas - Natália Eiras
Simples, chique e versátil: esse coque será a solução dos seus problemas Imagem: Natália Eiras

Natália Eiras

Colaboração para Universa

10/10/2020 04h00

Sem tempo ou paciência para arrumar o cabelo em tempos de trabalho remoto? Esse coque bagunçado é uma boa saída para as videoconferências surpresas.

A criadora de conteúdo e videomaker Naetê Andreo, 27, (@naeteandreo) gosta de usar o penteado por conta de sua versatilidade. "Ele pode ficar super chique ou bem despojado", fala. Para o primeiro resultado, basta completar o look com um brincão e caprichar na make. Para segundo, mantenha o moletom do home office. "Adora especialmente nos dias mais quentes, porque deixa a nuca livre."

Naetê fala que gosta de fazer o coque quando o cabelo está sujo. "O cabelo ganha estrutura", explica. Ele também fica melhor quando os fios secaram natural e estão sem finalização com chapinha ou escova. "Quando o cabelo está mais cacheado, o coque fica mais volumoso e empinado", diz.

Veja o o a o de como conseguir o coque descolado e versátil:

1. Reparta o cabelo ao meio (esse é o primeiro truque) e jogue todo o cabelo para trás. Não se preocupe em deixar todos os fios certinhos: a graça do penteado é essa pegada bagunçada.

coque bagunçado - foto 1 - Natália Eiras - Natália Eiras
Imagem: Natália Eiras

2. Prenda o cabelo como se fosse fazer um rabo, mas na última volta, não puxe ele todo para fora do elástico. Deixe que uma bola de cabelo se forme com as pontas ainda presas pelo elástico. Você vai usar esse cabelo para dar formato ao coque. Se for do seu agrado, deixe mechas soltas ao redor do rosto para fazer um charme.

coque bagunçado - foto 2 - Natália Eiras - Natália Eiras
Imagem: Natália Eiras

3. Pegue as laterais da "bolinha" de cabelo e a abre, formando um leque com os fios. Quanto mais você abrir os fios, mais volumoso o coque vai ficar. O coque pode ficar maior ou menor, dependendo do comprimento dos seus fios.

coque bagunçado - foto 3 - Natália Eiras - Natália Eiras
Imagem: Natália Eiras

4. Puxe um pouco mais, amasse o coque para que ele vá ganhando mais forma. Tudo depende de como você gosta que ele fique.

coque bagunçado - foto 4 - Natália Eiras - Natália Eiras
Imagem: Natália Eiras

5. Este é um o opcional. Você pode soltar uma mecha do próprio coque para que ele caia na lateral da sua cabeça, parecendo um rabo. O truque deixa o visual mais descolado.

coque bagunçado - foto 5 - Natália Eiras - Natália Eiras
Imagem: Natália Eiras
coque bagunçado - foto 6 - Natália Eiras - Natália Eiras
Imagem: Natália Eiras

Pronto! Você está gata e garota para ir ao supermercado, participar de alguma videoconferência ou ficar em casa mesmo nesse calorão.

coque bagunçado - foto 10 - Natália Eiras - Natália Eiras
Imagem: Natália Eiras

Ficou com alguma dúvida? Veja o vídeo com o o a o completo: