Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Centralizar o form dentro da tag main

Prezado(a),

Como faço para centralizar todo o form de dentro da tag "main" (class="main-contato")?

Abaixo segue o código que estou trabalhando.

Obs.: Para facilicar a visualização, deixe a tag main com borda de 1px solid com a cor vermelha.

<DOCTYPE html>

<html lang="pt-br">

    <head>
        <meta charset="utf-8">
        <title>Contato</title>
        <link rel="stylesheet" href="css\reset.css">
        <link rel="stylesheet" href="css\style.css">
    </head>

    <body>
        <header>
            <div class="caixa">
                <h1><img src="img\logo.png" alt="Logo da Barbearia"></h1>

                <nav>
                    <ul>
                        <li><a href="index.html">Home</a></li>
                        <li><a href="produtos.html">Produtos<a></li>
                        <li><a href="contato.html">Contato<a></li>
                    </ul>
                </nav>
            </div>
        </header>

        <main class="main-contato">
            <form>
                <label for="nome-e-sobrenome" class="label-padrao">Nome e sobrenome</label>
                <input type="text" id="nome-e-sobrenome" class="input-padrao" required>

                <label for="email" class="label-padrao">E-mail</label>
                <input type="email" id="email" class="input-padrao" required placeholder="seuemail@email.com.br">

                <label for="telefone" class="label-padrao">Telefone</label>
                <input type="tel" id="telefone" class="input-padrao" required placeholder="(xx)xxxxx-xxxx">

                <label for="mensagem" class="label-padrao">Mensagem</label>
                <textarea cols="70" rows="10" id="mensagem" class="input-padrao"></textarea>

                <fieldset>
                    <legend class="label-padrao">Como prefere o nosso Contato</legend>

                    <label for="radio-email" class="label-padrao">
                        <input type="radio" name="contato" value="email" id="radio-email" checked>E-mail
                    </label>


                    <label for="radio-telefone" class="label-padrao">
                        <input type="radio" name="contato" value="telefone" id="radio-telefone">Telefone
                    </label>


                    <label for="radio-whatsapp" class="label-padrao">
                        <input type="radio" name="contato" value="whatsapp" id="radio-whatsapp">WhatsApp
                    </label>
                </fieldset>

                <fieldset class="select">
                    <legend>Qual horário você prefere:</legend>
                    <select>
                        <option>Manhã</option>
                        <option>Tarde</option>
                        <option>Noite</option>
                    </select>
                </fieldset>

                <label class="label-padrao"><input type="checkbox">
                    Gostaria de receber nossas novidades por e-mail? 
                </label>

                <input type="submit" value="Enviar formulário" class="enviar">
            </form>    
        </main>

        <footer>
            <img src="img\logo-branco.png" alt="Logo da Barbearia">

            <p class="copyright">&copy;Copyright Barbearia Alura – 2019</p>
        </footer>
    </body>
</html>
header{
    background: #BBBBBB;
    padding:  20px 0;
}

.caixa {
    position:  relative;
    width: 940px;
    margin:  0 auto;
}

nav{
    position: absolute;
    top:  110px;
    right: 0;
}

nav li{
    display: inline;
    margin: 0 0 0 15px;

}

nav a {
    text-transform: uppercase;
    color: #000000;
    font-weight: bold;
    font-size: 22px ;
    text-decoration: none;
}

nav a:hover{
    color:  white;
    text-decoration: underline;
}

.produto {
    width: 940px;
    margin:  0 auto;
    padding: 50px 0;
}

.produto li{
    display:  inline-block;
    text-align: center;
    width: 30%;
    vertical-align: top;
    border:  2px solid black;
    border-radius:  8px;
    margin: 0 1.5%;
    padding: 30px 20px;
    box-sizing: border-box;
}

.produto li:hover {
    border-color: #C78C19;
}

.produto li:active {
    border-color: #088C19;    
}

.produto li:hover h2 {
    font-size: 34px;
}

.produto h2{
    font-size: 30px;
    font-weight:  bold;
}


.produto-descricao{
    font-size: 18px;
    margin:  10px 0;
}

.produto-preco {
    font-size: 22px;
    font-weight: bold;
    margin:  10px 0;
}

footer{
    text-align: center;
    background:  url("../img/bg.jpg");
    padding: 40px 0;
}

.copyright{
    color: #ffffff;
    font-size: 13px;
    margin: 20px 0 0;
}


/* Configurações CSS da página de Contato.html*/

.main-contato{
    width: 940px;
    margin: 0 auto;
    border: 1px solid red;
}

form{
    margin: 40px auto;

}

.label-padrao{
    display: block;
    font-size: 18px;
    margin: 0 0 10px;
}

.input-padrao {
    display: block;
    margin: 0 0 20px;
    padding: 10px 5px;
    width: 50%;
}

.checkbox {
    margin: 20px 0;
}

.select{
    font-size: 18px;
    margin: 20px 0;
}

.select p{
    display: inline;
}

.enviar{
    width: 40%;
    padding: 15px 0;
    background: orange;
    color: white;
    font-weight: bold;
    font-size: 18px;
    border: none;
    border-radius: 5px;
    transition: 1s all;
    cursor: pointer;

}

.enviar:hover{
    background: red;
    transform: scale(1.2);
}
3 respostas

Eu aconselho você colocar todo o seu formulário em uma section, ultilizando a section, voce delimitara somente o formulário na tag main, e fazendo referência no css a section no main main > section { width: (tamanho desejado); margin: auto; } Aconselho deixar o tamanho da tela em vw e se quiser colocar uma margem customizada em cima ou em baixo ultilize os comandos separados de margin-top e margin-bottom

solução!

Olá, Lucas.

Tudo bem?

Você colocou um margin auto na lateral do formulário e isso está correto, porém o formulário está do tamanho da <main>, ou seja, com o width: 100%;, você precisa diminuir o tamnho do formulário para metade ou seja 50%:

form{
    margin: 40px auto;
    width: 50%;
}

Como os input estão com width: 50%; eles vão ficar muito pequenos, então nos input você coloca um width: 100%; e vai centralizar e ficar num tamanho legal, segue o código ajustado:

header{
    background: #BBBBBB;
    padding:  20px 0;
}

.caixa {
    position:  relative;
    width: 940px;
    margin:  0 auto;
}

nav{
    position: absolute;
    top:  110px;
    right: 0;
}

nav li{
    display: inline;
    margin: 0 0 0 15px;

}

nav a {
    text-transform: uppercase;
    color: #000000;
    font-weight: bold;
    font-size: 22px ;
    text-decoration: none;
}

nav a:hover{
    color:  white;
    text-decoration: underline;
}

.produto {
    width: 940px;
    margin:  0 auto;
    padding: 50px 0;
}

.produto li{
    display:  inline-block;
    text-align: center;
    width: 30%;
    vertical-align: top;
    border:  2px solid black;
    border-radius:  8px;
    margin: 0 1.5%;
    padding: 30px 20px;
    box-sizing: border-box;
}

.produto li:hover {
    border-color: #C78C19;
}

.produto li:active {
    border-color: #088C19;    
}

.produto li:hover h2 {
    font-size: 34px;
}

.produto h2{
    font-size: 30px;
    font-weight:  bold;
}


.produto-descricao{
    font-size: 18px;
    margin:  10px 0;
}

.produto-preco {
    font-size: 22px;
    font-weight: bold;
    margin:  10px 0;
}

footer{
    text-align: center;
    background:  url("../img/bg.jpg");
    padding: 40px 0;
}

.copyright{
    color: #ffffff;
    font-size: 13px;
    margin: 20px 0 0;
}


/* Configurações CSS da página de Contato.html*/

.main-contato{
    width: 940px;
    margin: 0 auto;
    border: 1px solid red;
}

form{
    margin: 40px auto;
    width: 50%;
}

.label-padrao{
    display: block;
    font-size: 18px;
    margin: 0 0 10px;
}

.input-padrao {
    display: block;
    margin: 0 0 20px;
    padding: 10px 5px;
    width: 100%;
}

.checkbox {
    margin: 20px 0;
}

.select{
    font-size: 18px;
    margin: 20px 0;
}

.select p{
    display: inline;
}

.enviar{
    width: 40%;
    padding: 15px 0;
    background: orange;
    color: white;
    font-weight: bold;
    font-size: 18px;
    border: none;
    border-radius: 5px;
    transition: 1s all;
    cursor: pointer;

}

.enviar:hover{
    background: red;
    transform: scale(1.2);
}

Eu só editei no css as classes do form e do input!

Espero ter ajudado. Qualquer dúvida manda aqui.

Bons estudos :)

Obrigado Renan, Era exatamente o que estava querendo.

E obrigado Pedro, pelo conselho.