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

Praia em Fernando de Noronha é favorita para viajar no mundo; veja o top 10

Baia do Sancho: águas claras entre o Morro Dois Irmãos e a Baía dos Golfinhos - Getty Images
Baia do Sancho: águas claras entre o Morro Dois Irmãos e a Baía dos Golfinhos Imagem: Getty Images

De Nossa

30/10/2020 14h17

O Traveler's Choice Awards de 2020, realizado pelo TripAdvisor, divulgou a lista das melhores praias para se conhecer no mundo, segundo os leitores.

O Brasil aparece em primeiro lugar no ranking com a Baia de Sancho, em Fernando de Noronha. A praia une águas cristalinas de diferentes tons e falésias cobertas por mata nativa.

Baia do Sancho, Fernando de Noronha - MaFelipe/Getty Images - MaFelipe/Getty Images
Baia do Sancho: ponto de mergulho
Imagem: MaFelipe/Getty Images

Com bancos de corais e boa visibilidade da água, o destino costuma atrair mergulhadores e faz parte de roteiros de barco. Para ar a Baia, os visitantes descem uma estreita escadinha dentro de uma fenda e enfrentam mais uma sequência de degraus.

Outra praia brasileira a figurar na lista são as Prainhas do Pontal do Atalaia, em Arraial do Cabo, no estado do Rio. Assim como na Baia dos Sanchos, os viajantes também recebem as boas-vindas numa escadaria íngreme.

Do topo do morro do Pontal do Atalaia, os visitantes avistam a areia branca banhada pelo mar calmo e transparente que mescla as cores verde e azul.

O nome é no plural ("prainhas") porque a área abriga duas praias. Na maré baixa, porém, as áreas tornam-se uma só faixa de areia. Uma duna no meio da vegetação ainda proporciona uma espécie de mirante natural.

Arraial do Cabo - Thalita Assis / EyeEm/Getty Images - Thalita Assis / EyeEm/Getty Images
Prainhas do Pontal do Atalaia: a mais linda de Arraial do Cabo
Imagem: Thalita Assis / EyeEm/Getty Images

Outro destaque no ranking é Cuba, que aparece em dose dupla com a Playa Paradiso e a Varadero Beach. As Ilhas Turcas e Caicos, Itália, Ilhas Caimão, Aruba, Porto Rico e Grécia também marcam presença na lista.

Confira o Top 10:

1. Baia do Sancho. Fernando de Noronha, Brasil

2. Grace Bay. Providenciales, Ilhas Turcas e Caicos

3. Playa Paraiso. Cayo Largo, Cuba

4. Spiaggia dei Conigle (Rabbit Beach). Lampedusa, Itália

5. Prainhas do Pontal do Atalaia. Arraial do Cabo, Brasil

6. Seven Mile Beach. Grande Cayman, Ilhas Cayman

7. Eagle Beach. Palm - Eagle Beach, Aruba

8. Flamenco Beach. Culebra, Porto Rico

9. Varadero Beach. Varadero, Cuba

10. Kleftiko Beach. Milos, Grécia