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

Bermuda ciclista: como usar fora da academia a peça queridinha das famosas

Anitta é uma das adeptas da nova moda da bermuda ciclista  - Instagram
Anitta é uma das adeptas da nova moda da bermuda ciclista Imagem: Instagram

Gustavo Frank

Da Universa

31/07/2018 04h00

Kendall Jenner, Kim Kardashian, Bella Hadid e Anitta. Essas são algumas das famosas que aderiram a nova tendência de moda que está gerando burburinhos por aí: usar a bermuda ciclista fora da academia.

Sua adesão ao closet das famosas ganhou força recentemente, algo que pode ser explicado pelo acréscimo de peças esportivas na montagem de looks do público em geral, como conta a consultora de moda Paula Martins.

Bermuda ciclista - George Pimentel/Getty Images - George Pimentel/Getty Images
Damaris Lewis
Imagem: George Pimentel/Getty Images

Kendall Jenner - Marc Piasecki/Getty Images - Marc Piasecki/Getty Images
Kendall Jenner
Imagem: Marc Piasecki/Getty Images

Veja também 

Bella Hadid - Pierre Suu/Getty Images - Pierre Suu/Getty Images
Bella Hadid
Imagem: Pierre Suu/Getty Images

“A tendência do esportivo é muito forte e está mostrando que veio para ficar, já que é um item presente no guarda-roupas de muita gente e de uso cotidiano”, conta Paula.

Outra explicação para esse “boom” é a quebra de paradigmas trazido pela peça, que vem marcando presença em desfiles internacionais e chamado a atenção de nomes importantes do mundo da moda.

“A moda tem sido cada vez mais ‘polêmica’. As pessoas têm arriscado a fazer algo diferente, fora da caixinha, e a bermuda ciclista vem ao encontro desse movimento”, complementa a personal stylist Mel Galhardo.

Como usar a bermuda ciclista?

Por ser mais casual, a bermuda ciclista oferece um leque de opções e combinações -- desde que se priorize a harmonia como um todo.

O truque por trás da peça é destacar a parte de cima ou os pés. Blazer, saltos e botas podem ser aliados na hora de compor o look.

“Essa moda é estilosa por ser desafiadora”, reforça Mel Galhardo.

Kim Kardashian - Getty Images/Charley Gallay - Getty Images/Charley Gallay
Kim Kardashian
Imagem: Getty Images/Charley Gallay

Miley Cyrus - Bauer-Griffin/Getty Images - Bauer-Griffin/Getty Images
Miley Cyrus
Imagem: Bauer-Griffin/Getty Images

Embora as cores sóbrias, como o preto e o cinza, sejam as mais usadas, é possível buscar também por tons mais chamativos, como combinações de cores complementares, ou seja, oferecem contrate entre si. “Essas escolhas dependem do que a pessoa quer transmitir com o que está vestindo”, diz Mel.