Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Guilherme Oderdenge

Trabalhando com camadas

Recommended Posts

Trabalhando com camadas

É sabido que muitos iniciantes que começam a trabalhar com HTML utilizam a prática do tal do table para estruturar os seus sites. Isso é errado - e acho que (quase) todo mundo já sabe.

 

Pois bem, mas não estou aqui para reparar o(s) erro(s) de desenvolvimento utilizando o table, mas vou tentar explicar como trabalhar com divs da maneira mais correta possível, utilizando um pseudo-paradigma que eu gosto de chamar de layout orientado a camada (qualquer semelhança é mera coincidência, hehe...).

 

Entendendo o pseudo-paradigma

Aos que já trabalham com divs: será que vocês fazem isso da maneira mais coesa possível?

 

Aos que não trabalham: primeiro, larguem o table (ou seja lá qual método você utilize para estruturar seu layout) e aprendam a trabalhar com divs.

 

O pseudo-paradigma de "Layout orientado a camada" representa a maneira mais válida e suficiente de se trabalhar com divs, pois ele trata a estrutura de um layout em camadas, atingindo a integridade, validez e sustentabilidade necessária para se ter um código de qualidade.

 

Veja um exemplo de layout incorreto:

9LENg.png

Mas por que "incorreto"?

 

Ora, se você quiser manipular de uma só vez todas camadas (divs) do seu layout, você deverá operar na regra body (corpo), e uma vez que você mexe no body, a tendência é que todo o corpo siga este padrão. E é isso que você quer? É isso? Você quer ter camadas idênticas, estragando a integridade e a beleza natural do seu layout?

 

Não, não é isso que você quer. Tenho certeza que você quer o layout mais inteligente, mais fácil de modificar e mais sexy possível, não é? Pois bem. Tenho a solução para vocês: trabalhar com camadas. :thumbsup:

 

Na prática

Finja que a estrutura que exibida anteriormente era um pedaço de papel - um rascunho seu, quem sabe - e você não gostou do que desenhou. Então você amassa, e joga fora.

 

Em outras palavras, esqueça aquele layout por agora. Você deverá desamassá-lo na sua mente só depois, para comparar e rir do tempo que você estava perdendo trabalhando da maneira não-uniforme que você trabalhava.

 

Agora, veja este novo esboço de estrutura:

7ZWHp.png

 

O código dela, por sua vez:

<body>
  <div id="wrapper">

      <div id="header"></div>
      <div id="menu"></div>
      <div id="content"></div>
      <div id="footer"></div>

  </div>
</body>

Em código, no exemplo anterior, teríamos ganhado uma camada a mais - isso porque o wrapper (empacotador) ainda não existia.

 

Veja que a função do #wrapper é "empacotador"/"agregar" todo o conteúdo dentro dele. Ele torna tudo mais flexível.

 

Digamos que você tenha essa mesma estrutura de layout (header, menu, content, footer) e queira centralizá-las na tela. Certo, sem o #wrapper você teria que fazer algo assim:

 

<body>

   <div class="centralizer">
       <div id="header"></div>
   </div>

   <div class="centralizer">
       <div id="menu"></div>
   </div>

   <div class="centralizer">
       <div id="content"></div>
   </div>

   <div class="centralizer">
       <div id="footer"></div>
   </div>

</body>

Onde:

 

.centralizer {
   width: 950px;
   position: relative;
   margin-left: -475px;
   left: 50%;
}

Mas por quê diabos alguém faria isso? Acho que mesmo um iniciante saberia que também dá pra fazer assim:

 

<body>

   <div id="header"></div>

   <div id="menu"></div>

   <div id="content"></div>

   <div id="footer"></div>

</body>

Onde:

 

#header {
   width: 950px;
   position: relative;
   margin-left: -475px;
   left: 50%;
]

#menu {
   width: 950px;
   position: relative;
   margin-left: -475px;
   left: 50%;
}

#content {
   width: 950px;
   position: relative;
   margin-left: -475px;
   left: 50%;
}

#footer {
   width: 950px;
   position: relative;
   margin-left: -475px;
   left: 50%;
}

Ambos os métodos funcionam, mas não são recomendados. Por quê? Imagine que você queira aumentar a largura das suas camadas para 975px, e aí? Mudar um por um? Sim, é um processo rápido, mas torna-se repetitivo, e quando é repetitivo, torna-se chato.

 

Pode parecer que tudo o que eu falo aqui é óbvio - talvez seja mesmo -, mas se faço este artigo é porque estes erros já foram cometidos diante dos meus olhos. E o pior: se todos tivessem bom senso e/ou paciência de seguir paradigmas de maneira natural, então eles não existiriam, não é?

 

Pois bem, veja novamente o código com o empacotador:

 

<body>
  <div id="wrapper">

      <div id="header"></div>
      <div id="menu"></div>
      <div id="content"></div>
      <div id="footer"></div>

  </div>
</body>

Onde:

 

#wrapper {
   width: 950px;
   position: relative;
   margin-left: -475px;
   left: 50%;
}

Percebeu a mágica? O empacotador cuidou de tudo. Se quiser modificar qualquer coisa nas camadas filhas, basta utilizar o wrapper.

 

A ideologia extendida

O que eu acabei de lhes dar foi a base, mas o trabalho com camadas funciona pra tudo. Veja um exemplo seletor onde o paradigma se aplica:

 

h1, h2, h3, h4 {
   color: #0000ff;
}

Isso vai fazer com que os seletores h1, h2, h3 e h4 comportem a mesma cor, sem ter que definir a propriedade em camadas/seletores específicos.

 

Quando trabalhamos com camadas, sempre devemos lembrar de agregação. O paradigma é basicamente isso: agregação.

 

Entenda que sempre é, e sempre vai ser conveniente a utilização de camadas e agregadores. Isso sempre condensa e deixa o código mais legível e utilização.

 

Tanto isso é verdade que mesmo os veteranos em CSS podem se perder em um código com implementações proprietárias distintas.

 

Conclusão

Agregue. Você não tem nada a perder. Vai tornar o seu código mais reutilizável, limpo, sexy e bem arquitetado.

 

Ah, e só um lembrete: classes não devem ser utilizadas para a criação de camadas únicas. Só utiliza-se classe quando você for trabalhar com classes dinâmicas ou que possam se repetir. Entendido?! ;)

 

Quem quiser, @chiefgui.

 

E por hoje é isso.

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.