← Biblioteca componentes/efeitos/quebra-papel-rasgado/ficha.md Abrir previewmarkupestilo
efeitos/quebra-papel-rasgado

Quebra em papel rasgado

⚪ externo complexidade baixa prefixo torn- quebra transicao-de-secao clip-path papel borda-irregular css-puro sem-js decoracao sem javascript

Uma dobra clara no meio de uma página escura, com as bordas de cima e de baixo arrancadas em vez de cortadas. O olho não lê "o fundo mudou de cor": lê "tem uma folha colada aqui". A diferença é toda da borda — dois filetes irregulares de no máximo 22px.

O problema é conhecido: .sec-paper entre duas .sec-dark produz duas linhas retas perfeitas atravessando a tela, e retas perfeitas entre tons opostos leem como slide, não como página. O rasgo transforma a exceção de tom em objeto. É a primeira peça da categoria efeitos, e a única da biblioteca que não tem conteúdo próprio: ela é só a borda de uma seção que já existe.


Quando usar

Quando não usar


Padrão editorial

O componente não tem slot de texto. O que ele pede é uma decisão sobre qual conteúdo merece a folha — e essa decisão é editorial:

Slot Regra
A seção rasgada O bloco que precisa de leitura longa ou de respiro visual. Se o conteúdo dela caberia numa .sec-dark sem perda, ele não justifica a inversão de tom nem o rasgo.
Olho, título e apoio Primitivas do core (.eyebrow, h2.sec-title, .sec-lead), lidas do escopo .sec-paper. Nada muda por causa do rasgo.
Vizinha de cima Tom escuro chapado, sem mídia sangrando. É o que aparece dentro do corte.
Vizinha de baixo O mesmo tom. A folha é exceção de uma dobra; a seguinte volta direto ao escuro.

Uma folha por página. Duas ainda passam se estiverem longe uma da outra e o conteúdo justificar as duas. Três é decoração.

Assets

Nenhum. Sem SVG, sem PNG, sem máscara em imagem — o rasgo é um clip-path de 58 vértices escrito no CSS. Isso não é economia de bytes, é a razão de o componente funcionar: nenhuma requisição a mais, nada para servir em 2x, e a borda acompanha qualquer largura de tela sem esticar pixel.


Como usar

<link rel="stylesheet" href="componentes/efeitos/quebra-papel-rasgado/estilo.css">

Sem script. Duas peças, nesta ordem:

<div class="torn-band">
  <section class="sec-paper sec-pad torn">
    <div class="wrap"><!-- conteúdo livre --></div>
  </section>
</div>

O .torn-band pinta a cor que aparece dentro do rasgo. O .torn recorta a seção. O markup.html traz as duas vizinhas escuras junto porque o efeito só existe na junção — mas elas são contexto, não fazem parte do que se copia.

Ganchos

Gancho Papel
.torn a seção recortada — vai junto com o escopo de tom e o .sec-pad
.torn-band o invólucro que pinta o vão. <div>, nunca <section>
.torn--top rasga só a borda de cima
.torn--bottom rasga só a borda de baixo
--torn-depth escala geral do rasgo no .torn. 1 = mordida máxima de 22px
--torn-top / --torn-bot profundidade de cada borda. 0 deixa a borda reta
--torn-behind cor do vão, no .torn-band. Padrão var(--dark)

Variações

Variação Como
Só uma borda class="... torn torn--top" ou torn--bottom. Útil quando a folha abre a página ou encosta no rodapé
Rasgo mais forte --torn-depth:1.4 no .torn. Acima de 1.6 vira serra
Vizinhas em .sec-deep style="--torn-behind:var(--dark-2)" no .torn-band
Rasgo invertido Seção .sec-dark dentro de .torn-band com --torn-behind:var(--light): o preto é que arranca o claro
Sem invólucro Dispensável quando o fundo do body já é exatamente a cor do vão. Foi assim na origem — e é exatamente o que quebra quando a página muda de fundo

Gotchas


Histórico

Projeto Onde Data Situação
Liberta Wealth site/assets/css/style.css, classe .torn em #solucoes 2026-08 Origem do polígono. A composição site/ não tem ida a produção confirmada.
Liberta Wealth github-repo/assets/css/style.css linha 113 2026-08 Versão confirmada. A classe continua no HTML e a regra virou .torn{clip-path:none}o efeito foi previsto e nunca ligado.

O desligamento não tem motivo registrado. Varrido o github-repo/ inteiro, não há comentário no CSS, nota em markdown nem mensagem de commit explicando a troca por clip-path:none — o site entrou no repositório já com a regra inerte (commit 409fc48, "Site Liberta Wealth"). O registro do projeto (projetos/liberta-wealth.md) documenta o fato, não a razão.

Sem motivo registrado, não invente um. Duas hipóteses plausíveis, e nenhuma delas verificada: ou o rasgo foi julgado artesanal demais para uma marca de consultoria patrimonial, ou a mordida de 22px em largura de desktop leu como serra e ninguém voltou para calibrar. A segunda tem remédio nesta versão (--torn-depth); a primeira é decisão de marca e nenhum CSS resolve.

O que mudou na normalização:

Na origem Aqui Por quê
.torn solta, sem prefixo .torn + .torn-band + .torn--top / .torn--bottom Um prefixo, sempre (contrato §6). torn já servia de prefixo; o resto passou a nascer dele
Profundidades cravadas em px, 58 vezes calc(15px * var(--torn-top)) e um --torn-depth global Calibrar o rasgo passou a ser um número, não uma reescrita do polígono
Rasgo sempre nas duas bordas --torn-top / --torn-bot, zeráveis Uma borda só sem duplicar o clip-path
Sem breakpoint --torn-depth cai a .72 e .5 Em tela estreita a mesma mordida vira serra
Dependia do fundo do body ser --dark .torn-band com --torn-behind A cor do vão virou decisão explícita, não coincidência da página
Efeito inerte (clip-path:none) na versão confirmada Ligado, com os knobs para calibrar É o componente que foi catalogado, não o desligamento

Status externo: o polígono existe e funciona, mas nunca rodou em produção. A única versão confirmada do site de origem o traz desligado, e a versão em que ele está ativo (site/) não tem publicação confirmada. Foi normalizado ao contrato e verificado no preview em 1200px, 700px e 420px — nas duas bordas, nas duas variações de borda única e com os três knobs — mas não tem quilometragem: espere calibrar --torn-depth no primeiro uso real. Rodando num site, vira estavel e esta tabela ganha a linha do projeto.