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

Esse conteúdo é antigo

Coral 'triste' é visto por fotógrafa em Noronha: 'Mensagem da natureza'

Coral foi encontrado em Fernando de Noronha  - Arquivo pessoal/Roberta Viegas
Coral foi encontrado em Fernando de Noronha Imagem: Arquivo pessoal/Roberta Viegas

Heloísa Barrense

Do UOL, em São Paulo

17/08/2021 11h57Atualizada em 17/08/2021 13h31

Um coral com aparência inusitada chamou atenção da fotógrafa Roberta Viegas durante um mergulho na ilha de Fernando de Noronha no sábado (14). Viegas estava acompanhando turistas em um eio subaquático quando cruzou com a espécie marinha que se assemelhava com a imagem de um "emoji triste".

"Ele é da palma de uma mão. Relativamente pequeno, eu nunca tinha notado. E aí eu vi e na hora eu até achei engraçado, parece que ele está triste", comentou a fotógrafa ao UOL. Ela trabalha na área desde 2015.

O registro aconteceu no mesmo dia em que foram identificados resíduos de petróleo e lixo no Parque Nacional Marinho. "Eu fiquei bem impactada. Na hora achei engraçado ver esse coral assim, mas depois achei que foi uma mensagem da natureza."

Viegas comenta que, nos últimos anos, tem visto muitos corais ando pelo processo de branqueamento, um fenômeno que pode levar a espécie à morte. O processo é uma resposta ao aquecimento das águas marinhas e faz com que os corais percam suas microalgas fotossintetizantes, uma das suas principais fontes de energia.

"Vários corais ali já morreram", conta Viegas. "O da foto tem fragmentos da colônia que morreram e, onde ainda há algas, formou o que a gente vê como dois olhos e uma boquinha triste."

Alerta sobre os corais

Em dezembro do ano ado, a ONU (Organização das Nações Unidas) divulgou um relatório da Pnuma (Programa das Nações Unidas para o Meio Ambiente), que apontava que o branqueamento de corais poderia se transformar "em norma nas próximas décadas" no mundo todo devido às consequências das mudanças climáticas.

No último dia 9, um novo relatório foi publicado pela organização, que confirmou que o aquecimento global está se desenvolvendo mais rápido do que o esperado.

Segundo o IPCC ( Intergovernamental de Mudanças Climáticas), elevação do nível dos mares, derretimento de calotas polares e outros efeitos do aquecimento global podem ser irreversíveis durante séculos e são "inequivocamente" impulsionados por emissões de gases causadores do efeito estufa da atividade humana.