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

Ana Paula Xongani

"Não sou racista, tenho até uma camisa branca!": o discurso das camisetas

Reprodução/Instagram
Imagem: Reprodução/Instagram

Colunista do UOL

10/09/2020 04h00

Vocês talvez já saibam de cor e salteado um termo que sempre falo e que tangencia tudo o que eu proponho dizer sobre moda, que a gente "veste discursos". A ideia é, a partir da compreensão da moda como uma ferramenta para discutir sociedade, me apegar ao discurso não verbal das pessoas a partir do que elas vestem.

Hoje, várias marcas captaram o poder dessa ideia e a urgência que, principalmente alguns grupos específicos da sociedade, tem de romper barreiras de silenciamentos. Isso é tão, mas tão forte que se tornou literal com o "boom" (vou chamar de boom por pura avaliação empírica até onde meus olhos alcançam) das peças de roupas e outros objetos estampados com frases. Assim, rapidamente, me lembro da Negrei, NBlack_21, Resisto OPM e Mulher Negra é a Revolução.

Pra falar um pouco sobre isso, conversei com o Don Lima, criador e designer da Negrei, marca que conheci na edição do ano ado da Feira Preta, evento que eu considero, como já falei aqui, uma das mais importantes arelas da moda realizada por negras e negros do Brasil e outros países da América Latina.

"Sabe, eu sou um cara mais fechadão, na minha. Nem sempre falo ou quero falar em voz alta o que penso, então as palavras e grafismos nos produtos que crio falam por mim", me conta ele que, depois de ter uma marca de camisas estampadas de alfaiataria sob encomenda, quis desenvolver uma marca que chegasse a mais pessoas e pudesse ser usada em mais ocasiões além de festas e outros eventos sociais.

Com a frase "não sou racista, tenho até camisa branca!", primeira que estampou uma camiseta da Negrei, ele usou de comparação irônica para levar identificação aos negros e uma cutucada naqueles que se dizem não racistas porque conhecem ou convivem com pessoas negras, nas clássicas: "Não sou racista, tenho até amigo negro"; "Não sou racista, sou casada com uma negra" e coisas assim.

Don me conta que, a partir das frases, que ele também estampa em outros produtos e superfícies, podem surgir oportunidade de diálogos, reflexões e até boas risadas. "Na sociedade que a gente vive, é impossível não estarmos em contato com pessoas que tem atitudes racistas ou que as reproduzem. Então, a gente sabe que em algum momento da vida vai ter que ou "ar pano" ou criticar quem "a pano" para essa galera. Aí, criei o quê? Um pano de prato com esta frase estampada: "não o pano pra racista".

As frases que a Negrei utiliza estão muito conectadas com uma galera jovem, que está construindo novos códigos de comunicação a partir do casamento dos discursos de movimentos sociais tradicionais com o que se fala nas ruas e com os múltiplos canais de mídia que temos.

don - Divulgação - Divulgação
Este é o queridíssimo Don Lima
Imagem: Divulgação

"Eu to sempre muito ligado. Assisto muitas lives, leio coisas, escuto podcasts. Minha criatividade bebe dessas fontes", comenta. Ele entende que a Negrei não é uma marca de moda, mas uma marca de comunicação que tem na moda uma de suas plataformas para expressar o que quer dizer. Eu acho bem genial. Vocês não acham?

Perguntei ao Don Lima, quem ele gostaria de presentear com uma camiseta Negrei. Pensou, pensou e disse: "MalcomX! Com a nossa blusa BLK PWR". Já pensou que potência?

Aproveito este espaço para dizer e registrar que sou fã demais do seu trabalho e também para agradecer pelo papo. Tamo junto!

E vocês, leitores? Que marcas conhecem e gostam que estampam frases que te representam? Que tal me contar lá no Instagram? Bora bater trocar essas referências? Quem sabe não faço um álbum por lá?