Rating (estrelas) Componentes
Estrelas de avaliação: mostrar a nota de um produto (aceita meia estrela) ou deixar a pessoa clicar para dar a nota dela — inclusive dentro de formulário.
O que é
É o "★★★★☆ (127 avaliações)" da loja e o "Como foi seu atendimento?" do formulário. Tem dois modos, escolhidos pelo valor de sw-rating: com um número (sw-rating="4.5") ele só mostra a nota; sem número (sw-rating="int" ou vazio) ele vira campo, e a pessoa clica numa estrela para avaliar. Tamanho e cor são palavras no mesmo atributo.
Precisa do JavaScript do SWCore, que desenha as estrelas dentro da <div> (você não escreve as estrelas). No modo campo, passar o mouse acende as estrelas até ali, clicar grava a nota, clicar de novo na mesma estrela zera, e funciona pelo teclado (Tab até a estrela, Enter ou Espaço). Se houver um <input type="hidden"> dentro, a nota vai para ele — é assim que ela chega ao servidor junto com o formulário.
Quando usar
- Nota média de produto, serviço ou lugar: só leitura —
sw-rating="4.5"+ a contagem ao lado. - Pedir avaliação (atendimento, pedido, curso): modo campo dentro do formulário —
sw-rating="int"com<input type="hidden">. - Escala diferente de 5 (de 0 a 10):
sw-rating-max="10".
Comece aqui
-
1
Coloque o SWCore na página.
<link rel="stylesheet" href="https://swcore.sanweb.com.br/dist/2.1.0/swcore.min.css"> <!-- fim do body --> <script src="https://swcore.sanweb.com.br/dist/2.1.0/swcore.min.js"></script> -
2
Para mostrar uma nota: o número no atributo. A contagem ao lado é um
<span sw-rating-cnt>fora da div.(127 avaliações)<div sw-rating="4.5" aria-label="Nota 4,5 de 5"></div> <span sw-rating-cnt>(127 avaliações)</span> -
3
Para a pessoa dar a nota:
int, com um campo escondido dentro para enviar no formulário.<div sw-rating="int"> <input type="hidden" name="nota" value="0"> </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. Só mostrar a nota
Com um número, as estrelas não respondem ao clique. A nota pode ser quebrada: de ,5 para cima aparece meia estrela (4,5 e 4,7 mostram 4 e meia; 4,3 mostra 4).
<div sw-rating="5"></div>
<div sw-rating="4.5"></div>
<div sw-rating="3"></div>
<div sw-rating="0.5"></div>
<div sw-rating="4.8"></div>
<span sw-rating-cnt>(1.204)</span>
2. A pessoa dá a nota
Sem número no atributo, vira campo. Passe o mouse, clique para dar a nota, clique de novo na mesma estrela para zerar. sw-rating-val diz a nota que já vem marcada.
<div sw-rating="int"></div>
<div sw-rating=""></div>
<div sw-rating="int" sw-rating-val="3"></div>
<div sw-rating="int" sw-rating-val="4">
<input type="hidden" name="nota" value="4">
</div>
3. Tamanhos
Sem palavra, as estrelas têm 2,2rem. Vale para os dois modos.
<div sw-rating="4 sm"></div>
<div sw-rating="4"></div>
<div sw-rating="4 lg"></div>
<div sw-rating="int lg"></div>
4. Cores
Sem cor, as estrelas acesas são amarelas (a cor de alerta do tema). As apagadas usam a cor de borda, e acompanham o tema claro/escuro.
<div sw-rating="4"></div>
<div sw-rating="4 pri"></div>
<div sw-rating="4 suc"></div>
<div sw-rating="4 err"></div>
5. Outra quantidade de estrelas
sw-rating-max muda o total (padrão 5). Serve para escalas de 0 a 10, ou 3 níveis.
<div sw-rating="7 sm" sw-rating-max="10"></div>
<div sw-rating="int sm" sw-rating-max="10" sw-rating-val="8"></div>
<div sw-rating="int lg" sw-rating-max="3"></div>
Tabela de opções
| Palavra | O que faz | Exemplo |
|---|---|---|
| Modo (o valor de sw-rating) | ||
número | Só mostra a nota. Aceita quebrado: 4.5 (com ponto). | sw-rating="4.5" |
int | Campo: a pessoa clica para avaliar. | sw-rating="int" |
(vazio) | Também é campo. | sw-rating="" |
| Tamanho (junto no mesmo atributo) | ||
(nenhum) | Estrelas de 2,2rem. | |
sm | Pequenas, 1,6rem. | sw-rating="4 sm" |
lg | Grandes, 3rem. | sw-rating="int lg" |
| Cor das estrelas acesas | ||
(nenhuma) | Amarelo (cor de alerta do tema). | |
pri | Cor primária do site. | sw-rating="4 pri" |
suc | Verde. | sw-rating="int suc" |
err | Vermelho. | sw-rating="4 err" |
| Outros atributos | ||
sw-rating-max | Quantas estrelas ao todo. Padrão: 5. | sw-rating-max="10" |
sw-rating-val | No modo campo: a nota que já vem marcada. Padrão: 0. | sw-rating-val="3" |
<input type="hidden"> | Dentro da div, no modo campo: recebe a nota escolhida para ir no formulário. | <input type="hidden" name="nota" value="0"> |
sw-rating-cnt | Num <span> ao lado (fora da div): texto de contagem, em cinza e menor. | <span sw-rating-cnt>(127)</span> |
| Criados pelo script (não escreva) | ||
sw-rating-str | Cada estrela. No modo campo, são botões focáveis com "Nota N". | |
.is-on / .is-half | Estrela acesa / meia estrela. | |
Receitas prontas — usos reais
Situações que aparecem em quase todo site. Copie a que servir.
<div class="bg-sur bd r-m p-3 flx f-cl gap-2">
<strong>Café especial 500g</strong>
<div class="flx alc"><div sw-rating="4.5 sm" aria-label="Nota 4,5 de 5"></div><span sw-rating-cnt>(127 avaliações)</span></div>
<span class="t-g">R$ 39,90</span>
<button sw-btn="suc"><i class="swi-cart-add"></i> Comprar</button>
</div>
<form action="/avaliar" method="post">
<label>Como foi seu atendimento?</label>
<div sw-rating="int lg suc">
<input type="hidden" name="nota" value="0">
</div>
<button sw-btn="pri" type="submit">Enviar avaliação</button>
</form>
<!-- o servidor recebe "nota" = 0 a 5 -->
Escolha uma nota.
<div sw-rating="int lg" id="nota-pedido"></div>
<p id="resposta"></p>
<script>
document.getElementById('nota-pedido').addEventListener('sw:rating:change', (e) => {
const n = e.detail.value; // 0 a 5 (0 = a pessoa zerou)
document.getElementById('resposta').textContent =
n <= 2 ? 'Poxa! Conte o que deu errado.' : 'Obrigado pela nota ' + n + '!';
});
</script>
Eventos
sw:rating:changee.detail.value (0 = zerou). Chega uma vez por clique.API (JavaScript)
SW.Rating.initAll(raiz)[sw-rating] dentro de raiz. Normalmente não precisa: o SWCore liga sozinho, até as inseridas depois.Precisa de quê
swcore.min.csseswcore.min.js(sem o JS, a div fica vazia).
Cuidados — erros comuns
- Nota com vírgula (
sw-rating="4,5"): ele lê só o 4. Use ponto:"4.5". - Esquecer o
<input type="hidden">dentro da div no formulário: a nota não vai para o servidor. - Escrever as estrelas dentro da div: o script apaga tudo e desenha de novo (só o
inputescondido é mantido). - Colocar o
<span sw-rating-cnt>dentro da div: ele é apagado. Deixe ao lado, fora. - Estrelas só de leitura não são lidas pelo leitor de tela. Coloque
aria-label="Nota 4,5 de 5"na div.
O que ele não faz
- No modo campo não aceita meia estrela: a pessoa escolhe notas inteiras.
- Não há função para ler ou mudar a nota por código: leia pelo
inputescondido ou pelo evento. - Trocar o atributo depois que a página carregou não redesenha as estrelas.

