SW Core
Início CSS Componentes Animações 01 - Tema e tokens 02 - Tipografia 03 - Cores semânticas 04 - Motor de cor 05 - Paleta estendida 06 - Ícones 07 - Espaçamento 08 - Bordas 09 - Sombras 10 - Breakpoints 11 - Container 12 - Grid 13 - Flex 14 - Posição 15 - Quebra de texto 16 - Zoom 17 - Object-fit 18 - Proporção 19 - Filtros 20 - Superfície 21 - Interação 22 - Botão 23 - Avatar 24 - Badge 25 - Breadcrumb 26 - Card 27 - Divider 28 - Timeline 29 - Skeleton 30 - Stepper 31 - Segmentado 32 - Alerta (inline) 33 - CSS nativo — visão geral 34 - Entrar ao rolar (sw-revela) 35 - Barra de leitura (sw-progresso) 36 - Menu, aviso e painel (sw-popover) 37 - Modal nativo (sw-dialog) 38 - Dica ancorada (sw-dica) 39 - Sanfona nativa (sw-sanfona) 40 - Carrossel de arrastar (sw-trilho) 41 - Formulário que trava (sw-trava) 42 - Bloco que se adapta (sw-caixa) 43 - Tabs 44 - Dropdown 45 - Navbar 46 - Sidebar 47 - Scrollspy 48 - Voltar ao topo 49 - Paginação 50 - Accordion 51 - Text Carousel 52 - Arrastar (Draggable) 53 - Chip 54 - Panel (drawer) 55 - Modal 56 - Tooltip 57 - Toast (SW.Alert) 58 - Progress 59 - Rating (estrelas) 60 - LGPD / Cookies 61 - Campo de formulário 62 - Validação inline (matinp) 63 - Select (JS) 64 - Máscara de campo 65 - Validação de formulário 66 - Textarea auto-resize 67 - Contador de caracteres 68 - Upload de arquivo 69 - Editor de texto rico 70 - Recorte de imagem 71 - Lightbox 72 - Slider de imagens 73 - Feed do Instagram 74 - Tabela avançada 75 - Infinite Scroll 76 - AJAX declarativo 77 - Cotação de moedas 78 - Máquina de escrever 79 - Realce de código 80 - Tema dia/noite 81 - Conteúdo responsivo 82 - Lazy load de imagem 83 - Preloader 84 - Efeitos de entrada 85 - Texto animado 86 - Mini-componentes animados 87 - Cascade 88 - Pin (prende na tela) 89 - Fixed (gruda no topo) 90 - Track (fileira horizontal) 91 - Sections (tela cheia) 92 - Frames (sprite no scroll) 93 - SVG Draw (traço) 94 - Motion Path 95 - Tilt (3D no mouse) 96 - Magnetic (ímã) 97 - Glow (segue o mouse) 98 - Cursor personalizado 99 - Canvas (fundo generativo) 100 - Lottie 101 - Rive 102 - Countdown 103 - Counter 104 - Transição de página
41
SWCore /
CSS /
Formulário que trava (sw-trava)
Formulário que trava (sw-trava) CSS
O botão de enviar só libera quando tudo está válido; o erro só aparece depois que a pessoa mexeu.
O que é
Nada de JS para desabilitar botão. Usa as regras que o HTML já tem (required, type="email", pattern, minlength).
Como funciona
form:has(:invalid) apaga o botão de envio; :user-invalid pinta o campo de vermelho só depois da interação (não grita com a pessoa antes dela digitar). Combina com o sw-fld e com a Validação do SWCore para mensagens.
Exemplos
Preencha para liberar
Ao vivo
<form sw-trava>
<input sw-inp type="email" required>
<input sw-inp type="tel" required pattern="[0-9 ()-]{10,}">
<button sw-btn="pri">Enviar</button>
</form>
Atributos
form[sw-trava]
liga a trava e o destaque de erro/acerto
Limitações — o que ele não faz
A validação no servidor continua obrigatória — a trava é só conforto para quem preenche.