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

Mulheres da geração Z encontram potência em defender causas políticas

Unsplash/Brianna Santellan
Imagem: Unsplash/Brianna Santellan

29/11/2020 04h01

As mulheres bateram recorde em representatividade nas eleições para a Câmara municipal de São Paulo este ano. Pode ser até motivo para comemoração, mas, mesmo com esse dado histórico, elas ainda são apenas 23% do legislativo municipal da maior cidade do país.

A representatividade feminina vem crescendo aos poucos na política tradicional, mas, quando o assunto é defesa de causas, as mulheres saem na frente disparado. E é exatamente esse o tema do 3° episódio do CAOScast publicado por TAB na última quinta-feira.

Com a conquista desse espaço político, elas vêm percebendo que talvez faça mais sentido desenvolver sua potência do que correr atrás de poder, afirma a pesquisadora Rebeca de Moraes. "Na história, o poder sempre foi associado ao que é masculino e ao que é externo, ao que vem de fora. É o sistema que te dá poder, é ele que dá poder só para os homens. Já a potência, por outro lado, é uma força que vem de dentro para fora, que pode estar em qualquer um, independente do gênero. (...) As mulheres jovens estão lutando cada vez mais para quebrar essa estrutura que dá poder aos homens." (Ouça a partir de 10:42)

Por meio de pequenas revoluções e posicionamentos políticos — seja na forma de se vestir, de se maquiar ou não, seja em não aceitar conceitos machistas na vida doméstica —, elas vão ganhando força de discurso e descobrindo como querem estar representadas.

"A gente está vendo aqui o reconhecimento de uma força que nega aquele rótulo que historicamente sempre houve, que a mulher é o sexo frágil, mas que também foge daquela ideia de que a mulher é uma guerreira que dá conta de tudo, de todos. Porque ir para esse lado da mulher que dá conta de tudo também cai em alguns prisões", reflete Marina Roale, head de pesquisa da Consumoteca. (A partir de 10:33)

CAOScast vai ao ar todas as quintas-feiras

São as garotas da geração Z que estão observando uma mudança estrutural plantada por suas mães, avós e bisavós, e que agora está se sedimentando. O discurso da vice-presidente eleita dos Estados Unidos é um exemplo. Kamala Harris afirma que é a primeira, mas não será a última mulher a ocupar o posto.

"Historicamente, as mulheres tiveram o negado a muitos espaços de poder, de atuação política, mas a gente vê que isso está mudando, o mundo está se transformando. Essas que chegaram lá são as primeiras que plantaram sementes de mudança, e agora a gente está vendo essas sementes sendo colhidas pela geração Z", avalia Roale. (A partir de 8:02)

Encontrar sua própria forma de se posicionar também tem muito a ver com levar em conta as especificidades da pauta das mulheres. E, mesmo entre elas, é bom lembrar que as causas não são unânimes, destaca o pesquisador Tiago Faria no podcast. "Acho que mulher só é um grupo identitário homogêneo sob o olhar do homem branco hétero, não é? Mulher é muita coisa e carrega uma pluralidade incontável. Tem mulher indígena, tem mulher trans, tem mulher lésbica, então acho que tem realidades muito específicas. (...) Não dá mais para falar de gênero e não falar de raça." (A partir de 12:15)

Gostou do tema? Você pode ouvir a conversa completa entre Michel Alcoforado, Rebeca de Moraes, Marina Roale, e Tiago Faria no episódio #03 do CAOScast, mulheres na política.