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

"Toda vez que visto esta camisa, sinto um pedacinho da minha avó comigo"

Fabianna relembra a história com a avó a partir de camisa, que a contava sobre seu ado a partir das peças no guarda-roupas - Arquivo Pessoal
Fabianna relembra a história com a avó a partir de camisa, que a contava sobre seu ado a partir das peças no guarda-roupas Imagem: Arquivo Pessoal

Fabianna Carraro, em depoimento a Marilia Marasciulo

Colaboração para Nossa

07/02/2022 04h00

Fabianna Carraro

Fabianna Carraro

Profissão

Consultora de estilo

Minha roupa com história

Camisa de seda que foi da minha avó

Minha avó era uma fashionista muito antes de esse conceito existir. As roupas dela eram incríveis, pois ela é quem fazia as próprias peças: comprava o tecido, criava a modelagem e costurava. Todo o guarda-roupa dela era único.

Desde pequena, o armário dela me fascinava. Sempre que a visitava no sítio onde ela morava, em Minas Gerais, pedia para ver o guarda-roupa. Ainda lembro que ela me dizia "mas você gosta de coisa velha, hein, menina, gosta de tranqueira!". É claro que eu adorava sair com alguma roupa "nova" herdada da minha avó, mas o que eu gostava mesmo era das histórias que ela contava quando ia me mostrando cada peça.

Uma delas foi essa camisa de seda que ela fez para o casamento da irmã. Hoje a camisa tem pelo menos 50 anos. Quando ela me mostrou, fiquei encantada pela modelagem, pelo tecido e pela história do casamento. Mas ela disse que ainda não estava pronta para me dar, então esperei alguns anos, até que ganhei a camisa.

Fabianna com a camisa que pertenceu a sua avó - Arquivo Pessoal - Arquivo Pessoal
Fabianna com a camisa que pertenceu a sua avó
Imagem: Arquivo Pessoal

ei a usá-la muito — não só como camisa, como minha avó gostava de usar, mas como chemise, saída de praia, vestido. Já usei até em festa, com salto alto e órios mais chiques. E a camisa permanece firme e forte: tudo nela ainda é original, das ombreiras até os botões. Minha avó tinha o maior cuidado com as peças e eu pretendo manter isso.

Toda vez que visto a camisa, sinto um pedacinho da minha avó comigo. É como se voltasse para aqueles momentos no quarto, com pilhas de roupas em cima da cama, experimentando as peças e ouvindo as histórias. É quase como uma viagem no tempo.

Mas a camisa se tornou também um símbolo da proposta do meu trabalho hoje: busco mostrar para as pessoas que roupas não são descartáveis."

Peça além de manter uma lembrança, cumpre prática da moda upcyling - Arquivo Pessoal - Arquivo Pessoal
Peça além de manter uma lembrança, cumpre prática da moda upcyling
Imagem: Arquivo Pessoal

Elas devem ser doadas, repetidas, contar histórias, carregar afeto. A moda ganha muito mais significado quando se torna circular, e quanto mais enxuto for o seu armário, mais combinações consegue fazer.

A camisa da minha avó é prova disso e me dá essa sensação de dever cumprido: além de guardar com carinho e usar muito, tenho certeza que ela será herdada por minha filha, que vai continuar usando e se lembrando da história da sua bisavó fashionista.

Como usar

Chemise

Clássico, básico e estiloso, o vestido chemise é um tem-que ter no guarda-roupa feminino. Invista no atemporal modelo branco, ou aposte em tecidos diferentes, como o jeans.

Mix de poá

A estampa de por nunca sai de moda, mas pode ser atualizada para uma produção mais fashionista. Uma dica é brincar com a mistura de tamanhos ou cores das bolinhas.