As caixas do InDesign são tão simples quanto clicar e arrastar. As camadas do Photoshop permitem que os pintores coloquem pixels em qualquer lugar que desejarem. Mas o layout com HTML e CSS é um jogo de cutucadas e em cascata.
Isso acontece todos os dias: diretores de arte experientes em Photoshop simulam designs, aprimorando seu espaçamento, escolhendo cuidadosamente fontes e cores apropriadas. Eles entregam seu trabalho a um ansioso desenvolvedor de HTML, que anuncia que o design provavelmente demorará dias para se transformar em HTML / CSS. Pior, eles farão alterações para contabilizar diferentes tamanhos de tela. O tempo é um mistério para ambas as partes. Será que o desenvolvedor demorará uma hora ou uma semana para transformar seu PSD em HTML / CSS funcional?
Os fundamentos do layout da web - o possível, o prático, as possibilidades - são fáceis de entender. Como o próprio design, a compreensão dos princípios ajudará qualquer designer a produzir designs melhores e agilizar o processo de construção de um site.
Tudo em uma página da web, de parágrafos a imagens, a links para texto em negrito, fica em caixas invisíveis. Estas caixas vêm em duas variedades: bloco e inline. A diferença entre inline e block reside em seu comportamento.
Elementos de bloco empilham uns sobre os outros. A menos que seja dito o contrário, eles ocupam tanto espaço horizontal quanto possível, empurrando tudo ao seu redor para cima ou para baixo. Para o design, os elementos de bloco são a principal ferramenta de layout.
Elementos inline são baseados em formatação de texto. Eles não quebram o fluxo de texto e suas dimensões se expandem para se adequar ao conteúdo. Contar um elemento inline para manter uma largura de 200 pixels não funcionará. Preenchendo com texto vai.
Por padrão, todos os elementos no é um elemento inline ou block. Os designers podem mudar sua natureza com um pouco de CSS - digamos, transformar uma pilha de itens de lista (blocos nativos) em uma linha ou uma série de links horizontais (nativamente inline) em uma pilha vertical. Isso significa que qualquer elemento visível pode ser usado para layout. Se eles devem depende do layout em questão.
Os elementos de bloco nativos incluem:
- Parágrafos
- Listas
- Itens em uma lista
- Cabeçalhos
-
- Tabelas
- Citações em bloco
- Organizadores em HTML5
,
,
,
e
- O próprio corpo
Elementos inline incluem:
- Âncoras (hyperlinks)
- Negrito
e
- itálico
e
- Imagens
- Citações
- Tipo de estilo
- Rótulos de formulário
- Você decide
Tags comuns que não são nem em bloco nem em linha:
- O título do documento
- Meta tags
- Tags de script
- Tags de link
À primeira vista, adaptar-se à mentalidade de lego parece contraintuitivo em um meio que permite gradientes, curvas e layouts elásticos. Mas a ideia de tudo como um tijolo é crucial para entender onde o conteúdo e a apresentação se encontram.
Diretriz: cada par de tags (ou tags independentes como
) no corpo representa uma caixa.
Usando blocos para layout
Exclua um quadro de texto no InDesign e a foto adjacente não será movida porque o posicionamento de nenhum dos dois depende do outro. Aplique curvas em uma camada do Photoshop e nenhuma outra camada será alterada, pois as curvas afetam uma camada por vez. Mas exclua um elemento em HTML, e tudo depois desse elemento provavelmente será alterado. Bloqueia em uma pilha de páginas da Web no canto superior esquerdo de seu contêiner, como
ou outro bloco.
Todo o layout da web é realizado com elementos de bloco. Designers usam blocos, na maioria das vezes elementos, para criar áreas retangulares nas quais todo o conteúdo se encaixa. Existem apenas quatro regras: - Largura total: o espaço que um elemento ocupa e afeta.
- Flutuar: Alterando a tendência dos blocos de empilhar.
- Desmarque: Reestabelecendo pilhas.
- Nest: Os elementos estão dentro um do outro ou não. Não há meio caminho.
Cada regra tem ressalvas ... mas nenhuma é necessária para montar uma página.
(Os especialistas em CSS reconhecerão que essas regras se aplicam a elementos com posicionamento relativo. O posicionamento absoluto é um animal diferente - e menos comum).
1. Largura total = caixa e buffer
Largura total é quanto espaço horizontal ocupa um bloco. Isso inclui a margem, a borda e o preenchimento do bloco. Na linguagem de impressão, margem e preenchimento são tipos de calhas. Mas, ao contrário do espaço negativo tradicional, criado ao separar as caixas, o preenchimento e a margem fazem parte de uma caixa. Eles são como kerning para elementos de layout.
O cálculo da largura, preenchimento e margem costuma ser a maior dor de cabeça para os designers, mas as regras restantes são um pouco mais diretas.
2. Floating bloqueia blocos da pilha
Flutuante empurra um elemento de bloco para a esquerda ou para a direita, removendo-o da pilha natural. Quando um bloco flutua, abre espaço para que tudo abaixo dele se levante em torno do outro lado.
Colunas surgem quando uma série de blocos flutuam adjacentes uns aos outros.
3. Limpando: Permitindo que os designers organizem uma página horizontal e verticalmente
Um infeliz efeito colateral de flutuação é o impacto no contêiner. Um contêiner crescerá verticalmente para ajustar seu conteúdo - exceto aqueles que flutuam. Se tudo flutuar, a caixa não terá altura. Qualquer coisa abaixo sobe sob os itens flutuantes. O caos segue.
A compensação retoma a tendência natural dos blocos de empilhar. Na verdade, ele lembra um contêiner que tem algo para conter. Sem limpeza, os projetistas não podem organizar uma página horizontal e verticalmente.
4. Aninhamento
O aninhamento é simples: cada bloco deve residir completamente em outro bloco. Nenhum bloco pode se estender fora de seus limites sem sérias conseqüências, e dois blocos podem se sobrepor parcialmente.
As colunas devem caber ou então
É aqui que os designers devem realizar um pouco de matemática. Para ajustar colunas corretamente, a soma de suas larguras totais deve ser menor que a largura de seu contêiner.
Colunas são uma série de elementos de bloco que empurram para a esquerda ou, em ocasiões mais raras, para a direita. Se essas colunas forem muito largas para o contêiner, sem técnicas especiais, a última coluna ficará abaixo das outras.
Um layout simples pode usar três elementos para criar um layout de duas colunas:
…
Acima, o exemplo da esquerda usa este CSS:
#container { width: 1000px; }
#main-content { width: 600px; padding: 20px; }
#sidebar { width: 340px; padding: 10px; }
O contêiner mede 1.000 pixels de largura. O bloco de conteúdo principal tem 640 pixels de largura - 600 de largura + 20 pixels de preenchimento em cada lado. O bloco da barra lateral tem 360 pixels de largura - 340 de largura + 10 pixels de preenchimento em cada lado. (600 + 20 + 20) + (340 + 10 + 10) = 1000. Um ajuste perfeito.
No exemplo da mão direita, no entanto, algo é muito amplo. Pode ser o preenchimento da coluna ou as larguras das colunas. Talvez o contêiner seja muito estreito. Alterar qualquer um desses fatores para tornar o contêiner mais largo que as colunas resolveria o problema.
Exceções requerem mais código; uniformidade requer menos
Ao contrário da mídia visual mais tradicional - digamos, esculpir ou design gráfico - escrever código requer uma forte visão mental do que o código fará.
Alguns aspectos do design por código são óbvios. Projetos simples geralmente usam menos código que designs complexos. Se a solução para um problema de design exigir que cada widget, coluna e peça de texto tenha sua própria cor de fundo, que assim seja. Apenas requer mais código.
- Se um pedaço de texto for maior que outros, ele precisará de sua própria entrada no arquivo CSS.
- Se duas colunas tiverem larguras diferentes, o arquivo CSS deverá especificar as larguras de cada uma.
- Se um design requer três tipos de marcadores, o CSS requer três definições.
Um fato menos óbvio do design por código é que ele é ... menos óbvio. Imaginação e experiência são especialmente necessárias no layout de página de programação, onde a alteração da margem de uma coluna afetará seus vizinhos. Na transição da impressão para o design da web, não conseguir imaginar o resultado atrapalha os novos desenvolvedores.
Isso não color:blue
é difícil de entender. Mas é uma coisa para escrever div { background: url(photo.jpg) top left no-repeat; }
e outro para ver uma foto no contexto da página.
Felizmente, algumas analogias facilitam a curva de aprendizado.
- Pense no CSS como trabalhando inteiramente com estilos de parágrafos. Alterar um item na hora é complicado. O CSS funciona melhor quando aplicado a toda uma classificação de imagens ou palavras (daí o atributo “class” em HTML).
- Imagine visualizar um quarto de uma página por vez. A qualquer momento, os usuários veem apenas parte de uma página da Web porque a maioria das páginas da Web é maior que a média da janela do navegador. Usuários finais só veem uma peça de cada vez. A dobra ocorre nos quatro lados do navegador.
- Pergunte a si mesmo “e se cada elemento duplicasse em quantidade?” Os bons designs apresentam um bom conteúdo no lançamento. Grandes projetos web continuam a fazê-lo. Modelos de artigos devem acomodar artigos de duração variável. Os gerentes de conteúdo removerão o texto antigo ou adicionarão novas fotos que não estejam de acordo com as proporções planejadas. Os clientes decidem que querem seus cinco tweets mais recentes na página inicial. Ninguém sabe como um site pode mudar, mas o planejamento de quantidades diferentes de tudo é uma boa precaução.
Avançando
Os benefícios de entender o layout da web são saber o que é possível, evitar armadilhas comuns e tempos de desenvolvimento mais rápidos. Mas aprender a projetar com HTML / CSS em mente requer uma mudança de pensamento. Sistemas CSS como o 960 Grid System minimizar o trabalho técnico necessário, facilitando a transição do trabalho de pixel puro para o código. Mas, como aprender qualquer idioma, a melhor ferramenta pode ser a persistência.
O que lhe dá mais problemas ao transformar modelos em HTML e CSS? Compartilhe suas experiências e soluções nos comentários abaixo.