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


Trança embutida também funciona em cabelos curtos. Veja como fazer

Trança embutida requer prática e habilidade -- mas pode ser feita no cabelo curto também! - Natália Eiras
Trança embutida requer prática e habilidade -- mas pode ser feita no cabelo curto também! Imagem: Natália Eiras

Natália Eiras

Colaboração para Universa

14/11/2020 04h00

Ter cabelo curto ou médio não significa diminuir as opções de penteados, mas sim diversificar a forma de estilizar os fios. E a trança bilateral embutida é, como mostra a criadora de conteúdo Gee Ramos (@geeeramos), de Fortaleza (CE), uma opção para prender o chanel durante os dias mais quentes.

Antes de criar looks para o Instagram, Gee também teve um canal no YouTube onde ensinava como fazer tranças. Por isso, ela tem algumas dicas para quem vai se aventurar, pela primeira vez, no penteado embutido. "Vai cansar a mão, mas não desista. Encontre a forma que te deixa menos confusa na hora de fazer o penteado: na frente do espelho ou não. E, na primeira vez, talvez não fique exatamente do jeito que você quer, mas tente novamente", fala.

Preparada para encarar essa missão? Veja os os a seguir:

o 1: Divida o cabelo ao meio e prenda um dos lados. Parece um detalhe, mas isso vai facilitar o trabalho na hora que você começar a trançar, já que evitará que você pegue cabelo a mais enquanto faz o penteado.

Trança curto - foto 1 - Natália Eiras - Natália Eiras
Imagem: Natália Eiras

Trança curto - foto 2 - Natália Eiras - Natália Eiras
Imagem: Natália Eiras

o 2: Na parte de cima do cabelo, perto da raiz, separe uma mecha mediana e a divida em três. Estas partes vão te orientar ao longo da trança. Use a mão em forma de pinça para ar a primeira mecha da parte de trás do cabelo por debaixo da do meio e por cima da outra mecha lateral.

Trança curto - foto 4 - Natália Eiras - Natália Eiras
Imagem: Natália Eiras
Trança curto - foto 5 - Natália Eiras - Natália Eiras
Imagem: Natália Eiras

o 3: Com a mecha que já foi trançada pela primeira vez, junte um pouco do cabelo da sua franja. Depois, pegue a que ficou no meio e junte com um pouco mais de cabelo da parte de trás da sua cabeça. Repita esse o, sempre priorizando a mecha que fica no centro do trançado.

Trança curto - foto 7 - Natália Eiras - Natália Eiras
Imagem: Natália Eiras
Trança curto - foto 8 - Natália Eiras - Natália Eiras
Imagem: Natália Eiras

o 4: Repita os os, sempre juntando um pouco de cabelo a cada trançado, para ir formando a trança embutida até o comprimento que você prefira e amarre com um elástico.

Trança curto - foto 10 - Natália Eiras - Natália Eiras
Imagem: Natália Eiras
Trança curto - foto 11 - Natália Eiras - Natália Eiras
Imagem: Natália Eiras

o 5: Com as pontas presas, use os dedos para soltar um pouco cada gomo da trança. Assim, o penteado ganhará volume e ficará com vibe de despretensioso.

Trança curto - foto 13 - Natália Eiras - Natália Eiras
Imagem: Natália Eiras
Trança curto - foto 14 - Natália Eiras - Natália Eiras
Imagem: Natália Eiras

Faça a mesma coisa do outro lado. E está pronta a trança embutida!

trança curto - representativa - Natália Eiras - Natália Eiras
Imagem: Natália Eiras

Este penteado pode ser um pouco complicado para iniciantes, mas, como disse Gee, a prática é a chave. Assim como um bom delineado, ninguém nasce sabendo fazer trança embutida. Se você ficou com alguma dúvida, veja o vídeo: