Home > Blog > Projetos Práticos
Projetos Práticos
CSS
Desenvolvimento Web
JavaScript
Programação

Aprenda Como Criar um Gerador de CPF com HTML, CSS e JavaScript

Atualizado em: 25 de fevereiro de 2025

pessoa segurando um cartão azul na mão

Introdução

Criar um gerador de CPF útil e funcional usando apenas HTML, CSS e JavaScript é uma habilidade valiosa para desenvolvedores web, especialmente aqueles envolvidos em projetos que requerem validação de formulários ou testes de software. Este tutorial passo a passo mostra como você pode facilmente implementar essa ferramenta no seu site ou projeto pessoal.

Veja Isso em Ação

Para entender melhor como esses elementos trabalham juntos na prática, confira a implementação ao vivo. Esta demonstração interativa permite que você veja imediatamente o resultado de alterações no código e como o gerador de CPF opera em tempo real. Experimente agora e veja como você pode incorporar funcionalidades similares em seus próprios projetos!

See the Pen Gerador de CPF – Código Fácil by Código Fácil (@CodigoFacil) on CodePen.

O Que Você Vai Precisar

Antes de começar, certifique-se de que você tem um ambiente básico de desenvolvimento pronto para usar HTML, CSS e JavaScript. Você não precisa de nenhum framework ou biblioteca adicional, o que torna este projeto acessível mesmo para iniciantes.

Passo 1: Estruturar o HTML

Primeiro, vamos criar a estrutura básica da nossa página que incluirá um campo de entrada para exibir o CPF, botões para gerar e validar o CPF, e um checkbox para escolher se o CPF deve ter pontuação.

index.html

HTML
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Gerador de CPF</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <!-- Container para os elementos de entrada e botões -->
    <div id="cpf-container">
        <input type="text" id="cpf" placeholder="CPF aparecerá aqui...">
        <button onclick="gerarCPF()">Gerar CPF</button>
        <button onclick="validarCPF()">Validar CPF</button>
        <!-- Checkbox para alterar a formatação do CPF gerado -->
        <label><input type="checkbox" id="pontuacao" checked> Incluir pontuação</label>
    </div>
    <script src="script.js"></script>
</body>
</html>

Passo 2: Adicionar Estilos com CSS

Para tornar nossa interface mais atraente, vamos adicionar alguns estilos básicos usando CSS. Isso incluirá estilização para o container, campo de texto e botões.

style.css

CSS
/* Estilo geral do container que agrupa os elementos */
#cpf-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    padding: 20px;
    background: #f7f7f7;
    border-radius: 8px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}

/* Estilização uniforme para os campos de texto e botões */
#cpf-container input[type="text"], #cpf-container button {
    width: 200px;
    padding: 10px;
    border-radius: 5px;
    border: 1px solid #ccc;
}

/* Estilos específicos para os botões, incluindo um efeito hover */
#cpf-container button {
    background-color: #4CAF50;
    color: white;
    cursor: pointer;
    transition: background-color 0.3s;
}

#cpf-container button:hover {
    background-color: #45a049;
}

Passo 3: Implementar a Lógica com JavaScript

Agora, vamos adicionar a funcionalidade para gerar e validar CPFs. Isso inclui funções para gerar um número de CPF válido aleatoriamente, formatar com ou sem pontuação e validar um CPF fornecido.

script.js

JavaScript
// Adiciona um evento ao checkbox para alterar a formatação do CPF exibido no campo de texto
document.getElementById('pontuacao').addEventListener('change', function() {
    let cpfField = document.getElementById('cpf');
    // Verifica se o checkbox está marcado e formata ou remove a pontuação do CPF conforme necessário
    cpfField.value = this.checked ? formatarCPF(cpfField.value) : removerPontuacao(cpfField.value);
});

// Função para gerar um CPF válido e exibi-lo no campo de texto
function gerarCPF() {
    let cpf = gerarCPFValido(); // Gera um CPF válido
    // Verifica se a pontuação deve ser incluída e atualiza o campo de texto adequadamente
    document.getElementById('cpf').value = document.getElementById('pontuacao').checked ? formatarCPF(cpf) : removerPontuacao(cpf);
}

// Função para validar o CPF inserido pelo usuário e mostrar uma mensagem de alerta
function validarCPF() {
    let cpf = document.getElementById('cpf').value;
    // Alerta o usuário se o CPF é válido ou não
    alert(isCPFValido(cpf) ? "CPF válido!" : "CPF inválido!");
}

// Função para gerar um número de CPF válido aleatoriamente
function gerarCPFValido() {
    // Gera os nove primeiros dígitos do CPF aleatoriamente
    let cpf = Array.from({length: 9}, () => Math.floor(Math.random() * 9)).join('');
    // Adiciona os dois dígitos verificadores ao final do CPF
    cpf += calcularDigitos(cpf);
    return cpf;
}

// Função para formatar um CPF adicionando pontos e traço
function formatarCPF(cpf) {
    // Usa expressão regular para inserir pontos e traço nos locais corretos
    return cpf.replace(/^(\d{3})(\d{3})(\d{3})(\d{2})$/, "$1.$2.$3-$4");
}

// Função para remover toda pontuação de um CPF
function removerPontuacao(cpf) {
    // Remove todos os caracteres que não são dígitos
    return cpf.replace(/[^\d]/g, '');
}

// Função para calcular os dígitos verificadores de um CPF
function calcularDigitos(cpf) {
    let soma, resto;
    // Calcula o primeiro dígito verificador
    soma = cpf.split('').reduce((acc, cur, i) => acc + cur * (10 - i), 0);
    resto = (soma * 10) % 11;
    let primeiroDigito = resto === 10 ? 0 : resto;
    // Calcula o segundo dígito verificador
    soma = cpf.split('').reduce((acc, cur, i) => acc + cur * (11 - i), primeiroDigito * 2);
    resto = (soma * 10) % 11;
    let segundoDigito = resto === 10 ? 0 : resto;
    // Retorna os dois dígitos como string
    return `${primeiroDigito}${segundoDigito}`;
}

// Função para validar se um CPF é matematicamente correto
function isCPFValido(cpf) {
    // Remove pontuações para garantir apenas dígitos
    cpf = removerPontuacao(cpf);
    // Verifica se o CPF tem 11 dígitos e não é uma sequência de dígitos repetidos
    if (cpf.length !== 11 || new Set(cpf).size === 1) return false;
    // Separa o corpo do CPF e os dígitos verificadores
    let [corpo, digitos] = [cpf.slice(0, 9), cpf.slice(9)];
    // Compara os dígitos verificadores com o cálculo baseado no corpo do CPF
    return digitos === calcularDigitos(corpo);
}

Conclusão

Parabéns! Você agora tem um gerador e validador de CPF totalmente funcional, feito apenas com HTML, CSS e JavaScript. Este projeto não apenas melhora suas habilidades de desenvolvimento web, mas também fornece uma ferramenta útil que pode ser integrada em projetos mais complexos.

Este tutorial é ideal para desenvolvedores que desejam entender melhor a manipulação de strings e eventos em JavaScript, além de práticas de validação de entrada de dados.

Se você se interessou aprenda a criar mais projetos práticos. Esperamos que você encontre este guia útil para seus projetos e aprendizado!

Ranking dos 10 Melhores Cursos de Programação de 2025

Descubra os melhores cursos de programação. Aprenda a escolher o curso ideal para iniciar ou avançar na carreira de desenvolvedor

Os comentários estão desativados.

POSTS RELACIONADOS

Ver todos

Seta para a direita

Quer se Tornar um Programador de Sucesso?

Descubra os melhores cursos de programação para acelerar sua carreira e aprender do jeito certo!