Definindo uma Coluna Específica no Layout CSS Grid: Métodos
Resposta Rápida
Para posicionar células da grade, utilize as propriedades grid-column e grid-row. O formato início/fim
determina o intervalo de posicionamento:
.item {
grid-column: 2 / span 2; /* Ocupa 2 colunas, começando pela segunda */
grid-row: 1 / span 2; /* Se estende por 2 linhas, começando pela primeira */
}
Neste exemplo, o elemento .item
ocupará um espaço de 2 por 2 células. Sua posição começará na segunda coluna e na primeira linha, semelhante a um jogo de "Batalha Naval". 🚢
Descrição Detalhada do Posicionamento de Elementos na Grade
A. Selecionando Linhas: A Cada Terceiro
Se você precisa colocar cada elemento em uma linha separada, é conveniente usar a propriedade grid-auto-rows
em combinação com a pseudo-classe :nth-child
:
.grid-container > *:nth-child(3n) {
grid-row: 3; /* Cada terceiro elemento vai para a terceira linha */
}
B. Selecionando Colunas: Primeira Coluna
Para selecionar uma coluna específica, aplique as propriedades grid-template-columns e nth-child:
/* Grade com três colunas */
.grid-container > *:nth-child(3n+1) {
background-color: deepskyblue; /* Voilà - a primeira coluna é destacada na cor desejada */
}
O CSS não permite selecionar colunas diretamente como o Ônibus Mágico fazia na infância. No entanto, temos truques disponíveis, como 3n+1
, que nos permite destacar a primeira coluna em uma grade de três colunas.
C. Situações Específicas
Quando é necessário criar uma grade com colunas em ordem reversa ou uma combinação de seleções de linha e coluna, o CSS se mostra um pouco limitado. Seu layout HTML deve ser construído de tal forma que atenda às suas necessidades dentro do contexto da grade.
Análise de Grid Responsivo
I. Responsividade e Media Queries
Adaptar o grid para diferentes tamanhos de tela é geralmente feito com media queries, que definem regras para o comportamento dos elementos:
@media (max-width: 768px) {
.item {
grid-column: 1 / -1; /* Um elemento ocupando todo o espaço disponível - afinal, dispositivos móveis também precisam de carinho ♡ */
}
}
II. Aguardando Subgrid
A nova capacidade do CSS Grid Level 2, chamada subgrid, permitirá layouts onde grades se aninham uma dentro da outra, aumentando as possibilidades de descrever layouts de grade complexos:
.item {
display: grid;
grid-template-rows: subgrid; /* Grades aninhadas - como um sonho se tornando realidade! */
}
Representação Visual
Você pode pensar na grade como um plano de cidade com ruas (linhas) e avenidas (colunas):
| | Avenida 1 | Avenida 2 | Avenida 3 |
|------|-----------|-----------|-----------|
| Rua 1| 🏢🏢🏢 | 🌳🏢🌳 | 🚗🚧🚗 |
| Rua 2| 🏠🏡🏘 | 🌳🌳🌳 | 🚕🚦🚕 |
| Rua 3| 🏬🏤🏣 | 🌳🏪🌳 | 🛴🚧🛴 |
Considerando que todos os prédios 🏢🏠🏤 na **Avenida 2** estão prontos para reformas.
/* O prefeito - CSS grid - define padrões para todos os "prédios" na "Avenida 2" */
.grid-container > :nth-child(2n) {
background-color: gold; /* Ouro para aqueles que se mantém atualizados! */
}
O prefeito manipula o seletor :nth-child
, grid-column
e grid-row
, controlando a colocação de elementos como blocos de construção em um jogo de Tetris.
Métodos de Otimização
Gerenciando Propriedades Customizadas
As propriedades customizadas (variáveis CSS) ajudam a manter o código organizado:
:root {
--target-column: 2; /* Defina o valor da variável uma vez - use-o um número ilimitado de vezes */
}
.grid-container > *:nth-child(var(--target-column)n) {
color: crimson; /* Como um farol na monotonia */
}
Não Esqueça da Acessibilidade
Lembre-se da importância de garantir que quaisquer mudanças na grade sejam acessíveis a todos os usuários, incluindo aqueles que utilizam leitores de tela.
O Futuro do CSS Grid
Versões futuras do CSS e avanços nos padrões eventualmente permitirão diretamente selecionar colunas e introduzirão outros recursos poderosos, como :nth-col()
, que estão logo ali na esquina.
Recursos Úteis
- Guia Completo para CSS Grid | CSS-Tricks
- grid-column - CSS | MDN
- grid-row - CSS | MDN
- Módulo de Layout CSS Grid Nível 1
- Tutorial sobre Grid | DigitalOcean
- Criando Layouts com CSS Grid em um Estilo "Masonry" - Smashing Magazine