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

"Calça que comprei com primeiro salário simboliza momento especial da vida"

Calça de Lucas se transformou em um short ao longo do tempo e o acompanhou durante grande parte da sua vida  - Arquivo Pessoal
Calça de Lucas se transformou em um short ao longo do tempo e o acompanhou durante grande parte da sua vida Imagem: Arquivo Pessoal

Lucas Aellos em depoimento a Marilia Marasciulo

Colaboração para Nossa

18/10/2021 04h00

Lucas Aellos

Lucas Aellos

Profissão

Jornalista

Minha roupa com história

Calça jeans que se transformou em um short

Saí de casa em 2008 para fazer faculdade na Universidade Federal de Ouro Preto. Cresci em Lorena, no interior de São Paulo, e sou de uma família simples. Então, logo que cheguei na faculdade, tive que começar a trabalhar para me sustentar.

Um mês depois de iniciar a graduação, já estava trabalhando. E, como poucas semanas depois era meu aniversário de 20 anos, resolvi me dar um presente com meu primeiro salário, que na época era de R$ 400.

Fui a uma loja no centrinho comercial da cidade. Escolhi uma camiseta com estampa do Speed Racer e uma calça jeans. Como um bom libriano, o lookinho novo me deixou feliz, principalmente porque em Mariana e Ouro Preto tem muitos festivais culturais. E nada como estar se sentindo bem para encarar as festinhas, né?

Lucas Aellos usando o short, que antigamente era uma calça jeans - Arquivo Pessoal - Arquivo Pessoal
Lucas Aellos usando o short, que antigamente era uma calça jeans
Imagem: Arquivo Pessoal

Doei a camiseta há pouco tempo — ainda estava em perfeito estado, apenas um pouco desbotada na região da gola. Mas a calça se tornou minha peça favorita, apesar de agora ser um short. Já está meio desgastada (o cós tem rasgo e a parte interna do bolso um furo).

Ela é bem velha, mas não me importo de usar para ir a dates, a bares legais. Tenho esse carinho com o atual shorts porque simboliza um momento especial da minha vida, além de, depois de tantos anos, ter me acompanhado em várias aventuras".

Lucas se recusa a desapegar da peça e, mesmo surrada, é uma de suas favoritas - Arquivo Pessoal - Arquivo Pessoal
Lucas se recusa a desapegar da peça e, mesmo surrada, é uma de suas favoritas
Imagem: Arquivo Pessoal

Na época, eu trabalhei bastante sob o sol quente para conseguir comprar a calça. Pra mim, ainda hoje, mesmo com um guarda-roupas repleto de outros shorts, ele continua sendo o que melhor me veste e tem um tom de jeans incrível, que eu não acho facilmente por aí. Tenho muito orgulho dessa peça.

Não tenho coragem de me desfazer dela. Tenho medo até de levar na costureira para tentar arrumar e acabar estragando! Dentro dela, me sinto extremamente confortável e confiante, e espero poder continuar usando por muito tempo ainda.

Como usar

Visual "destroyed"

Encarne o skatista que existe em você e aposte em bermudas jeans rasgadas ou com a barra desfiada para um visual bem street. Combine com camisetas e tênis para um look moderno e despretensioso.

Verão

A bermuda jeans é peça obrigatória no guarda-roupa de verão masculino. Para um look cool, aposte em camisa com botões meio abertos e sandálias ou tênis.