Text Carousel Componentes
Frases que trocam no mesmo lugar — depoimentos, avisos, citações — com 9 efeitos de troca, setas, bolinhas e troca automática. <div sw-carousel sw-carousel-auto='4000'>.
O que é
É aquela área do site onde os depoimentos de clientes vão se revezando: "Atendimento nota 10!" some e entra "Chegou antes do prazo". Serve para qualquer bloco curto de texto que você quer mostrar um de cada vez, no mesmo espaço: depoimentos, frases da marca, avisos da loja ("Frete grátis acima de R$ 199"), números de destaque. Você escreve os blocos dentro de sw-carousel-trk, e escolhe como eles trocam (sw-carousel-effect), se trocam sozinhos (sw-carousel-auto) e a velocidade (sw-carousel-dur). Para fotos passando, o componente certo é o Slider.
O JavaScript do núcleo mostra o bloco que tem is-act (ou o primeiro, se nenhum tiver) e esconde os outros. Ao trocar, o bloco que sai e o que entra fazem o efeito escolhido ao mesmo tempo. As setas sw-carousel-prv/sw-carousel-nxt e as bolinhas (que ele desenha sozinho dentro de sw-carousel-dts) são opcionais. Também dá para trocar arrastando com o dedo ou o mouse. Com troca automática, ele pausa enquanto o mouse está em cima. Funciona no tema claro e no escuro.
Quando usar
- Depoimentos de clientes na página inicial ou de vendas.
- Faixa de avisos no topo da loja: frete grátis, cupom, prazo de entrega.
- Frases de impacto ou números ("+500 clientes", "10 anos de mercado") se revezando.
- Não use para informação que a pessoa precisa ler (preço, prazo legal): quem passa rápido pode não ver.
Comece aqui
-
1
Coloque o SWCore na página: CSS no
<head>e JS no fim do<body>. O segundo CSS traz os ícones das setas.<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
Coloque os blocos dentro de
sw-carousel-trk, as setas e o lugar das bolinhas (vazio). Comsw-carousel-auto="4000"troca sozinho a cada 4 segundos."Cortaram meu cabelo do jeito que eu pedi. Recomendo!" — Lucas
"Ambiente top e café de cortesia." — Rafael
"Marquei pelo WhatsApp e fui atendido na hora." — Diego
<div sw-carousel sw-carousel-auto="4000"> <div sw-carousel-trk> <p class="is-act">"Cortaram meu cabelo do jeito que eu pedi. Recomendo!" — Lucas</p> <p>"Ambiente top e café de cortesia." — Rafael</p> <p>"Marquei pelo WhatsApp e fui atendido na hora." — Diego</p> </div> <button type="button" sw-carousel-prv aria-label="Anterior"><i class="swi-chevron-left"></i></button> <div sw-carousel-dts></div> <button type="button" sw-carousel-nxt aria-label="Próximo"><i class="swi-chevron-right"></i></button> </div>
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. Efeitos de troca
sw-carousel-effect escolhe como um bloco dá lugar ao outro. Sem ele: fade. Todos os quadros abaixo trocam sozinhos a cada 2,5 s (sw-carousel-auto="2500") — ou clique nas setas.
"Atendimento nota 10!"
"Chegou antes do prazo."
"Voltarei com certeza."
<div sw-carousel sw-carousel-effect="fade" sw-carousel-auto="2500">
<div sw-carousel-trk>
<p class="is-act">"Atendimento nota 10!"</p>
<p>"Chegou antes do prazo."</p>
<p>"Voltarei com certeza."</p>
</div>
<button type="button" sw-carousel-prv aria-label="Anterior">
<i class="swi-chevron-left"></i>
</button>
<div sw-carousel-dts></div>
<button type="button" sw-carousel-nxt aria-label="Próximo">
<i class="swi-chevron-right"></i>
</button>
</div>
"Atendimento nota 10!"
"Chegou antes do prazo."
"Voltarei com certeza."
<div sw-carousel sw-carousel-effect="slide-left" sw-carousel-auto="2500">
<div sw-carousel-trk>
<p class="is-act">"Atendimento nota 10!"</p>
<p>"Chegou antes do prazo."</p>
<p>"Voltarei com certeza."</p>
</div>
<button type="button" sw-carousel-prv aria-label="Anterior">
<i class="swi-chevron-left"></i>
</button>
<div sw-carousel-dts></div>
<button type="button" sw-carousel-nxt aria-label="Próximo">
<i class="swi-chevron-right"></i>
</button>
</div>
"Atendimento nota 10!"
"Chegou antes do prazo."
"Voltarei com certeza."
<div sw-carousel sw-carousel-effect="slide-right" sw-carousel-auto="2500">
<div sw-carousel-trk>
<p class="is-act">"Atendimento nota 10!"</p>
<p>"Chegou antes do prazo."</p>
<p>"Voltarei com certeza."</p>
</div>
<button type="button" sw-carousel-prv aria-label="Anterior">
<i class="swi-chevron-left"></i>
</button>
<div sw-carousel-dts></div>
<button type="button" sw-carousel-nxt aria-label="Próximo">
<i class="swi-chevron-right"></i>
</button>
</div>
"Atendimento nota 10!"
"Chegou antes do prazo."
"Voltarei com certeza."
<div sw-carousel sw-carousel-effect="slide-up" sw-carousel-auto="2500">
<div sw-carousel-trk>
<p class="is-act">"Atendimento nota 10!"</p>
<p>"Chegou antes do prazo."</p>
<p>"Voltarei com certeza."</p>
</div>
<button type="button" sw-carousel-prv aria-label="Anterior">
<i class="swi-chevron-left"></i>
</button>
<div sw-carousel-dts></div>
<button type="button" sw-carousel-nxt aria-label="Próximo">
<i class="swi-chevron-right"></i>
</button>
</div>
"Atendimento nota 10!"
"Chegou antes do prazo."
"Voltarei com certeza."
<div sw-carousel sw-carousel-effect="slide-down" sw-carousel-auto="2500">
<div sw-carousel-trk>
<p class="is-act">"Atendimento nota 10!"</p>
<p>"Chegou antes do prazo."</p>
<p>"Voltarei com certeza."</p>
</div>
<button type="button" sw-carousel-prv aria-label="Anterior">
<i class="swi-chevron-left"></i>
</button>
<div sw-carousel-dts></div>
<button type="button" sw-carousel-nxt aria-label="Próximo">
<i class="swi-chevron-right"></i>
</button>
</div>
"Atendimento nota 10!"
"Chegou antes do prazo."
"Voltarei com certeza."
<div sw-carousel sw-carousel-effect="zoom-in" sw-carousel-auto="2500">
<div sw-carousel-trk>
<p class="is-act">"Atendimento nota 10!"</p>
<p>"Chegou antes do prazo."</p>
<p>"Voltarei com certeza."</p>
</div>
<button type="button" sw-carousel-prv aria-label="Anterior">
<i class="swi-chevron-left"></i>
</button>
<div sw-carousel-dts></div>
<button type="button" sw-carousel-nxt aria-label="Próximo">
<i class="swi-chevron-right"></i>
</button>
</div>
"Atendimento nota 10!"
"Chegou antes do prazo."
"Voltarei com certeza."
<div sw-carousel sw-carousel-effect="zoom-out" sw-carousel-auto="2500">
<div sw-carousel-trk>
<p class="is-act">"Atendimento nota 10!"</p>
<p>"Chegou antes do prazo."</p>
<p>"Voltarei com certeza."</p>
</div>
<button type="button" sw-carousel-prv aria-label="Anterior">
<i class="swi-chevron-left"></i>
</button>
<div sw-carousel-dts></div>
<button type="button" sw-carousel-nxt aria-label="Próximo">
<i class="swi-chevron-right"></i>
</button>
</div>
"Atendimento nota 10!"
"Chegou antes do prazo."
"Voltarei com certeza."
<div sw-carousel sw-carousel-effect="bounce" sw-carousel-auto="2500">
<div sw-carousel-trk>
<p class="is-act">"Atendimento nota 10!"</p>
<p>"Chegou antes do prazo."</p>
<p>"Voltarei com certeza."</p>
</div>
<button type="button" sw-carousel-prv aria-label="Anterior">
<i class="swi-chevron-left"></i>
</button>
<div sw-carousel-dts></div>
<button type="button" sw-carousel-nxt aria-label="Próximo">
<i class="swi-chevron-right"></i>
</button>
</div>
"Atendimento nota 10!"
"Chegou antes do prazo."
"Voltarei com certeza."
<div sw-carousel sw-carousel-effect="flip" sw-carousel-auto="2500">
<div sw-carousel-trk>
<p class="is-act">"Atendimento nota 10!"</p>
<p>"Chegou antes do prazo."</p>
<p>"Voltarei com certeza."</p>
</div>
<button type="button" sw-carousel-prv aria-label="Anterior">
<i class="swi-chevron-left"></i>
</button>
<div sw-carousel-dts></div>
<button type="button" sw-carousel-nxt aria-label="Próximo">
<i class="swi-chevron-right"></i>
</button>
</div>
2. Velocidade e repetição
sw-carousel-dur é quanto dura a troca, em milissegundos (padrão 600). sw-carousel-auto é o tempo entre uma troca e outra (sem ele, só troca clicando). sw-carousel-loop="false" para no último bloco em vez de voltar ao primeiro.
"Atendimento nota 10!"
"Chegou antes do prazo."
"Voltarei com certeza."
<div sw-carousel sw-carousel-effect="fade" sw-carousel-dur="1500" sw-carousel-auto="3500">
<div sw-carousel-trk>
<p class="is-act">"Atendimento nota 10!"</p>
<p>"Chegou antes do prazo."</p>
<p>"Voltarei com certeza."</p>
</div>
<button type="button" sw-carousel-prv aria-label="Anterior">
<i class="swi-chevron-left"></i>
</button>
<div sw-carousel-dts></div>
<button type="button" sw-carousel-nxt aria-label="Próximo">
<i class="swi-chevron-right"></i>
</button>
</div>
"Atendimento nota 10!"
"Chegou antes do prazo."
"Voltarei com certeza."
<div sw-carousel sw-carousel-effect="slide-left" sw-carousel-dur="250" sw-carousel-auto="2500">
<div sw-carousel-trk>
<p class="is-act">"Atendimento nota 10!"</p>
<p>"Chegou antes do prazo."</p>
<p>"Voltarei com certeza."</p>
</div>
<button type="button" sw-carousel-prv aria-label="Anterior">
<i class="swi-chevron-left"></i>
</button>
<div sw-carousel-dts></div>
<button type="button" sw-carousel-nxt aria-label="Próximo">
<i class="swi-chevron-right"></i>
</button>
</div>
"Atendimento nota 10!"
"Chegou antes do prazo."
"Voltarei com certeza."
<div sw-carousel sw-carousel-effect="slide-left">
<div sw-carousel-trk>
<p class="is-act">"Atendimento nota 10!"</p>
<p>"Chegou antes do prazo."</p>
<p>"Voltarei com certeza."</p>
</div>
<button type="button" sw-carousel-prv aria-label="Anterior">
<i class="swi-chevron-left"></i>
</button>
<div sw-carousel-dts></div>
<button type="button" sw-carousel-nxt aria-label="Próximo">
<i class="swi-chevron-right"></i>
</button>
</div>
"Atendimento nota 10!"
"Chegou antes do prazo."
"Voltarei com certeza."
<div sw-carousel sw-carousel-effect="slide-left" sw-carousel-loop="false">
<div sw-carousel-trk>
<p class="is-act">"Atendimento nota 10!"</p>
<p>"Chegou antes do prazo."</p>
<p>"Voltarei com certeza."</p>
</div>
<button type="button" sw-carousel-prv aria-label="Anterior">
<i class="swi-chevron-left"></i>
</button>
<div sw-carousel-dts></div>
<button type="button" sw-carousel-nxt aria-label="Próximo">
<i class="swi-chevron-right"></i>
</button>
</div>
3. Controles opcionais
Setas e bolinhas são opcionais: tire as que não quiser. Sem nenhuma, use sw-carousel-auto (ou arraste com o dedo/mouse).
Frete grátis acima de R$ 199
Cupom BEMVINDO10 na 1ª compra
Troca grátis em 30 dias
<div sw-carousel sw-carousel-auto="3000">
<div sw-carousel-trk>
<p class="is-act">Frete grátis acima de R$ 199</p>
<p>Cupom BEMVINDO10 na 1ª compra</p>
<p>Troca grátis em 30 dias</p>
</div>
<div sw-carousel-dts></div>
</div>
Frete grátis acima de R$ 199
Cupom BEMVINDO10 na 1ª compra
Troca grátis em 30 dias
<div sw-carousel sw-carousel-effect="slide-left">
<div sw-carousel-trk>
<p class="is-act">Frete grátis acima de R$ 199</p>
<p>Cupom BEMVINDO10 na 1ª compra</p>
<p>Troca grátis em 30 dias</p>
</div>
<button type="button" sw-carousel-prv aria-label="Anterior">
<i class="swi-chevron-left"></i>
</button>
<button type="button" sw-carousel-nxt aria-label="Próximo">
<i class="swi-chevron-right"></i>
</button>
</div>
+500 clientes
10 anos de mercado
Nota 4,9 no Google
<div sw-carousel sw-carousel-effect="slide-up" sw-carousel-auto="2500">
<div sw-carousel-trk>
<p class="is-act">+500 clientes</p>
<p>10 anos de mercado</p>
<p>Nota 4,9 no Google</p>
</div>
</div>
4. Efeito diferente em cada bloco
Coloque sw-carousel-effect num bloco para ele entrar com outro efeito — vale só na vez dele.
"Atendimento nota 10!"
"Chegou antes do prazo."
"Voltarei com certeza."
<div sw-carousel sw-carousel-auto="2500">
<div sw-carousel-trk>
<p class="is-act">"Atendimento nota 10!"</p>
<p sw-carousel-effect="flip">"Chegou antes do prazo."</p>
<p>"Voltarei com certeza."</p>
</div>
<button type="button" sw-carousel-prv aria-label="Anterior">
<i class="swi-chevron-left"></i>
</button>
<div sw-carousel-dts></div>
<button type="button" sw-carousel-nxt aria-label="Próximo">
<i class="swi-chevron-right"></i>
</button>
</div>
Tabela de opções
| Palavra | O que faz | Exemplo |
|---|---|---|
| Peças | ||
sw-carousel | A caixa do carrossel. | <div sw-carousel> |
sw-carousel-trk | A pista: cada filho direto dela é um bloco. | <div sw-carousel-trk> |
sw-carousel-prv / sw-carousel-nxt | Botões de anterior / próximo (opcionais). | <button sw-carousel-prv> |
sw-carousel-dts | Lugar das bolinhas — deixe vazio, o JS desenha (opcional). | <div sw-carousel-dts></div> |
is-act | Classe do bloco visível. Escreva no bloco que deve aparecer primeiro — o carrossel começa por ele (sem nenhum, começa pelo primeiro). | <p class="is-act"> |
| Efeito — sw-carousel-effect | ||
fade | Some e aparece. Padrão. | sw-carousel-effect="fade" |
slide-left / slide-right | Desliza na horizontal. | sw-carousel-effect="slide-left" |
slide-up / slide-down | Desliza na vertical. | sw-carousel-effect="slide-up" |
zoom-in / zoom-out | Troca crescendo / encolhendo. | sw-carousel-effect="zoom-in" |
bounce | Entra quicando. | sw-carousel-effect="bounce" |
flip | Vira como carta (3D). | sw-carousel-effect="flip" |
(num bloco) | O mesmo atributo num bloco muda o efeito só na entrada dele. | <p sw-carousel-effect="flip"> |
| Tempo | ||
sw-carousel-auto | Troca sozinho a cada N ms; pausa com o mouse em cima. Sem ele, só troca pelo clique/arraste. | sw-carousel-auto="4000" |
sw-carousel-dur | Duração da troca em ms. Padrão 600. | sw-carousel-dur="900" |
sw-carousel-loop | false para no último (e não volta do primeiro para o último). Padrão: repete. | sw-carousel-loop="false" |
Receitas prontas — usos reais
Situações que aparecem em quase todo site. Copie a que servir.
"Meu site ficou pronto em uma semana e já chegaram três orçamentos pelo WhatsApp."
"O painel é tão fácil que eu mesmo troco as fotos dos pratos."
"Suporte rápido e sem enrolação."
<div sw-carousel sw-carousel-effect="slide-left" sw-carousel-auto="5000">
<div sw-carousel-trk>
<blockquote class="is-act">
<p>"Meu site ficou pronto em uma semana e já chegaram três orçamentos pelo WhatsApp."</p>
<footer><strong>Juliana Prado</strong> · Doceria da Ju · ★★★★★</footer>
</blockquote>
<blockquote>
<p>"O painel é tão fácil que eu mesmo troco as fotos dos pratos."</p>
<footer><strong>Marcos Lima</strong> · Restaurante Sabor Mineiro · ★★★★★</footer>
</blockquote>
<blockquote>
<p>"Suporte rápido e sem enrolação."</p>
<footer><strong>Fernanda Reis</strong> · Clínica Vida · ★★★★★</footer>
</blockquote>
</div>
<button type="button" sw-carousel-prv aria-label="Anterior"><i class="swi-chevron-left"></i></button>
<div sw-carousel-dts></div>
<button type="button" sw-carousel-nxt aria-label="Próximo"><i class="swi-chevron-right"></i></button>
</div>
Frete grátis acima de R$ 199
Cupom BEMVINDO10 na primeira compra
Até 6x sem juros no cartão
<div sw-carousel sw-carousel-effect="slide-up" sw-carousel-auto="3000" class="bg-sur t-ct">
<div sw-carousel-trk>
<p class="is-act"><i class="swi-package"></i> Frete grátis acima de R$ 199</p>
<p><i class="swi-tag"></i> Cupom <strong>BEMVINDO10</strong> na primeira compra</p>
<p><i class="swi-credit-card"></i> Até 6x sem juros no cartão</p>
</div>
</div>
Passo 1 — Escolha o serviço
Passo 2 — Escolha o horário
Passo 3 — Confirme pelo WhatsApp
<div sw-carousel id="passos" sw-carousel-effect="zoom-in">
<div sw-carousel-trk>
<p class="is-act">Passo 1 — Escolha o serviço</p>
<p>Passo 2 — Escolha o horário</p>
<p>Passo 3 — Confirme pelo WhatsApp</p>
</div>
<div sw-carousel-dts></div>
</div>
<script>
const passos = document.getElementById('passos');
SW.Carousel.next(passos); // próximo
SW.Carousel.prev(passos); // anterior
SW.Carousel.goTo(passos, 0); // vai direto para o 1º (conta a partir de 0)
</script>
document.getElementById('passos').addEventListener('sw:carousel:change', (e) => {
// e.detail.index = posição do bloco que entrou (0, 1, 2…)
document.getElementById('contador').textContent = (e.detail.index + 1) + ' de 3';
});
Eventos
sw:carousel:change[sw-carousel] quando um bloco começa a entrar. e.detail.index = posição do novo bloco (começa em 0).API (JavaScript)
SW.Carousel.next(el)SW.Carousel.prev(el)SW.Carousel.goTo(el, i)i (0 = primeiro).SW.Carousel.pause(el)SW.Carousel.resume(el)sw-carousel-auto).SW.Carousel.initAll(raiz)[sw-carousel] dentro de raiz. O núcleo já faz sozinho.Precisa de quê
swcore.min.css+swcore.min.js.swcore.compl.min.css— só se usar íconesswi-*nas setas (pode usar ‹ › de texto no lugar).
Cuidados — erros comuns
- Esquecer o
sw-carousel-trkem volta dos blocos: sem ele nada troca. is-actem mais de um bloco: vale o primeiro deles.- Blocos com alturas bem diferentes: a caixa muda de altura a cada troca e a página "pula". Deixe os textos com tamanho parecido.
- Troca automática rápida demais (
sw-carousel-auto="1500") em texto longo: ninguém consegue ler. Dê pelo menos 4000 ms para depoimentos. - Colocar fotos grandes: funciona, mas o Slider é feito para isso.
O que ele não faz
- Não troca pelas setas do teclado.
- Um bloco por vez (não mostra 3 lado a lado).
- Não pausa sozinho quando a aba fica escondida nem quando a pessoa está usando leitor de tela.

