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

Centralização da imagem

Não estou conseguindo centralizar a imagem "dentro" da caixa. Quando inspeciono ela, é possível perceber que ela está mais alinhada à direita em relação à borda.

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeAlguém consegue me auxiliar?

<!DOCTYPE html>
<html lang="pt-br">
    <head>
        <meta charset="UTF-8">
        <title>Produtos - Barbearia</title>
        <link rel="stylesheet" href="reset.css">
        <link rel="stylesheet" href="barbearia2.css">
    </head>

    <body>
        <header>
            <div class="caixa">
                <h1><img src="logo.png"></h1>

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

        <main>
            <ul class="produtos">
                <li>
                    <h2>Cabelo</h2>
                    <img src="cabelo.jpg">
                    <p class="produto-descricao">Na tesoura ou máquina, 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 de cabelo e barba.</p>
                    <p class="produto-preco">R$ 35,00</p> 
                </li>
            </ul>
        </main>
    </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;
}

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

.produtos li {
    display: inline-block;
    text-align: center;
    width: 30%;
    vertical-align: center;
    margin: 0 1.5%;
    padding: 30px 20px;
    box-sizing: border-box;
    border: 2px solid #000000;
}

.produtos h2 {
    font-size: 20px;
    font-weight: bold;
    text-transform: uppercase;
    margin: 0 0 10px 0;
}

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

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

Obrigada!

3 respostas
solução!

Olá Gessica, tudo bem?

Existem várias formas de solucionarmos essa questão!

Uma delas seria acrescentando position: relative a imagem. Com isso, podemos movimentar essa imagem partindo do ponto da sua posição inicial, ou seja, poderiamos utilizar as propriedades top, right, left e posicioná-la a onde desejarmos. O código ficará assim:

No HTML:

<img id="imagem-cabelo" src="cabelo.jpg">

No CSS:

#imagem-cabelo {
    position: relative;
    right: 5px; /*posiciona ao centro*/
}

Resultado:

ferramenta do desenvolvedor inspecionando a #imagem-cabelo e delimitando que ela se encontra no centro da caixa

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

Olá Géssica,

Voce levantou um topico bem interessante e que quebra a cabeça de muita gente no começo.

Parece que a imagem está deslocada do centro pq entre o e o começo da tag tem um espaço em branco (quebra de linha conta como espaço em branco). Isso acontece, essencialmente porque a imagem é, por definição, um elemento do tipo inline-block.

Para resolver isso, ou voce remove o espaço entre as tags assim: </h2><img (sem quebrar linha), ou voce coloca um css na imagem assim:

.produtos li img {
display: block;
margin: 0 auto;
}

Abraços e bons estudos

Muito obrigada Beatriz!

Fiz dessa forma e funcionou certinho!

Acabei utilizando a classe pra alterar logo todas as imagens sem precisar colocar um ID em cada uma delas.

Diego, fiz a tentativa com esses caminhos e não rolou. Tanto removendo o espaço entre </h2><img quanto aplicando o

.produtos li img {
display: block;
margin: 0 auto;
}

Removendo o espaço entre as tags, não identifiquei nenhuma alteração no resultado e; com a opção no CSS, ele deu uma diminuída mínima na altura das caixas, mas a imagem continuou "desalinhada".

De qualquer forma, muito obrigada!