SW Core
SW Core / CSS / Avatar

Avatar CSS

A bolinha com a foto ou as iniciais da pessoa — cinco tamanhos, cores, pontinho de "online" e pilhas de rostos que se abrem ao passar o mouse.

O que é

É o círculo com a foto do usuário no topo do painel, ao lado de um comentário, numa lista de equipe. Sem foto, ele mostra as iniciais ("BR") sobre um degradê colorido. Você escreve <span sw-avt> com as iniciais (ou uma <img> dentro) e acrescenta palavras para tamanho, cor, formato e status: sw-avt="g suc onl".

É só CSS — não precisa de JavaScript. A foto é recortada no formato do avatar sozinha, em qualquer tamanho. Todo avatar ganha um contorno da cor do fundo da página, para se destacar quando fica em cima de outro. O pontinho de status pisca devagar (igual em todo o SW Core).

Quando usar

  • Menu do usuário no topo do site ou do painel.
  • Comentários e depoimentos: rosto + nome.
  • Quem está online num chat ou atendimento (onl, bsy, away).
  • Equipe de um projeto ou participantes de um evento: pilha de rostos com "+5".

Comece aqui

  1. 1

    Coloque o SW Core no <head>. O avatar é só CSS.

    <link rel="stylesheet" href="swcore/swcore.min.css">
  2. 2

    Com iniciais: escreva as letras dentro.

    BR
    <span sw-avt>BR</span>
  3. 3

    Com foto: coloque a <img> dentro. Tamanho grande + pontinho de online:

    Beatriz Rocha
    <span sw-avt="g onl"><img src="beatriz.webp" alt="Beatriz Rocha"></span>

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. Tamanhos

Cinco tamanhos. Sem palavra de tamanho ele tem 40px.

BR
pp — 24px <span sw-avt="pp">BR</span>
BR
p — 32px <span sw-avt="p">BR</span>
BR
(padrão) — 40px <span sw-avt>BR</span>
BR
g — 56px <span sw-avt="g">BR</span>
BR
gg — 72px <span sw-avt="gg">BR</span>

2. Cores (quando não tem foto)

O fundo das iniciais é um degradê. Sem palavra de cor, ele usa a cor primária do seu site. Com foto, a cor não aparece.

AN
(padrão) — primária <span sw-avt="g">AN</span>
BR
sec — secundária <span sw-avt="g sec">BR</span>
CM
suc — verde <span sw-avt="g suc">CM</span>
DL
ale — amarelo <span sw-avt="g ale">DL</span>
EF
err — vermelho <span sw-avt="g err">EF</span>
GS
inf — azul <span sw-avt="g inf">GS</span>

3. Formato e foto

Redondo por padrão. sqr deixa quadrado com canto discreto (bom para logo de empresa). A foto se recorta sozinha no formato. No código, troque o src pela sua foto.

Beatriz Rocha
Redondo com foto <span sw-avt="g"><img src="beatriz.webp" alt="Beatriz Rocha"></span>
Loja Doces da Bia
sqr — quadrado com foto <span sw-avt="g sqr"><img src="logo-loja.webp" alt="Loja Doces da Bia"></span>
DB
sqr — quadrado com iniciais <span sw-avt="g sqr suc">DB</span>

4. Status (pontinho no canto)

Um pontinho no canto de baixo mostra se a pessoa está disponível. Os três coloridos piscam devagar.

AN
onl — online (verde) <span sw-avt="g onl">AN</span>
BR
bsy — ocupado (vermelho) <span sw-avt="g bsy">BR</span>
CM
away — ausente (amarelo) <span sw-avt="g away">CM</span>
DL
off — offline (cinza) <span sw-avt="g off">DL</span>

5. Pilha de avatares (sw-avt-grp)

Coloque vários avatares dentro de <div sw-avt-grp>: eles se sobrepõem. Passe o mouse — a pilha se abre. O último pode ser o "+N" com a classe sw-avt-grp-more.

AN BR CM DL +5
sw-avt-grp com iniciais e "+5" <div sw-avt-grp> <span sw-avt>AN</span> <span sw-avt="sec">BR</span> <span sw-avt="suc">CM</span> <span sw-avt="ale">DL</span> <span class="sw-avt-grp-more">+5</span> </div>
Ana Bruno Carla +12
sw-avt-grp com fotos <div sw-avt-grp> <span sw-avt><img src="ana.webp" alt="Ana"></span> <span sw-avt><img src="bruno.webp" alt="Bruno"></span> <span sw-avt><img src="carla.webp" alt="Carla"></span> <span class="sw-avt-grp-more">+12</span> </div>

6. Pilha "presença ao vivo" (sw-presence)

Outra pilha, mais animada: ao passar o mouse os rostos se espalham em leque. Aqui cada pessoa é um <span> simples (sem sw-avt): com <img> dentro vira foto; vazio, ganha uma cor. class="is-online" põe o pontinho verde.

+3
sw-presence vazio (cores automáticas) <span sw-presence aria-label="3 pessoas online"> <span></span> <span></span> <span class="is-online"></span> <span class="sw-presence-more">+3</span> </span>
+8
sw-presence com fotos <span sw-presence aria-label="Equipe de atendimento"> <span><img src="ana.webp" alt=""></span> <span><img src="bruno.webp" alt=""></span> <span class="is-online"><img src="carla.webp" alt=""></span> <span class="sw-presence-more">+8</span> </span>

Tabela de opções

PalavraO que fazExemplo
Tamanho
pp24px.sw-avt="pp"
p32px.sw-avt="p"
(nenhum)40px — o padrão.sw-avt
g56px.sw-avt="g"
gg72px.sw-avt="gg"
Cor do fundo (sem foto)
(nenhuma)Degradê da cor primária.sw-avt
secSecundária.sw-avt="sec"
sucVerde.sw-avt="suc"
aleAmarelo.sw-avt="ale"
errVermelho.sw-avt="err"
infAzul.sw-avt="inf"
Formato
(nenhum)Redondo.sw-avt
sqrQuadrado com canto discreto.sw-avt="sqr"
Status
onlPontinho verde piscando (online).sw-avt="onl"
bsyPontinho vermelho piscando (ocupado).sw-avt="bsy"
awayPontinho amarelo piscando (ausente).sw-avt="away"
offPontinho cinza parado (offline).sw-avt="off"
Pilhas
sw-avt-grpAtributo na <div> que junta vários sw-avt sobrepostos; abre ao passar o mouse.<div sw-avt-grp>…</div>
sw-avt-grp-moreClasse do último círculo "+N" dentro do sw-avt-grp.<span class="sw-avt-grp-more">+5</span>
sw-presencePilha em leque; cada pessoa é um <span> (com ou sem <img>).<span sw-presence>…</span>
is-onlineClasse num <span> do sw-presence: pontinho verde.<span class="is-online">
sw-presence-moreClasse do último "+N" do sw-presence.<span class="sw-presence-more">+3</span>

Receitas prontas — usos reais

Situações que aparecem em quase todo site. Copie a que servir.

Comentário de blog Ao vivo
CM
Carlos Melo · há 2 horas

Ótimo artigo! Apliquei as dicas e minha página ficou bem mais rápida.

<div class="flx gap-3">
  <span sw-avt="p sec">CM</span>
  <div>
    <strong>Carlos Melo</strong> <span class="t-mut t-pp">· há 2 horas</span>
    <p>Ótimo artigo! Apliquei as dicas e minha página ficou bem mais rápida.</p>
  </div>
</div>
Atendimento: quem está disponível Ao vivo
AN Ana — disponível
BR Bruno — em atendimento
CM Carla — volta às 14h
<div class="flx f-cl gap-3">
  <div class="flx alc gap-3"><span sw-avt="onl">AN</span> Ana — <span class="t-mut">disponível</span></div>
  <div class="flx alc gap-3"><span sw-avt="bsy sec">BR</span> Bruno — <span class="t-mut">em atendimento</span></div>
  <div class="flx alc gap-3"><span sw-avt="away suc">CM</span> Carla — <span class="t-mut">volta às 14h</span></div>
</div>
Cartão de evento: quem vai Ao vivo
Workshop de fotografia
Sábado, 10h
AN BR CM +18
<div sw-card="p">
  <div class="sw-card-bdy flx j-sb alc gap-3">
    <div><strong>Workshop de fotografia</strong><div class="t-mut t-pp">Sábado, 10h</div></div>
    <div sw-avt-grp>
      <span sw-avt>AN</span>
      <span sw-avt="sec">BR</span>
      <span sw-avt="suc">CM</span>
      <span class="sw-avt-grp-more">+18</span>
    </div>
  </div>
</div>

Precisa de quê

  • swcore.min.css.
  • Nenhum JavaScript.

Cuidados — erros comuns

  • Mais de 2 letras não cabe bem: use as iniciais (nome + sobrenome), não o nome inteiro.
  • Foto sempre com alt (o nome da pessoa). Se a foto for decorativa ao lado do nome escrito, alt="".
  • Use fotos quadradas e leves (ex.: 160×160 em .webp). Foto retangular é recortada no meio.
  • O "+N" do sw-avt-grp é uma classe (class="sw-avt-grp-more"), não um sw-avt.
  • Dentro do sw-avt-grp use todos os avatares do mesmo tamanho: a sobreposição e o tamanho do "+N" seguem o tamanho deles (pp, p, padrão, g, gg).
  • No sw-presence não use sw-avt dentro — são <span> simples.

O que ele não faz

  • O leque do sw-presence tem movimento próprio só para as quatro primeiras posições.
  • O sw-presence tem um tamanho só (42px) e só o status "online".
  • Não gera as iniciais sozinho a partir do nome: você escreve as letras.