Neste artigo vamos ver um pouco sobre um módulo CSS, o CSS3 Grid Layout, que nos permite definir uma grade de elementos e local sobre a ele. CSS3 Grid Layout é um módulo criado pela Microsoft, e implementado usando o prefixo ms-no IE10.
Guia do artigo:
- O que é CSS3 Grid?
- Declarando um GRID
- Posicionando itens no grid
- Criando um sistema de Grid
- Calculando a posição usando LESS
Se você não possui o IE10, existe uma maneira de ver e testar esses exemplos, para isso, se inscreva para criar uma conta no Browserstack e teste gratuitamente o browser que quiser.
O que é CSS3 Grid System?
O sistema de grids do CSS3 visa permitir que os projetos possam ser divididos em um conteúdo de grade pelos desenvolvedores. Ao invés de tentar fabricar uma grade de carros alegóricos, você pode declarar uma grade real em um elemento de recipiente e então usar isso para posicionar os elementos no interior. Mais importante ainda, a ordem de origem desses elementos não importa.
Declarando um GRID
Declaramos uma grade usando um novo valor para a propriedade display: grade. Como estamos usando a implementação IE10 aqui, precisamos que o valor de prefixo: display:-ms-grade;.
Uma vez que nós declaramos nosso grid, montamos as colunas e linhas usando a grid-colums e grid-rows.
.wrapper {
display: -ms-grid;
-ms-grid-columns: 200px 20px auto 20px 200px;
-ms-grid-rows: auto 1fr;
}
No exemplo acima, declaramos uma grade sobre o elemento wrapper. Usamos a propriedade de grid-columns para criar uma grade com uma coluna de 200 pixels de largura, um pixel-gutter de 20px, uma coluna de largura auto e flexível que vai esticar para preencher o espaço disponível, um outro pixel-gutter de 20 pixels de largura e uns 200px de barra lateral: um layout de largura flexível com duas barras laterais de largura fixa.
Usando a propriedade da grid-rows que eu criei duas linhas: a primeira é definida como auto para que ele irá esticar para preencher o que eu colocar nela; segunda linha é definida como 1FR, um novo valor usado em grades que significa uma unidade de fração. Neste caso, uma unidade de fracção do espaço disponível, de forma eficaz o espaço que está à esquerda.
Posicionando itens no grid
Agora eu tenho um grid simples onde eu posso incluir itens a ele. Se eu tiver um <div> com uma classe .main que eu queira colocar na segunda linha, e a coluna flexível setada como auto vai usar o css a seguir:
.content {
-ms-grid-column: 3;
-ms-grid-row: 2;
-ms-grid-row-span: 1;
}
Criando um sistema de Grid
Assim que eu comecei a estudar CSS3 grid system, eu queria ver se eu poderia usá-lo para replicar um sistema de grade flexível como este: responsive 16-collums 960 grid system.
Comecei por definir uma grade no meu elemento wrapper, o uso de frações para fazer este grid fluido, como vemos na listagem 3.
.wrapper {
width: 90%;
margin: 0 auto 0 auto;
display: -ms-grid;
-ms-grid-columns: 1fr (4.25fr 1fr)[16];
-ms-grid-rows: (auto 20px)[24];
}
Criamos uma classe CSS para cada opção de posicionamento: posição da coluna; posição linhas e extensão da coluna. Por exemplo:
.grid1 {-ms-grid-column: 2;}
.grid2 {-ms-grid-column: 4;} /* 2nd column - gutter|column 1|gutter */
.grid3 {-ms-grid-column: 6;} /* 3rd column - gutter|column 1|gutter|column2|gutter */
.row1 {-ms-grid-row:1;}
.row2 {-ms-grid-row:3;}
.row3 {-ms-grid-row:5;}
.colspan1 {-ms-grid-column-span:1;}
.colspan2 {-ms-grid-column-span:3;}
.colspan3 {-ms-grid-column-span:5;}
Como podemos ver na figura 1, um exemplo de grid fluído.
Isso funciona, mas ainda não é o ideal. Isso mostra claramente como o módulo de layout de grade funciona e é um ponto de partida útil. Primeiro, temos de acrescentar classes para que nossa marcação possa amarrar um elemento para uma posição no grid. Isto pode não ser um problema se estivermos sempre mantendo uma grade de 16 colunas, porém, como vou mostrar-lhe que o mundo real do grid system aparece quando você começa a redefinir uma grade, usando grades diferentes com base em consultas de mídia. Se você deixar cair a um esquema de seis colunas para telas pequenas, os itens de posicionamento em coluna 16 não faz mais sentido.
Calculando a posição usando LESS
Como vimos, se você quiser usar uma grade com colunas principais e gutters, você tem que levar em conta o espaçamento entre as colunas, assim como as colunas reais. Isso significa que temos que calcular cada vez que formos colocar um item no grid. No exemplo acima temos em torno deste, criando uma classe CSS para cada posição, permitindo que possamos pensar em 16, em vez de 32 colunas. Mas usando um pré-processador CSS como o LESS, posso evitar o uso de todas as classes e ainda assim pensar em colunas principais.
.position(@column,@row,@colspan,@rowspan) {
-ms-grid-column: @column*2;
-ms-grid-row: @row*2-1;
-ms-grid-column-span: @colspan*2-1;
-ms-grid-row-span: @rowspan*2-1;
}
Nesse exemplo temos 4 parâmetros: column; row; colspan; e rowspan. Então se quisermos incluir um item na coluna 4, linha 3 abrangendo duas colunas e uma linha, eu vou ter que escrever o css a seguir:
.box {
.position(4,3,2,1);
}
E nosso grid irá retornar:
.box {
-ms-grid-column: 8;
-ms-grid-row: 5;
-ms-grid-column-span: 3;
-ms-grid-row-span: 1;
}
Isso nos poupa de fazer algumas contas e operações matemáticas.
Podemos ver isso em ação criando um novo grid. Em vez de adicionar várias classes para cada elemento, eu posso adicionar uma classe, que usa um mix para criar a posição.
A exibição é muito melhor. Não temos informações de posicionamentos direto em cada elemento na marcação, apenas o nome de uma classe.
Conclusão
Nesse artigo nós vimos como é possível criarmos ótimos layouts usando o sistema de grid, dessa forma conseguimos um desenvolvimento muito mais prático, tanto na criação do layout, quanto na transformação do layout em página html.
Espero que tenham gostado e até o próximo artigo.
Confira também
Confira outros conteúdos:
CSS Border
HTML Icons: utilizando ícones em...
HTML hr: como utilizar a tag hr para...
Promoção de Natal
Oferta exclusiva de Natal!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 59,90
Total: R$ 718,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 59,90 /mês
Total: R$ 718,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.