Ir para o conteúdo principal
WBC - GovBR-DS
Copiar página como Markdown para IA

Scrim

Componente estável e recomendada para novos projetos.
Anatomia, uso, comportamento visual e recomendações conceituais são mantidos pelo Padrão Digital de Governo. Esta página documenta a implementação Web Components e sua API executável.

Visão Geral​

O componente br-scrim é a camada de sobreposição visual (backdrop / máscara) do GovBR-DS, utilizada para escurecer temporariamente a interface e direcionar a atenção da pessoa usuária para um ponto de interesse ou diálogo.

Para que serve​

  • Destaque visual exclusivo (Spotlight): Cria um foco exclusivo sobre determinado elemento da página (como um tour guiado ou tutorial introdutório).
  • Bloqueio de interação com o fundo: Impede cliques acidentais e rolagem na interface subjacente enquanto uma superfície flutuante estiver ativa.
  • Comportamento acessível de fechamento: Suporta fechamento ao clicar na máscara ou ao pressionar a tecla Escape, com controle de foco previsível.

Quando utilizar​

  • Utilize quando:
    • For necessário criar máscaras de fundo personalizadas para fluxos de onboarding, tutoriais ou menus temporários imersivos.
  • Evite e prefira outro componente quando:
    • Estiver implementando uma caixa de diálogo padrão com cabeçalho, corpo e rodapé (prefira br-modal, que já inclui seu próprio scrim interno).

Estrutura e Slots​

O br-scrim atua como superfície de sobreposição:

  • default: Slot para inserção do elemento que receberá o destaque em primeiro plano sobre a máscara.

Para a documentação completa de design, incluindo diretrizes de acessibilidade e especificações visuais, consulte o Design System do GovBR.

Exemplo(s)​

Desktop (100%)
Tablet - 768px
iPhone (iOS) - 390x844
Android - 360x800
PadrãoSpotlightLegibilidade
Compartilhar URL
Ativar movimento reduzido
Mudar fundo
Abrir no StackBlitz
Mais opções
Tela cheia
Carregando preview…
HTML
Controles do componente
Console: logs, eventos e erros
Angular (Somente leitura)
React (Somente leitura)
Vue (Somente leitura)
Acessibilidade
Recolher controles e código
Desfazer alteração
Refazer alteração
Comparar alterações
Formatar código
Resetar código para o estado inicial
Escolher formato para copiar

Fluxo, camada e top layer​

O scrim fullscreen das variantes focus e spotlight, com layout de conteúdo padrão, usa <dialog> modal e showModal(). Isso evita limitações impostas por ancestrais com transform, filter ou outros stacking contexts. Sem suporte nativo, permanece fixed na camada bloqueadora 4.

As variantes parent e legibility, além de content-layout="none", continuam locais. Em todas as composições a máscara ocupa a subcamada 0 e o conteúdo a 1. No fallback CSS, mantenha somente um bloqueador legado ativo por vez.

Propriedades​

activator​

Atributoactivator
DescriçãoDefine o seletor para o elemento activator.
Nota: O slot 'activator' tem prioridade sobre esta propriedade.
Exemplo de uso
<button id="abrir-ajuda" type="button">Abrir ajuda</button>
<br-scrim activator="#abrir-ajuda">Conteúdo</br-scrim>
Tipostring
Valor padrãonull

ariaLabel​

Atributoaria-label
DescriçãoDefine um rótulo acessível personalizado para o diálogo.
Se não fornecido, será usado "Conteúdo do diálogo" como padrão.
Tipostring
Valor padrãonull

bgColor​

Atributobg-color
DescriçãoCor de fundo personalizada para o scrim.
Aceita os seguintes formatos de cor:
- Cores nomeadas do CSS: 'red', 'blue', 'green', 'yellow', etc.
- Códigos hexadecimais: '#ff0000', '#00ff00', '#0000ff', etc.
- Valores RGB: 'rgb(255, 0, 0)', 'rgb(0, 255, 0)', etc.
- Valores RGBA: 'rgba(255, 0, 0, 0.5)', 'rgba(0, 255, 0, 0.8)', etc.
- Valores HSL: 'hsl(0, 100%, 50%)', 'hsl(120, 100%, 50%)', etc.
- Valores HSLA: 'hsla(0, 100%, 50%, 0.5)', 'hsla(240, 100%, 50%, 0.7)', etc.
Se não especificada, usa a cor padrão do tema.
Tipostring
Valor padrãonull

contentLayout​

Atributocontent-layout
DescriçãoDefine como o scrim aplica estilos de layout ao elemento filho (slot padrão).

- 'default': O scrim gerencia o layout do conteúdo, centralizando, animando e aplicando transformações e opacidade automaticamente.

- 'none': o scrim age como um componente controlado pelo pai. O filho recebe apenas a máscara visual, sem interferência de posicionamento, transformação ou opacidade.
Adequado para componentes que gerenciam seu próprio layout e estado de abertura. Além disso:

- Foco e eventos globais** não são interceptados pelo scrim — o componente filho gerencia seu próprio foco, navegação por teclado e fechamento via ESC.
- Clique no scrim emite brScrimClose sem fechar o scrim internamente, delegando o controle de estado ao pai (quem define isOpen).
- Use zIndex apenas para sobrescrever a camada bloqueadora no fallback CSS. Máscara e painel devem usar subcamadas locais, sem aritmética entre camadas globais.
Tipo"default" | "none"
Valor padrão'default'

customId​

Atributocustom-id
DescriçãoIdentificador único.
Caso não seja fornecido, um ID gerado automaticamente será usado.
Tipostring
Valor padrãogenerateUniqueId()

customOpacity​

Atributocustom-opacity
DescriçãoDefine a opacidade personalizada do scrim. O valor é limitado ao intervalo 0–1; entradas inválidas usam 0.4.
Tiponumber
Valor padrãonull

disableCloseOnClick​

Atributodisable-close-on-click
DescriçãoDesativa o fechamento do scrim ao ser clicado
Tipoboolean
Valor padrãofalse

displayMode​

Atributodisplay-mode
DescriçãoDefine o modo de exibição do scrim:
- 'fullscreen': Ocupa toda a tela (position: fixed). (padrão)
- 'parent': Ocupa apenas o elemento pai (position: absolute).
O elemento pai deve ter position: relative ou outro valor diferente de static.

Para a variante 'legibility', este atributo é ignorado: o posicionamento é sempre
calculado automaticamente a partir das coordenadas do elemento pai.
Tipo"fullscreen" | "parent"
Valor padrão'fullscreen'

isOpen​

Atributois-open
DescriçãoAtiva/desativa o scrim
Tipoboolean
Valor padrãofalse

legibilityAnchor​

Atributolegibility-anchor
DescriçãoDefine a borda de ancoragem da faixa de cobertura da variante legibility.

Controla de qual borda (ou centro) do elemento a máscara de overlay cresce,
tendo seu tamanho determinado por legibilitySize.

- 'top': faixa ancorada na borda superior, cresce para baixo.
- 'bottom': faixa ancorada na borda inferior, cresce para cima.
- 'left': faixa ancorada na borda esquerda, cresce para a direita.
- 'right': faixa ancorada na borda direita, cresce para a esquerda.
- 'center': faixa centralizada verticalmente no elemento.

Quando legibilitySize é null, a máscara ocupa 100% independentemente
da âncora definida, equivalendo a uma cobertura total.

Só tem efeito quando variant="legibility".
Tipo"bottom" | "center" | "left" | "right" | "top"
Valor padrão'bottom'

legibilitySize​

Atributolegibility-size
DescriçãoDefine o tamanho da faixa de cobertura da variante legibility, usado em
conjunto com legibilityAnchor.

Aceita qualquer valor CSS de comprimento válido:
- Percentual relativo ao elemento pai: '40%', '75%'
- Comprimento absoluto: '120px', '8rem', '6em'
- Função CSS: 'calc(100% - 2rem)'

Quando null (padrão), a máscara ocupa 100% da dimensão relevante:
- altura para âncoras top, bottom e center
- largura para âncoras left e right

Só tem efeito quando variant="legibility" está definido.
Exemplo de uso
<br-scrim variant="legibility" legibility-anchor="bottom" legibility-size="40%">
Texto sobre a imagem
</br-scrim>
Tipostring
Valor padrãonull

legibilityTargetId​

Atributolegibility-target-id
DescriçãoSeletor CSS do elemento que deve receber o posicionamento da variante
legibility. Quando não informado (padrão), o alvo é o elemento pai
direto do <br-scrim>.
Tipostring
Valor padrãonull

positionContent​

Atributoposition-content
DescriçãoPosiciona o conteúdo no topo, centro, direita, esquerda, abaixo dentro do scrim (obrigatório)
Tipo"bottom" | "center" | "left" | "right" | "top"
Valor padrão---

scrollStrategy​

Atributoscroll-strategy
DescriçãoDefine a estratégia de manipulação de rolagem quando scrim está aberto
- 'block': Impede a rolagem completamente
- 'close': Fecha o scrim quando ocorre rolagem (obrigatório)
Tipo"block" | "close"
Valor padrão---

scrollThreshold​

Atributoscroll-threshold
DescriçãoDetermina quanto de rolagem (em pixels) é necessário para acionar a ação de fechamento automático do scrim. Valores negativos usam 0.
Tiponumber
Valor padrão50

spotlightPadding​

Atributospotlight-padding
DescriçãoEspaçamento interno (em pixels) ao redor da área de fresta no scrim vazado. Valores negativos usam 0.
Tiponumber
Valor padrão8

spotlightShape​

Atributospotlight-shape
DescriçãoDefine a forma da área de fresta no scrim vazado.
- 'rect': Retangular com bordas retas.
- 'rounded': Retangular com bordas arredondadas (border-radius de 8px).
- 'circle': Elipse inscrita na área do elemento alvo.
Tipo"circle" | "rect" | "rounded"
Valor padrão'rect'

spotlightTargetId​

Atributospotlight-target-id
DescriçãoAtiva o modo de scrim vazado (variante 'spotlight'), criando uma área de fresta no overlay
que destaca o elemento referenciado pelo seletor CSS fornecido.
Exemplo de uso
<button id="acao-principal" type="button">Continuar</button>
<br-scrim variant="spotlight" spotlight-target-id="#acao-principal"></br-scrim>
Tipostring
Valor padrãonull

variant​

Atributovariant
DescriçãoDefine a variante semântica do scrim
- 'focus': Redireciona o foco hierárquico do usuário. Cor #000000 com opacidade 40%. (padrão)
- 'spotlight': Scrim vazado — destaca um elemento específico criando uma fresta no overlay.
Aplica as mesmas cores da variante 'focus'. Use spotlightTargetId para indicar o elemento a ser destacado.
- 'legibility': Melhora o contraste e leitura de texto sobre superfícies. Cor #000000 com opacidade 64%.
Para cobertura parcial, use legibilityAnchor + legibilitySize.
Para gradiente suave, use bgColor com um valor de gradiente CSS e customOpacity="1",
ex.: bg-color="linear-gradient(to top, rgba(0,0,0,0.64), transparent)"..

Quando definida, aplica automaticamente as especificações de cor e opacidade do Design System.
As propriedades bgColor e customOpacity têm prioridade e sobrepõem os valores da variante.
Tipo"focus" | "legibility" | "spotlight"
Valor padrão'focus'

zIndex​

Atributoz-index
DescriçãoDefine o valor de z-index do scrim. Deve ser um inteiro entre 0 e Number.MAX_SAFE_INTEGER; valores inválidos usam 0.
Tiponumber
Valor padrãonull

Slots​

NomeDescrição
"activator"Slot para o elemento ativador do scrim, com prioridade sobre a propriedade activator.
"default"Slot para o conteúdo principal a ser exibido sobre o fundo escurecido do scrim.

Eventos​

EventoDescriçãoDepreciaçãoPropagação
brScrimCloseIndica que o scrim foi fechado---true
brScrimOpenIndica que o scrim foi aberto.---true

Métodos​

close​

DescriçãoMétodo público para esconder o scrim
Assinaturaclose() => Promise<void>
Parâmetros---

open​

DescriçãoMétodo público para exibir o scrim
Assinaturaopen() => Promise<void>
Parâmetros---

setScrollThreshold​

DescriçãoDefine o limite de rolagem para o fechamento automático do scrim.
AssinaturasetScrollThreshold(threshold: number) => Promise<void>
Parâmetrosthreshold:

toggle​

DescriçãoMétodo público para alternar o estado de exibição do scrim
Assinaturatoggle() => Promise<void>
Parâmetros---

updateSpotlight​

DescriçãoRecalcula manualmente a posição e dimensões da fresta do scrim vazado.
Útil quando o elemento alvo muda de posição sem disparar resize ou scroll.
AssinaturaupdateSpotlight() => Promise<void>
Parâmetros---

Dependências​

Usado por​

Gráfico​

Migração de <br-scrim> (1.x → 2.x)​

O scrim mantém a função de camada de bloqueio, mas o estado atual usa isOpen e a posição do conteúdo é configurada explicitamente.

Propriedades e eventos​

API 1.xAPI 2.xAção na migração
autofocusContent—Remova e trate foco no conteúdo atual.
centerContentpositionContentConverta para a posição desejada.
disableCloseOnClickdisableCloseOnClickMantenha.
idcustomIdRenomeie a propriedade de identificação.
showisOpenRenomeie.
update:show / hidebrScrimOpen / brScrimCloseAtualize os listeners.

Use os slots de conteúdo e ativador para manter a relação semântica entre o elemento que abre o scrim e a camada exibida.

Exemplo​

1.x:

<br-scrim show center-content></br-scrim>

2.x:

<br-scrim is-open position-content="center" disable-close-on-click></br-scrim>
Comece aquiComponentesQuickstartsSobre o projetoRepositório GitLabVersõesDiscordGovBR-DSFAQWikiRedefinir cookies