1
resposta

[Dúvida] Quando altero o zoom da pagina dentro do navegador o FOOTER sobrepõe o Main

Quando altero o zoom da pagina dentro do navegador o <footer> sobrepõe o <main>

Gostaria de alterar o Zoom no navegador e a formatação não mudasse, no caso sem sobrepor os elementos apenas mudando o tamanho dos elementos...

Css

 header{
    background: url("bg.jpg");
    padding: 5px 0;

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

nav{
    position: absolute;
    top: 110px;
    right: 0;
}
nav li{
    display: inline;
    margin: 0 0 0 30px;
}
nav a{
    text-transform: uppercase;
    color: #FFFFFF;
    font-weight: bold;
    font-size: 22px;
    text-decoration: none;
}
nav a:hover{   /*:hover = comportamento do elemento com o mouse em cima dele*/
    color: #CCCCCC;
    font-size: 30px;
} 
.produtos{
    padding: 30px 0;
    width: 940px;
    margin: 0 auto;
}
.produtos li{
    display: inline-block; /* quebra a linha do elemento, dando um tamanho unico a cada parte da lista */
    text-align: center; 
    width: 30%; /* largura */
    vertical-align: top; 
    margin: 1.5% 1.5%; /*margem externa do elemento primiro numero referente a pra cima e pra baixo, segudo numero é para os lados */
    border-color: #000000;
    border-width: 2px;
    border-style: solid;
    border-radius: 10px;
    padding: 30px 20px; /* espaço interno do elemento */ 
    box-sizing: border-box; /* mantem o tamanho da largura de width */
}
.produtos li:hover{ /*:hover = comportamento do elemento com o mouse em cima dele*/
    border-color: red;
    color: red;

}
.produtos li:active{  /*:active = comportamento do elemento muda o mouse clicando nele*/
    color: green;
}
.produtos li:hover h2{  /* li:hover h2 esta sendo aplicado hover para a produtos li somente no h2*/
    font-size: 40px;

}
.produtos h2{
    font-weight: bold;
    font-size: 30px;
}
.descricao{
    font-size: 18px;

}
.preço{    
    font-weight: bold;
    font-size: 22px;
    margin-top: 20px;
}
footer {
    text-align: center;    
    background: url("bg.jpg");
    position: absolute; 
    bottom: 0;
     width: 100%  
}
.copy {
    color: #ffffff;
    font-size: 13px;
    margin-top: 40px;
    }

Html

    <!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Produtos - Barbearia Alura</title>
        <link rel="stylesheet" href="reset.css">
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
        <header>
            <div class="caixa">    
                <h1><img src="logo-branco.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">Contatos</a></li>
                    </ul>
                </nav>
            </div>
        </header>

        <main class="mainmargin">
            <ul class="produtos">
                <li>
                    <h2>Cabelo</h2>
                    <img src="Cabelo.jpg">
                    <p class="descricao">Na tesoura ou máquina, como o cliente preferir</p>
                    <p class="preço">R$ 25,00</p>    
                </li>
                <li>
                    <h2>Barba</h2>
                    <img src="Barba.jpg">
                    <p class="descricao">Corte e desenho profissional de barba</p>
                    <p class="preço">R$ 18,00</p>
                </li>
                <li>
                    <h2>Cabelo + Barba</h2>
                    <img src="cabelo+barba.jpg">
                    <p class="descricao">Pacote completo de Cabelo e Barba</p>
                    <p class="preço">R$ 35,00</p>
                </li>
                <li>
                    <h2>Pomada</h2>
                    <img src="pomada.jpg">
                    <p class="descricao">Pomada para o cabelo</p>
                    <p class="preço">R$ 25,00</p>                    
                </li>
                <li>
                    <h2>Shampoo</h2>
                    <img src="Shampoo.jpg">
                    <p class="descricao">Shampoo para o cabelo</p>
                    <p class="preço">R$ 20,00</p>                    
                </li>
                <li>
                    <h2>Condicionador</h2>
                    <img src="Condicionador.jpg">
                    <p class="descricao">Condicionador para o cabelo</p>
                    <p class="preço">R$ 15,00</p>                    
                </li>
            </ul>
        </main>

        <footer>
            <img src="logo-branco.png">
            <p class="copy">© Copyright Barbearia Alura – 2019 </p> 
        </footer>
    </body>
</html>
1 resposta

Olá, Egas.

Tudo bem?

O problema com o rodapé sobrepondo outros elementos é devido ao uso do "position: absolute" no elemento do rodapé.

Isso faz com que o rodapé se posicione em relação ao elemento ancestral posicionado mais próximo, que nesse caso é o elemento do corpo <body>. Como resultado, o rodapé pode estar se sobrepondo a outro conteúdo na página, tem que ter um pouco de cuidado quando for utilizar o "position: absolute" pois é como se o elemento "flutuasse" e saisse da hierarquie de pai e filho, e isso torna mais complicado de lidar com elementos.

Uma maneira de corrigir isso seria excluir o "position: absolute" e o "bottom: 0;" no elemento rodapé. Eu fiz esse teste e ficou legal, agora não sei como ficaria as outras páginas.

Outra forma de resolver é manter o "position: absolute" no rodapé, porém excluir o "bottom: 0;", e então adicionar o "position: relative" no <body> para criar um contexto de posicionamento para o rodapé. Isso permitiria que o rodapé fosse posicionado na parte inferior do elemento do <body> sem sobrepor outro conteúdo.

Espero ter ajudado. Qualquer dúvida manda aqui. Valeu.