Layout de 3 colunas com CSS



Hoje vou mostrar um exemplo prático e explicar como montar um layout de três colunas com css.

O layout fica semelhante a esse abaixo:

HTML

Primeiramente vamos fazer a estrutura do html.

Dentro da tag [body], vamos colocar uma div que vou definir com id=”site” que vai representar todo o conteudo do nosso layout.

Depois vamos acrescentar dentro dessa div#site uma div representando o topo div#topo, uma representando o conteudo div#conteudo (dentro dela vai as colunas) e mais uma pro rodape div#rodape.

Dentro da div#conteudo vamos acrescentar uma para o lado direito div#direita, uma para o meio div#meio, uma para o lado esquerdo div#esquerda, e depois uma div com um style clear: both; (pra fazer a div#conteudo descer até o final)

<html>
	<head>
		<title>Layout de 3 colunas</title>
		<link rel="stylesheet" type="text/css" href="estilo.css" />
	</head>
	<body>
		<div id="site">
			<div id="topo">div#topo</div>
			<div id="conteudo">
				<div id="esquerda">div#esquerda</div>
				<div id="meio">div#meio</div>
				<div id="direita">div#direita</div>
				<div style="clear: both;" />			
			</div>
			<div id="rodape">div#rodape</div>
		</div>
	</body>
</html>

CSS

*: vamos dar um “margin: 0 auto;” para a pagina toda (isso vai deixar a pagina centralizada).

body: vamos definir “background: #161616;” (um fundo para a pagina).

div#site: vamos definir 900px de largura e vamos dar uma margem no topo de 10px

div#topo: vamos definir 900px de largura, uma altura de 100px e colocar uma cor #444239.

div#conteudo: essa div vai segurar as três colunas, vamos deixar essa div com 900px de largura e colocar um background: #EE922E;

div#esquerda: vamos definir 150px de largura, deixar ela flutuando a esquerda dando um float: left e colocar uma cor #EE922E.

div#meio: vamos definir 600px de largura, deixar ela flutuando a esquerda dando um float: left (isso vai fazer ela colar do lado da div#esquerda formando a segunda coluna) e colocar uma cor #F8F3DF.

div#direita: vamos definir 150px de largura, deixar ela flutuando a esquerda dando um float: left (isso vai fazer ela colar do lado da div#meio formando a terceira coluna) e colocar uma cor #EE922E.

div#rodape: vamos definir 900px de largura, altura de 100px, dar um clear: both (isso vai fazer essa div descer abaixo das outras div de coluna) e colocar uma cor #59574C.

* { margin: 0 auto; }
body { background: #161616; }
div#site { width: 900px; margin-top: 10px;  }
div#topo { width: 900px; height: 100px; background: #444239; }
div#conteudo { width: 900px; background: #EE922E; }
div#esquerda { width: 150px; float: left; background: #EE922E; }	
div#meio { width: 600px; float: left; background: #F8F3DF; }
div#direita { width: 150px; float: right; background: #EE922E; }
div#rodape { width: 900px; height: 100px; background: #59574C; clear: both; }

, ,

  1. #1 por Rodrigo Xavier - 23 de junho de 2009 em 15:28

    Legal, eu apenas prefiro deixar a div do “rodapé” fora da div principal nesse caso, fora da div “site”.

    Então em vez de usar um clear: both; eu uso apenas um margin: auto; para centralizar.

    Agora, não que desta forma esteja errada. Abraços!

  2. #2 por David Delgado - 23 de junho de 2009 em 17:08

    Legal Danilo, seria legal também fazer um outro exemplo com as divs direita e esquerda serem expansíveis as extremidades do navegador. Mais esse exemplo ficou show de bola cara! Abraços!

  3. #3 por Chris Benseler - 24 de junho de 2009 em 09:45

    @Rodrigo vai depende muito de como é o layout. Por exemplo, num site com layout desse tipo http://www.culturainglesasp.com.br/festival pode ser interessante deixar fora.
    Mas, é da implementação mesmo, como você disse!

    @Danilo me lembro quando fui escrever meu primeiro código “tableless”, muitos anos atrás, e apanhei demais para fazer isso!

  4. #4 por Renan Andrade - 29 de junho de 2009 em 15:29

    Bacana ein Danilo, eu quando comecei a fazer layouts em css tinha dificuldade em encontrar uns tutoriais dirigidos assim.

  5. #5 por Danilo - 1 de agosto de 2009 em 21:01

    Valeu Renan,

    Tem outros jeitos de fazer layout em 3 colunas, mas esse foi o mais é simples possível…

    Abraço

  6. #6 por ronilson - 2 de agosto de 2009 em 08:39

    cara vc salvou minha noites em claro estava procurand esse layout muito obrigado e parabens funciona em todos os navegadores todos mesmo pois tem tods e fico testando

  7. #7 por xpc21 - 6 de outubro de 2009 em 11:54

    Parabens pelo TUtorial! M tira uma duvida? Como coloco nesse site na coluna direita o Menu Css com JQuery que você postou aqui? GRato!

  8. #8 por João Claudio - 12 de janeiro de 2010 em 12:29

    Danilo, esse Post foi ótimo, mas ele tem um pequeno probleminha, não é só ele, outros códigos em CSS também sofrem com isso, ele não centraliza no Internet Explorer, no Firefox e no Chrome ele funciona corretamente, menos no navegador da Microsoft. Como solucionar este problema?

(não será publicado)