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

Design System

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

Exemplo(s)

Desktop (100%)
Tablet - 768px
iPhone (iOS) - 390x844
Android - 360x800
Compartilhar URL
Mudar fundo
Abrir no StackBlitz
Tela cheia
HTML
Controles
JS
CSS
Console
Angular (Somente leitura)
React (Somente leitura)
Vue (Somente leitura)
Acessibilidade
Recolher controles e código
Formatar código
Resetar código para o estado inicial
Copiar para a área de transferência

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.
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
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.
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.
Tiponumber
Valor padrão50

spotlightPadding

Atributospotlight-padding
DescriçãoEspaçamento interno (em pixels) ao redor da área de fresta no scrim vazado.
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.
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
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
autofocusContentRemova 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>