Uma necessidade de quem desenvolve sites é de centralizar uma div. Há pelo menos duas razões para isso: A primeira é que qualquer site deve ser feito usando a tag DIV como case do site a fim de que se possa trabalhar melhor o alinhamento do mesmo, seja centralizado ou alinhado a esquerda ou direita. A segunda razão é que em funções dos mais diferentes tamanhos e resoluções de tela é quase unânime a ideia de que um site deve ser centralizado a fim de administrar melhor os espaços laterais que excedem a largura do site.
Neste artigo mostrarei também como centralizar outras tags de texto e uma imagem com CSS. Para isso, a primeira coisa a fazer é criar o HTML adequadamente a fim de facilitar a formatação no CSS. Veja o código abaixo:
Perceba que coloquei o id=”site” na div que quero centralizar. Isto é necessário, pois caso eu vier a ter outras tags divs neste HTML, apenas esta tag deve ser centralizada. Perceba ainda os textos posicionados nas tags <h1> e <p>. Por fim a imagem com a tag <img>.
Agora vamos ao CSS. Veja o código em CSS para centralizar a div e as tags de texto:
O resultado pode ser visto aqui.
Explicando:
Conforme indicado na imagem, a regra da linha 14 não funcionará, pois a tag img não pode ser centralizada, pois a mesma é uma tag inline. Há dois tipos de tags em HTML: De bloco e inline.
As tags de bloco são aquelas que ocupam o espaço de uma linha interira. A maioria das tags HTML são de bloco. Já as tags inline são aquelas que podem ser usadas dentro dos blocos, como as tags: <a> para link, <strong> para negrito, <em> para enfatizado, <img> para imagens, entre outras.
A solução para centralizar a imagem é colocá-la no HTML dentro de uma tag de bloco e centralizar no CSS o conteúdo desta tag. Como já temos as tags <h1> e <p> com essa característica, basta colocar a imagem dentro da tag <p>, como no exemplo abaixo:
O resultado pode ser visto aqui.
A história antiga, mas vale a pena ser contada.
Lá atrás quando os monitores eram pequenos, os sites eram construídos de maneira a preencher toda a tela e como havia uma pequena variação de tamanho de monitores, isto não chegava a ser um problema.
Na medida em que os monitores foram crescendo de tamanho, cresceu também as dificuldades para lidar com o tamanho dos sites, em especial a sua largura. Assim, se você produzia um site para o monitor de largura de 800 pixels, mas agora começam a surgir monitores de 1024 pixels, o site ficava alinhado à esquerda e com isso muito espaço em branco ficava à direita na tela.
Para resolver esse problema, ou pelo menos para tentar minimizá-lo, alguém começou a centralizar o site na tela e assim se alguém tivesse um monitor de 800 pixels iria preencheria toda a tela, mas se o monitor fosse maior ele ficaria centralizado e assim não ficaria tão estranho o layout do site.
Como o tamanho dos monitores não parou de crescer, esta solução acabou sendo consolidada e hoje é usada praticamente na grande maioria dos sites.
Resolve em partes. Se setar a largura de uma div com 100%, ela var esticar de acordo com a largura do monitor e preencher toda a tela, mas isto servirá apenas se o conteúdo dela for fluído, como é o caso de texto. Mas se for uma imagem, a situação fica complicada, pois você não pode esticar uma imagem.
É verdade que hoje temos sim condições de lidar com isso de maneira mais eficiente, com a melhoria do CSS, integração com recursos de javascript e a própria estrutura do HTML que na versão 5 trouxe algumas melhorias.
Mas a essência do problema ainda permanece, em especial com a entrada dos dispositivos móveis. Para entender melhor sobre isso, sugiro que estude sobre layouts responsivos e layouts fluídos.
COMPARTILHE: Facebook Twitter WhatsApp