;(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
Logo Pagbenk Seu dinheiro rende mais
Topo

Grupo faz arrecadação para distribuir fraldas ecológicas na periferia de BH

Fraldas ecológicas são alternativas sustentáveis que projeto tenta implementar em periferia de Belo Horizonte - Reprodução/Fraldadinhos
Fraldas ecológicas são alternativas sustentáveis que projeto tenta implementar em periferia de Belo Horizonte Imagem: Reprodução/Fraldadinhos

Do UOL, em São Paulo

21/09/2020 21h20

O projeto Periferia Viva, que reúne ações de auxílio a famílias de baixa renda na região metropolitana de Belo Horizonte durante a pandemia de covid-19, criou uma campanha para garantir fraldas para bebês que vivem nas áreas atendidas.

Em site de financiamento coletivo, o projeto explica que o aumento da pobreza por causa da crise financeira veio acompanhado do aumento de pedidos por doações de fraldas.

A solução encontrada pelo Periferia Viva foi investir em fraldas ecológicas, que podem ser lavadas e reutilizadas. Não se tratam das tradicionais fraldas de pano, mas sim fraldas feitas de materiais distintos, com tecidos de toque seco na parte interna e botões que ajustam o tamanho, levando uma mesma fralda a servir para tamanhos diferentes de bebês.

Segundo o projeto, as fraldas ecológicas podem ser lavadas na máquina e os tecidos têm tempo de secagem mais rápido. Além delas, serão entregues às famílias beneficiárias absorventes reutilizáveis, que são colocados dentro de um bolso interno das fraldas e ajudam a evitar possíveis vazamentos.

"Um bebê usa em média 7 fraldas por dia, o que gera um custo aproximado de R$ 140,00 por mês para a família. Na atual conjuntura, quando muitos não têm nem o essencial para garantir a alimentação, esse valor é impraticável", explica o projeto.

O intuito é que ao menos 100 famílias da região metropolitana de BH recebam kits com três fraldas e seis absorventes reutilizáveis por bebê.

Como colaborar?

Os interessados em doar para o projeto podem encontrar mais detalhes através deste link. O Periferia Viva afirma manter uma parceria com o Fraldinhas, responsável por produzir as fraldas ecológicas, e anuncia que, a cada real doado, o valor é dobrado pela empresa.