[GUIA] CENTRALIZAR VÁRIAS DIVS E UM SITE

Veremos como alinhar DIV (camadas) horizontalmente, em seguida verticamente cmo HTML básico. Por fim iremos usar CSS para enxugamento e reutilização do código.


ALINHAMENTO HORIZONTAL:

Para centralizar na horizontal - independente da altura - primeiro crie a DIV principal, onde serão colocadas as divs centralizadas, com os seguintes atributos

left: 50%;
margin-left: -250px;
position: absolute;

E para as DIVs internas a configuração é:

float: left;
height: 100px;
width: 100px;

Obs.1: Sempre coloque as dimensões das internas (width e height) pode ser também "height: 100%;", na DIV principal não é necessário pois ela se ajusta automáticamente. A borda é opcional.

Obs.2: Não coloque "top: 50%;"

O código completo ficará assim:

<BODY>
<div style="left: 50%; margin-left: -150px; position: absolute;">  
  <div style="border: 1px solid  RED; float: left; height: 100px; width: 100px;">    
    1
  </div>
  <div style="border: 1px solid  RED; float: left; height: 100px; width: 100px;">
    2
  </div>
  <div style="border: 1px solid  RED; float: left; height: 100px; width: 100px;">
    3 
 </div>
</div>
</BODY>

1
2
3






Obs: se aumentar o número de DIV aumente o valor de "margin-left" da DIV principal

<BODY>
<div style="left: 50%; margin-left: -250px; position: absolute;">
  <div style="border: 1px solid  RED; float: left; height: 100px; margin: 2px; width: 100px;">
    1
  </div>
  <div style="border: 1px solid  RED; float: left; height: 100px; margin: 2px; width: 100px;">
    2
  </div>
  <div style="border: 1px solid  RED; float: left; height: 100px; margin: 2px; width: 100px;">
    3
  </div>
  <div style="border: 1px solid  RED; float: left; height: 100px; margin: 2px; width: 100px;">
    4
  </div>
  <div style="border: 1px solid  RED; float: left; height: 100px; margin: 2px; width: 100px;">
    5
  </div>
</div>
</BODY>

1
2
3
4
5






ALINHAMENTO VERTICAL:

Para alinhar na vertical além de horizontal, adicione os seguintes atributos ao código

top:50%;
margin-top:-150px;

O código completo ficará assim:

<BODY>
<div style="top:50%; left: 50%; margin-top: -150px; margin-left: -150px; position: absolute;">  
  <div style="border: 1px solid  RED; float: left; height: 100px; width: 100px;">    
    1
  </div>
  <div style="border: 1px solid  RED; float: left; height: 100px; width: 100px;">
    2
  </div>
  <div style="border: 1px solid  RED; float: left; height: 100px; width: 100px;">
    3 
 </div>
</div>
</BODY>

USANDO CSS:

Agosra vamos enxugar e deixar mais o código legível usando  CCS.

Adicione entre as tags <HEAD> </HEAD>

#principal{ 
  top:50%; 
  left:50%; 
  width:100px; 
  height:100px; 
  margin-left:-250px; 
  margin-top:-150px; 
  position:absolute; 
}



#internas{ 

  border: 1px solid  RED; 
  float: left; 
  height: 100px;
  width: 100px;
}


O código HTML das DIV irá diminuir, mude "style" por "id":

<div style="top:50%; left: 50%; margin-top: -150px; margin-left: -150px; position: absolute;">  
  <div style="border: 1px solid  RED; float: left; height: 100px; width: 100px;">    
    1
  </div>
  <div style="border: 1px solid  RED; float: left; height: 100px; width: 100px;">
    2
  </div>
  <div style="border: 1px solid  RED; float: left; height: 100px; width: 100px;">
    3 
 </div>
</div>

O código completo ficará assim:

<HTML> 
  <HEAD> 
    <style>
      #principal{ 
        top:50%; 
        left:50%; 
        width:100px; 
        height:100px; 
        margin-left:-250px; 
        margin-top:-150px; 
        position:absolute; 
      }



      #internas{ 

        border: 1px solid  RED; 
        float: left; 
        height: 100px;
        width: 100px;
      }
    </style> 
  </HEAD>



  <BODY> 

    <div id="principal"">  
      <div id="internas">    
        1
      </div>
      <div id="internas">    
      2
      </div>
      <div id="internas">    
        3 
      </div>
  </div>
  </BODY> 
</HTML>

LAYOUT NO CENTRO DA TELA:

 Usaremos o estilo "margin: 0 auto". Para inicio temos que colocar todo o conteudo de nossa página dentro de uma grande DIV, daremos o nome de #tudo, ela terá uma largura (width) de 760px, para que não apareça a barra de rolagem horizontal em telas com resolução 800 x 600, e defina "margin" como "auto". No caso "0" será para margem superior e inferior e "auto" para esquerda e direita.

 O IE possui uns bugs para "driblar", coloque "text-align: center;" no CSS de "body" e "text-align: left;" em "#tudo", pronto temos uma página centralida exatamente no centro da tela. veja como fica o código:



body{ 

  margin: 0; 
  padding: 0; 
  background: #cccccc; 
  text-align:center; /* hack para o IE */ 



#tudo{ 

  margin: 0 auto; 
  width: 760px; 
  padding: 10px; 
  text-align:left; /* "remédio" para o hack do IE */ 
}



#conteudo{ 

  padding: 5px; 
  background-color: #eeeeee; 
}

E um siples código HMTL para a DIV:

<div id="tudo">
  <div id="conteudo">
    <p>Pagina Centrada com CSS sem scroll ate 800×600<p>
  </div>
</div>

O código completo ficará assim:

<HTML>
  <HEAD>
    <title>Centrar uma página com CSS</title>
    <style type="text/css">
      body {
        margin: 0;
        padding: 0;
        background: #cccccc;
        text-align:center; /* hack para o IE */
      }

       #tudo {
        margin: 0 auto;
        width: 760px;
        padding: 10px;
        text-align:left; /* "remédio" para o hack do IE */
      }

      #conteudo { 
        padding: 5px; 
        background-color: #eeeeee; 
      }
    </style>
 </HEAD>

 <BODY> 
   <div id="tudo">
     <div id="conteudo">
      <p>Pagina Centrada com CSS sem scroll ate 800×600 Não use nenhum elemento HTML (figuras, tabelas, etc…) com largura superior a 750px.
        </p>
      </div>
    </div>
  </BODY> 
</HTML>

Para quem gosta de usar JS, veja:

<HEAD>
<style>
  #principal{
  position:absolute;
  top:50;
  left:50;
  background:#f0f0f0;
  height:200;
}
</style> 

<script> 
  function Centraliza(){
    var elemento = document.body;
    var conteudo = document.getElementById("conte");
    var Calculoh = (elemento.offsetTop +(elemento.clientHeight - conteudo.clientHeight) /2); 
    var Calculow = (elemento.offsetLeft + (elemento.clientWidth - conteudo.clientWidth) /2);
    conteudo.style.top = Calculoh; conteudo.style.left = Calculow; 
</script> 
</HEAD>

<BODY onload="Centraliza()"> 
  <div id="principal">
    TESTE
  </div>
</BODY>

Comentários
0 Comentários

Postar um comentário