Pular para o conteúdo principal

Gerador Placa de Preço - HTML, CSS e JavaScript - Tutorial

Gerador de Placas de Preço


Gerador Placa de Preço:

Descubra como criar um gerador de placas de preço dinâmico com este tutorial passo a passo. Este projeto consiste em uma sistema que gera placas de preços, ideal para supermercados e etc... O usuário pode preencher os dados e atualizar conforme sua necessidade, no final você terá uma placa de preço linda e funcional, depois da placa gerada você pode baixar a placa no formato PNG. 

Este é um projeto de código aberto onde qualquer pessoa pode modificar, fazer melhorias. por fim este projeto usa somente as linguagens HTML, CSS e JavaScript.

Veja o Gerador de Placas de Preço em funcionamento neste link. Gerador de Placas de Preço.

Veja o vídeo no YouTube:

Começando o Tutorial:

1° Passo: Abra seu VS Code, ou qualquer IDE da sua preferência e crie três pastas com os nomes... index.html, style.css e script.js.

Logo em seguida copie o código html abaixo e cole na pasta "index.html".



<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Gerador de Placas de Preço</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div id="pricePlate" class="price-plate">
        <div id="promoText" class="promo">PROMOÇÃO</div>
        <div class="details">
            <div id="productTypeText" class="product">ASINHA DE PORCO</div>
            <div id="productText" class="highlight">DESTAQUE</div>
            <div id="extraText" class="extra">ORELHA DE GALINHA</div>
        </div>
        <div class="price" id="priceContainer">
            <div class="currency">R$:</div>
            <div id="priceText" class="amount">10,99</div>
            <div id="unitText" class="unit">Kg</div>
        </div>
    </div>
    <div class="form-container">
        <form id="priceForm">
            <label for="promo">Personalizar:</label>
            <select id="promo" name="promo" required>
                <option value="PROMOÇÃO">Promoção</option>
                <option value="OFERTA">Oferta</option>
            </select><br>
            <label for="productType">Tipo de Produto:</label>
            <input type="text" id="productType" name="productType" placeholder="Ex: Carne Bovina" required><br>
            <label for="product">Produto:</label>
            <input type="text" id="product" name="product" placeholder="Ex: Rabada" required><br>
            <label for="extra">Descrição do Produto:</label>
            <input type="text" id="extra" name="extra" placeholder="Ex: Parte Traseira(opcional)" required><br>
            <label for="price">Preço:</label>
            <input type="text" id="price" name="price" placeholder="Ex: 10,99" required><br>
            <label for="unit">Unidade:</label>
            <select id="unit" name="unit" required>
                <option value="Kg">Kg</option>
                <option value="ml">ml</option>
            </select><br>
            <div class="button-container">
                <button type="button" class="button" onclick="updatePricePlate()">Atualizar</button>
                <button type="button" class="button" onclick="downloadImage()">Baixar Placa</button>
            </div>
        </form>
    </div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
    <script src="script.js"></script>
</body>
</html>

2° Passo: Copie o código abaixo e cole na pasta "style.css".



body {
    font-family: Arial, sans-serif;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    margin: 0;
    background-color: #f0f0f0;
}

.form-container {
    margin-top: 20px;
    width: 300px;
}

form {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

label, input, select {
    margin: 5px 0;
}

.button-container {
    display: flex;
    justify-content: space-between;
    width: 100%;
}

.button {
    padding: 10px 20px;
    background-color: #4CAF50;
    color: white;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    font-size: 16px;
}

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

.price-plate {
    position: relative;
    width: 400px;
    height: 560px;
    text-align: center;
    background-color: #ffffff;
    padding: 20px;
    box-sizing: border-box;
}

.promo {
    font-size: 42px;
    font-weight: bold;
    background-color: red;
    color: white;
    padding: 10px 0;
    margin-bottom: 20px;
    border-radius: 20px;
}

.details {
    margin-bottom: 20px;
}

.product, .highlight, .extra {
    font-size: 38px;
    margin: 20px 0;
}

.highlight {
    font-weight: bold;
}

.price {
    display: flex;
    justify-content: center;
    align-items: baseline;
    background-color: yellow;
    padding: 20px;
    border-radius: 20px;
    position: absolute;
    bottom: 30px;
    left: 50%;
    transform: translateX(-50%);
    width: calc(100% - 40px);
}

.currency, .unit {
    font-size: 32px;
}

.amount {
    font-size: 84px;
    font-weight: bold;
    margin: 0 10px;
}

        

3° Passo: Copie o código abaixo e cole na pasta "script.js".



function updatePricePlate() {
    const promo = document.getElementById('promo').value;
    const productType = document.getElementById('productType').value;
    const product = document.getElementById('product').value;
    const extra = document.getElementById('extra').value;
    const price = document.getElementById('price').value;
    const unit = document.getElementById('unit').value;

    const pricePattern = /^\d{1,3},\d{2}$/;

    if (!pricePattern.test(price)) {
        alert("Por favor, insira o preço no formato 99,99");
        return;
    }

    document.getElementById('promoText').textContent = promo;
    document.getElementById('productTypeText').textContent = productType;
    document.getElementById('productText').textContent = product;
    document.getElementById('extraText').textContent = extra;
    document.getElementById('priceText').textContent = price;
    document.getElementById('unitText').textContent = unit;
}

function downloadImage() {
    html2canvas(document.getElementById('pricePlate')).then(canvas => {
        let link = document.createElement('a');
        link.download = 'placa_de_preco.png';
        link.href = canvas.toDataURL('image/png');
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
    }).catch(err => {
        console.error("Erro ao gerar a imagem: ", err);
    });
}

        

4° Passo: Testar o Projeto! 

Agora, com os três arquivos (index.html, style.css, e script.js) criados, você pode abrir o index.html no seu navegador e ver seu projeto funcionando perfeitamente!

Se preferir os códigos estão no meu Repositório no GitHub.

Comentários

Mais vistas

Autocode - Significado e Funcionalidade

O Que é Autocode? O Autocode foi uma das primeiras linguagens de programação de computador, desenvolvida em 1952 por Alick Glennie para o computador Mark 1 na Universidade

Semáforo - HTML, CSS e JavaScript - Tutorial

Semáforo Funcional: Aprenda a criar um semáforo funcional com este tutorial detalhado. Descubra como implementar a lógica de controle de um semáforo usando HTML, CSS e JavaScript.

UI vs UX - Diferenças

Entendendo as diferenças entre UI e  Ux: Quando se trata de design de produtos digitais, os termos UI e UX são frequentemente usados juntos, mas representam conceitos distintos. Embora