← Biblioteca componentes/dados/globo-canvas/ficha.md Abrir previewmarkupestiloscript
dados/globo-canvas

Globo de pontos em canvas, girando pelo scroll

🟢 estavel complexidade alta prefixo globe- globo mapa canvas scroll internacional arcos dados

Esfera desenhada em canvas a partir de ~3 mil pontos de terra em lat/lng, em projeção ortográfica. Vive atrás do conteúdo da seção, ancorada à direita. Não gira sozinho: o ângulo segue a rolagem. Ao entrar na dobra a face mostra as Américas, e arcos entre praças acendem em sequência.


Quando usar

Quando não usar


Padrão editorial

O globo não tem texto. O que ele exige é coerência: as rotas em ROTAS precisam ser as praças reais da empresa, e o texto da seção precisa nomeá-las. Globo com arco para Londres numa seção que só fala do Brasil é ruído.


Como usar

<link rel="stylesheet" href="componentes/dados/globo-canvas/estilo.css">
<script src="componentes/dados/globo-canvas/pontos.js"></script>
<script src="componentes/dados/globo-canvas/script.js"></script>

A ordem importa: pontos.js antes de script.js. O primeiro só publica window.__GLOBE_PTS; o segundo sai em silêncio se não achar.

Trocar as praças

No script.js, a lista ROTAS é de pares {lat, lng}:

var ROTAS = [
  [{ lat: -23.5, lng: -46.6 }, { lat: 25.7, lng: -80.2 }],   // São Paulo → Miami
  [{ lat: -23.5, lng: -46.6 }, { lat: 51.5, lng: -0.1 }]     // São Paulo → Londres
];

Três arcos é o teto confortável; acima disso vira malha.

Ganchos

Gancho Papel
[data-globe] a seção
[data-globe-canvas] o canvas
[data-globe-anchor] opcional — a borda direita da esfera se alinha à borda direita deste elemento
.globe-sec.is-drawn entrada por fade

Pareamento

Na origem, o conteúdo por cima é o conteudo/grid-entidades, e o grid de cards é a âncora. Qualquer conteúdo serve — o [data-globe-anchor] é o que amarra a esfera à coluna em vez de à tela.


Gotchas


Histórico

Projeto Onde Data Diferenças
Liberta Wealth index.html #estrutura + initGlobe() em main.js 2026-08 Origem. Função initGlobe(structId, canvasId, opts) chamada por id, classes .struct/.struct-media/.geo-globe, estado .drawn, sage rgba(198,206,170,…) cravado em quatro lugares do canvas, e — o pior acoplamento — struct.querySelector('.ents') para achar a âncora: o globo dependia de o grid de entidades existir e se chamar assim.

Normalizações aplicadas na extração: prefixo globe-; ids → [data-globe] / [data-globe-canvas], o que permite mais de um globo na página; .drawn.is-drawn; a cor passou a ser lida de --accent em vez de cravada, então o globo acompanha o tema; desacoplado do grid de entidades — a âncora virou [data-globe-anchor] opcional, com fallback para a própria seção; o listener de scroll com ticking próprio virou LIB.onScroll (que já faz o mesmo); reduce local → LIB.reduce; variáveis e funções renomeadas para português, seguindo o resto da biblioteca.