Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Por que as caixas não se alinham?

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

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Produtos - Barbearia Alura</title>

        <link rel="stylesheet" href="reset.css">
        <link rel="stylesheet" href="produtos.css">
    </head>
    <body>
        <header>
            <div class="caixa">
                <h1><img src="logo.png"></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>
            <ul class="produto">
                <li>
                    <h2>Cabelo</h2>
                    <img src="cabelo.jpg">
                    <p class="produto-descricao">Na tesoura ou maquina, como o cliente preferir</p>
                    <p class="produto-preco">R$ 25,00</p>
                </li>
                <li>
                    <h2>Barba</h2>
                    <img src="barba.jpg">
                    <p class="produto-descricao">Corte e desenho profissional de barba</p>
                    <p class="produto-preco">R$ 18,00</p>
                </li>
                <li>
                    <h2>Cabelo+barba</h2>
                    <img src="cabelo+barba.jpg">
                    <p class="produto-descricao">Pacote completo cabelo e barba</p>
                    <p class="produto-preco">R$ 35,00</p>
                </li>
            </ul>
        </main>
    </body>
</html>

css:

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;
}

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

.produto li {
    display: inline-block;
    text-align: center;
    width: 30%
    vertical-align: top;
    background: #cccccc;
    margin: 0 1.5%;
    padding: 30px 20px;
    box-sizing: border-box;
}

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

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

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

Desde já obrigado!

1 resposta
solução!

Olá Izaias, tudo bem?

O que ocorre, é que na linha 40 do arquivo CSS a propriedade width: 30% não está sendo finalizada com o ;. Veja:

.produto li {
    display: inline-block;
    text-align: center;
    width: 30%    /*erro aqui*/
    vertical-align: top;
    background: #cccccc;
    margin: 0 1.5%;
    padding: 30px 20px;
    box-sizing: border-box;
}

No CSS, obrigatoriamente cada propriedade que é declarada deve finalizar com o ; e em sua ausência, todas as linhas seguintes até o fechamento das chaves } não são interpretadas, gerando um erro.

Dessa forma:

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

Note que após a propriedade que não tem o ;, todas as outras estão com a sinalização de erro.

Sendo assim, como a propriedade que faz com que aos itens dos produtos fiquem em apenas uma linha é a box-sizing: border-box e ela não está sendo aplicada, o layout se comportou da maneira que você relatou.

Modificando, o código ficará assim:

.produto li {
    display: inline-block;
    text-align: center;
    width: 30%;
    vertical-align: top;
    background: #cccccc;
    margin: 0 1.5%;
    padding: 30px 20px;
    box-sizing: border-box;
}

Espero ter ajudado, em caso de dúvidas fique a vontade para perguntar. Abraços e bons estudos! =)