2
respostas

[Projeto] Estilizando o form Exportador do ScreenMatch

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Exportador ScreenMatch</title>

    <style>
        body {
            font-family: Arial, Helvetica, sans-serif;
            background: linear-gradient(135deg, #141e30, #243b55);
            min-height: 100vh;
            margin: 0;
            display: flex;
            justify-content: center;
            align-items: center;
            color: #333;
        }

        form {
            background-color: #ffffff;
            width: 100%;
            max-width: 420px;
            padding: 30px;
            border-radius: 12px;
            box-shadow: 0 10px 25px rgba(0, 0, 0, 0.25);
        }

        h1 {
            position: absolute;
            top: 40px;
            color: #ffffff;
            font-size: 32px;
            text-align: center;
        }

        fieldset {
            border: none;
            padding: 0;
            margin-bottom: 18px;
        }

        label {
            font-weight: bold;
            display: block;
            margin-bottom: 6px;
            color: #243b55;
        }

        input,
        select {
            width: 100%;
            padding: 12px;
            border: 1px solid #ccc;
            border-radius: 8px;
            font-size: 15px;
            box-sizing: border-box;
        }

        input:focus,
        select:focus {
            outline: none;
            border-color: #243b55;
            box-shadow: 0 0 5px rgba(36, 59, 85, 0.5);
        }

        input[type="submit"] {
            background-color: #243b55;
            color: white;
            border: none;
            cursor: pointer;
            font-weight: bold;
            transition: 0.3s;
        }

        input[type="submit"]:hover {
            background-color: #141e30;
            transform: scale(1.02);
        }
    </style>
</head>
<body>

<h1>Exportador do ScreenMatch</h1>

<form action="exporta-arquivo.php" method="post">
    <fieldset>
        <label for="nome">Nome:</label>
        <input type="text" name="nome" id="nome" required>
    </fieldset>

    <fieldset>
        <label for="ano">Ano de lançamento:</label>
        <input type="number" name="ano" id="ano" required>
    </fieldset>

    <fieldset>
        <label for="nota">Nota:</label>
        <input type="number" name="nota" id="nota" required step="0.1">
    </fieldset>

    <fieldset>
        <label for="genero">Gênero:</label>
        <select name="genero" id="genero">
            <option value="super-heroi">Super-herói</option>
            <option value="comedia">Comédia</option>
            <option value="acao">Ação</option>
        </select>
    </fieldset>

    <input type="submit" value="Enviar">
</form>

</body>
</html>

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Olá, Alex. Como vai?

Parabéns pelo projeto! O design visual do seu formulário ficou sensacional. A escolha do gradiente para o fundo combinou muito bem com o estilo limpo do card branco, e os arredondamentos nos campos e no botão deram um toque de interface moderna e profissional. O efeito de foco e o zoom no botão com transform: scale enriquecem muito a experiência do usuário.

Analisando a estrutura do seu HTML e CSS, tudo está funcionando corretamente. No entanto, quero sugerir duas melhorias técnicas importantes sobre acessibilidade e semântica web que vão deixar o seu código ainda melhor estruturado:

1. Ajuste no Título Principal (<h1>)

No seu código, o título está flutuando na página usando position: absolute; top: 40px;. Embora o resultado visual tenha dado certo na sua tela, o uso de posicionamento absoluto em elementos estruturais importantes pode quebrar o layout dependendo do tamanho do monitor ou se o formulário crescer.

O jeito mais robusto de resolver isso mantendo o design idêntico é agrupar o título e o formulário dentro de um container flexbox vertical no body.

Veja como alterar a estrutura do seu HTML:

<body>
    <main class="container">
        <h1>Exportador do ScreenMatch</h1>
        
        <form action="exporta-arquivo.php" method="post">
            </form>
    </main>
</body>

E no seu CSS, você remove o position: absolute do h1 e adiciona as regras para alinhar tudo na vertical:

body {
    font-family: Arial, Helvetica, sans-serif;
    background: linear-gradient(135deg, #141e30, #243b55);
    min-height: 100vh;
    margin: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    color: #333;
}

/* Nova classe para organizar a estrutura vertical */
.container {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
}

h1 {
    color: #ffffff;
    font-size: 32px;
    text-align: center;
    margin-bottom: 30px; /* Controla o espaço entre o título e o form */
}

2. Semântica das Tags de Formulário

Você utilizou a tag <fieldset> para envolver cada campo isolado. Semanticamente, a tag fieldset serve para agrupar vários campos relacionados que fazem parte de um mesmo grupo (como um bloco de "Endereço" contendo rua, número e CEP).

Para envelopar campos individuais apenas com a finalidade de quebrar linhas e aplicar margens, a boa prática na web é utilizar a tag neutra <div>. Isso ajuda os leitores de tela usados por pessoas com deficiência visual a interpretarem o formulário de forma mais fluida.

Basta alterar nos seus blocos do HTML:

<div class="campo-grupo">
    <label for="nome">Nome:</label>
    <input type="text" name="nome" id="nome" required>
</div>

E ajustar o seletor no seu CSS substituindo fieldset por .campo-grupo.

Seu trabalho ficou excelente e mostra que você está se importando bastante com a interface das suas aplicações PHP. Continue evoluindo e aplicando esses caprichos nos seus projetos!

Espero que possa ter lhe ajudado!

Ajudou sim, apliquei as modificações sugeridas! Valeu