Lightbox Componentes
Clicou na miniatura, a foto abre grande por cima da página, com fundo escuro, legenda, setas para a próxima e contador. <a sw-lightbox href='foto.jpg'>.
O que é
É o jeito de mostrar fotos grandes sem sair da página: a pessoa clica na miniatura e a imagem abre ampliada no meio da tela. Numa galeria, ela passa para a próxima com as setas, o teclado ou arrastando o dedo no celular. Você coloca sw-lightbox num link <a> cujo href é a foto grande, com a miniatura dentro. Para juntar várias fotos numa galeria, dê o mesmo nome em sw-lightbox-grp. Tem ainda legenda, contador "2 / 5", zoom ao clicar, passagem automática e o truque de uma miniatura só que abre um álbum inteiro.
O JavaScript do núcleo cria, uma vez só, a tela escura com a imagem, o botão de fechar, as setas, a legenda e o contador. Ao clicar no link ele não abre a foto numa aba nova: mostra na tela escura, com um "carregando" enquanto a imagem chega. Fecha com o ×, com Esc ou clicando fora da foto. Enquanto aberto, a página não rola. Sem JavaScript, o link continua funcionando: abre a foto normalmente.
Quando usar
- Galeria de fotos: imóvel, obra, cardápio, portfólio de fotógrafo, antes e depois.
- Foto de produto na loja: miniatura na página, grande ao clicar.
- Card de post/imóvel com uma capa só que abre o álbum todo (
sw-lightbox-set). - Para imagens passando sozinhas na página (não em tela cheia), use o Slider.
Comece aqui
-
1
Coloque o SWCore na página: CSS no
<head>e JS no fim do<body>. O segundo CSS traz as setas (ícones).<link rel="stylesheet" href="https://swcore.sanweb.com.br/dist/2.1.0/swcore.min.css"> <link rel="stylesheet" href="https://swcore.sanweb.com.br/dist/2.1.0/swcore.compl.min.css"> <!-- fim do <body> --> <script src="https://swcore.sanweb.com.br/dist/2.1.0/swcore.min.js"></script> - 2
Todas as variações
Cada quadro abaixo é o componente de verdade, rodando. O código embaixo é exatamente o que está no quadro: copie e cole.
1. Uma foto
O jeito mais simples: um link por foto. A legenda vem de sw-lightbox-cap ou, se ele faltar, do title do link. Sem nenhum dos dois, fica sem legenda.
<a sw-lightbox href="https://picsum.photos/id/1039/1400/900" sw-lightbox-cap="Cachoeira do Tabuleiro">
<img class="r-m" src="https://picsum.photos/id/1039/200/130" alt="Cachoeira">
</a>
<a sw-lightbox href="https://picsum.photos/id/1043/1400/900" title="Trilha no fim da tarde">
<img class="r-m" src="https://picsum.photos/id/1043/200/130" alt="Trilha">
</a>
<a sw-lightbox href="https://picsum.photos/id/1036/1400/900">
<img class="r-m" src="https://picsum.photos/id/1036/200/130" alt="Montanhas com neve">
</a>
<a sw-lightbox href="https://picsum.photos/id/1025/1400/900" sw-lightbox-zoom sw-lightbox-cap="Clique na foto aberta para ampliar">
<img class="r-m" src="https://picsum.photos/id/1025/200/130" alt="Cachorro">
</a>
2. Galeria (várias fotos)
Links com o mesmo nome em sw-lightbox-grp viram uma galeria: abrindo qualquer um, aparecem setas, contador "2 / 4" e dá para passar com ← → ou arrastando no celular. sw-lightbox-count="false" esconde o contador.
<a sw-lightbox sw-lightbox-grp="imovel" href="fachada.jpg" sw-lightbox-cap="Fachada"><img src="fachada-p.jpg" alt="Fachada"></a>
<a sw-lightbox sw-lightbox-grp="imovel" href="sala.jpg" sw-lightbox-cap="Sala"><img src="sala-p.jpg" alt="Sala"></a>
<a sw-lightbox sw-lightbox-grp="imovel" href="quarto.jpg" sw-lightbox-cap="Quarto"><img src="quarto-p.jpg" alt="Quarto"></a>
<a sw-lightbox sw-lightbox-grp="imovel" href="gourmet.jpg" sw-lightbox-cap="Área gourmet"><img src="gourmet-p.jpg" alt="Área gourmet"></a>
<a sw-lightbox sw-lightbox-grp="viagem" sw-lightbox-count="false" href="1.jpg"><img src="1p.jpg" alt=""></a>
<a sw-lightbox sw-lightbox-grp="viagem" sw-lightbox-count="false" href="2.jpg"><img src="2p.jpg" alt=""></a>
<a sw-lightbox sw-lightbox-grp="viagem" sw-lightbox-count="false" href="3.jpg"><img src="3p.jpg" alt=""></a>
3. Uma miniatura que abre um álbum
Com sw-lightbox-set, a página mostra uma foto só, mas ao abrir aparecem todas: o href é a primeira, e sw-lightbox-set lista as outras, separadas por vírgula. Um selo "+N" aparece sozinho sobre a miniatura.
4. Passando sozinho
sw-lightbox-auto troca de foto sozinho a cada tantos milissegundos (2000 = 2 segundos), enquanto a galeria estiver aberta. Links com hidden entram na galeria sem aparecer na página.
<a sw-lightbox sw-lightbox-grp="slideshow" sw-lightbox-auto="2000" href="1.jpg">
<img src="capa.jpg" alt="Apresentação">
</a>
<a sw-lightbox sw-lightbox-grp="slideshow" sw-lightbox-auto="2000" href="2.jpg" hidden></a>
<a sw-lightbox sw-lightbox-grp="slideshow" sw-lightbox-auto="2000" href="3.jpg" hidden></a>
Tabela de opções
| Palavra | O que faz | Exemplo |
|---|---|---|
| Ligar | ||
sw-lightbox | No link (ou outro elemento) que abre a foto. | <a sw-lightbox href="grande.jpg"> |
href | A foto grande. | href="fotos/sala.jpg" |
sw-lightbox-src | A foto grande, para quando o elemento não é um link (ex.: <img> ou <button>). Se houver href, ele vale mais. | <img sw-lightbox sw-lightbox-src="grande.jpg" src="p.jpg"> |
| Legenda e contador | ||
sw-lightbox-cap | Legenda embaixo da foto. Sem ela, usa o title. | sw-lightbox-cap="Sala de estar" |
sw-lightbox-count | false esconde o "2 / 5" da galeria. Padrão: aparece. | sw-lightbox-count="false" |
| Galeria | ||
sw-lightbox-grp | Mesmo nome em vários links = uma galeria com setas. | sw-lightbox-grp="imovel" |
sw-lightbox-set | Outras fotos do álbum, separadas por vírgula (ou uma por linha), a partir de uma miniatura só. Ganha selo "+N". | sw-lightbox-set="2.jpg, 3.jpg" |
sw-lightbox-auto | Passa sozinho a cada N milissegundos (só em galeria). | sw-lightbox-auto="3000" |
| Zoom | ||
sw-lightbox-zoom | Sem valor: clicar na foto aberta amplia 1,6×; clicar de novo volta. | <a sw-lightbox sw-lightbox-zoom> |
| Teclado e toque (automático) | ||
Esc | Fecha. | |
← → | Foto anterior / próxima. | |
arrastar | No celular, arrastar para o lado troca de foto. | |
Receitas prontas — usos reais
Situações que aparecem em quase todo site. Copie a que servir.
<div class="l l-4 gap-3">
<a sw-lightbox sw-lightbox-grp="apto-302" href="fotos/fachada.jpg" sw-lightbox-cap="Apto 302 — Fachada">
<img class="r-m w-fl" src="fotos/fachada-p.jpg" alt="Fachada" loading="lazy">
</a>
<a sw-lightbox sw-lightbox-grp="apto-302" href="fotos/sala.jpg" sw-lightbox-cap="Apto 302 — Sala">
<img class="r-m w-fl" src="fotos/sala-p.jpg" alt="Sala" loading="lazy">
</a>
<!-- …mais fotos com o mesmo sw-lightbox-grp… -->
</div>
<article class="card">
<a sw-lightbox href="reforma/1.jpg" sw-lightbox-set="reforma/2.jpg, reforma/3.jpg"
sw-lightbox-cap="Reforma da cozinha — antes e depois">
<img src="reforma/capa.jpg" alt="Reforma da cozinha">
</a>
<strong>Reforma da cozinha</strong>
<p>3 fotos · Bairro Funcionários</p>
</article>
<button type="button" sw-btn="out" id="ver-planta"><i class="swi-expand"></i> Ver planta</button>
<script>
document.getElementById('ver-planta').addEventListener('click', () => {
SW.Light.open('fotos/planta.jpg', { caption: 'Planta baixa — 72 m²', zoom: true });
});
</script>
// os eventos saem no document
document.addEventListener('sw:lightbox:open', (e) => {
console.log('abriu em', e.detail.src, 'posição', e.detail.index);
});
document.addEventListener('sw:lightbox:change', (e) => {
console.log('trocou para', e.detail.src);
});
document.addEventListener('sw:lightbox:close', () => {
console.log('fechou a galeria');
});
Eventos
sw:lightbox:opendocument, uma vez, quando a galeria abre. e.detail = { index, src } da foto que abriu.sw:lightbox:changedocument, a cada troca de foto com a galeria já aberta. e.detail = { index, src } da foto nova.sw:lightbox:navdocument, ao trocar de foto (setas, teclado, arrastar, automático). e.detail.index.sw:lightbox:closedocument, ao fechar.API (JavaScript)
SW.Light.open(url, { caption, zoom })SW.Light.open("a.jpg", "Legenda").SW.Light.close()SW.Light.next() / SW.Light.prev()SW.Light.initAll(raiz)[sw-lightbox] dentro de raiz. O núcleo já faz sozinho.Precisa de quê
swcore.min.css+swcore.min.js.swcore.compl.min.css— os ícones das setas ‹ › (sem ele as setas ficam vazias).
Cuidados — erros comuns
- O nome no JavaScript é
SW.Light, nãoSW.Lightbox. - Usar a mesma imagem pesada na miniatura e no
href: a página fica lenta. Tenha uma miniatura pequena e a foto grande só nohref. - Esquecer o
altda miniatura: é ele que o Google e o leitor de tela leem. - Nome de galeria repetido em dois lugares da página (dois imóveis com
sw-lightbox-grp="fotos"): as fotos dos dois se misturam. Use nomes diferentes. - No
sw-lightbox-set, a legenda (sw-lightbox-cap) aparece só na primeira foto.
O que ele não faz
- Só imagens: não abre vídeo, PDF nem página.
- Não tem miniaturas embaixo da foto aberta nem botão de baixar/compartilhar.
- O zoom é fixo (1,6×), sem pinça de dois dedos.

