CSS3 – Criando um sistema de grid
Criando um sistema de grid.
Ter um site responsivo é muito importante, um site que é responsivo consegue se reconfigurar automaticamente de acordo com o tamanho e tipo de dispositivo que o visitante estiver utilizado.
O sistema de grid permite que o site seja responsivo, muitas páginas da web são baseadas em Grid, isso significa que a página é dividida em colunas e assim fica mais fácil para colocar o elemento na página.
Muitas vezes o sistema de grid possui 12 colunas, sendo que o tamanho total da tela sempre é 100% não importando o dispositivo usado.
Para funcionar o sistema de grid é necessário uma <meta> tag conhecida como viewport, esteja colocada acima da tag <title>.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Para evitar problemas na flutuação do elemento é necessário colocar a seguinte função.
Todas estas colunas devem ser flutuantes para a esquerda, e deve ter preenchimento com padding:
Não se limite somente a essas resoluções do exemplo acima crie mais @media para mais tamanho de dispositivos, e vá alem disso prepare "class" para otimizar suas criações como por exemplo, espaço entre seções, botões, animação e outros.
Para funcionar o sistema de grid é necessário uma <meta> tag conhecida como viewport, esteja colocada acima da tag <title>.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
- width=device-widthparte: Define a largura da página, para acompanhar mudança da largura do dispositivo (que irá variar dependendo do dispositivo).
- A initial-scale=1.0: Define o nível de zoom inicial, quando a página é carregada pela primeira vez pelo navegador.
Criando o sistema de grid
Primeiro é necessário aplicar um estilo geral com box-sizing, Isso garante que a borda, esta incluída na largura e altura total dos elementos.
*{ box-sizing: border-box; margin:0; padding:0;}
Container para limitar as laterais e comportar todas as outras tag.
.container { width: 100%; max-width: 990px; padding-left: 1.5rem; padding-right: 1.5rem;
box-sizing: border-box; }
box-sizing: border-box; }
Para evitar problemas na flutuação do elemento é necessário colocar a seguinte função.
.row::after { content: ""; clear: both; display: table; }
Todas estas colunas devem ser flutuantes para a esquerda, e deve ter preenchimento com padding:
[class*="col-"] { float: left; padding: 15px; }
Para funcionar no código HTML será necessário criar Class especificas, neste caso vamos usar o nome “col” para colunas e um número para definir a quantidade de colunas.
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
HTML
Quando for montar as colunas no HTML, lembre-se que o limite é de 12 colunas que representa 100%, no exemplo abaixo temos uma div de 3 colunas e uma div de 9 colunas totalizando 12 colunas.
<div class="container">
<div class="row">
<div class="col-12">
<div class="col-3">...</div> <!-- 25% -->
<div class="col-9">...</div> <!-- 75% -->
</div> </div>
<div class="row">
<div class="col-12">
<div class="col-3">...</div> <!-- 25% -->
<div class="col-9">...</div> <!-- 75% -->
</div> </div>
Criando o sistema de grid para várias resoluções.
Para que isso seja possível vamos utilizar o @media, onde podemos colocar regras para cada tipo de resolução.
@media only screen and (max-width: 500px) {
body {
background-color: lightblue;
}
}
body {
background-color: lightblue;
}
}
Essa @media “max-width” fala que, quando o for um dispositivo menor que 500px todas as funções que estão dentro dela vai entra em ação, e quando for “min-width” significa que tudo que for maior que a resolução determinada ele aplicará o estilo.
Para mobile
[class*="col-"] {
width: 100%;
}
width: 100%;
}
Para tablets
@media only screen and (min-width: 600px) {
.col-m-1 {width: 8.33%;}
.col-m-2 {width: 16.66%;}
.col-m-3 {width: 25%;}
.col-m-4 {width: 33.33%;}
.col-m-5 {width: 41.66%;}
.col-m-6 {width: 50%;}
.col-m-7 {width: 58.33%;}
.col-m-8 {width: 66.66%;}
.col-m-9 {width: 75%;}
.col-m-10 {width: 83.33%;}
.col-m-11 {width: 91.66%;}
.col-m-12 {width: 100%;}
}
.col-m-1 {width: 8.33%;}
.col-m-2 {width: 16.66%;}
.col-m-3 {width: 25%;}
.col-m-4 {width: 33.33%;}
.col-m-5 {width: 41.66%;}
.col-m-6 {width: 50%;}
.col-m-7 {width: 58.33%;}
.col-m-8 {width: 66.66%;}
.col-m-9 {width: 75%;}
.col-m-10 {width: 83.33%;}
.col-m-11 {width: 91.66%;}
.col-m-12 {width: 100%;}
}
Para desktop
@media only screen and (min-width: 768px) {
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
}
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
}
Aplicando as class
Veja que esta sendo usada dois tipos de class na mesma div, isso porque quando abrir em certa resolução será ativado a class certa.
<div class="container">
<div class="row">
<div class="col-12 col-m-12"> <!-- comportar as colunas -->
<div class="col-3 col-m-3">
<ul>
<li>Casa</li>
<li>Apartamento</li>
<li>Carro</li>
<li>Moto</li>
</ul>
</div>
<div class="col-6 col-m-9">
<h1> Titulo 1 </h1>
<p>Texto de exemplo sobre...</p>
</div>
<div class="col-2 col-m-12">
<div class="aside">
<h2>O que?</h2>
<p>texto.</p>
</div>
</div> <!-- -->
</div> <!-- fim da row -->
</div> <!-- fim do container -->
<div class="row">
<div class="col-12 col-m-12"> <!-- comportar as colunas -->
<div class="col-3 col-m-3">
<ul>
<li>Casa</li>
<li>Apartamento</li>
<li>Carro</li>
<li>Moto</li>
</ul>
</div>
<div class="col-6 col-m-9">
<h1> Titulo 1 </h1>
<p>Texto de exemplo sobre...</p>
</div>
<div class="col-2 col-m-12">
<div class="aside">
<h2>O que?</h2>
<p>texto.</p>
</div>
</div> <!-- -->
</div> <!-- fim da row -->
</div> <!-- fim do container -->
Lembre sempre que antes de colocar as colunas, deve ser criado uma coluna geral para guardar as outras, como col-12, assim o seu layout não vai quebrar.
Exemplo do código CSS completo.
* { box-sizing: border-box; margin:0; padding:0; }
.container { width: 100%; max-width: 990px; padding-left: 1.5rem; padding-right: 1.5rem;
box-sizing: border-box; }
.row::after {content: ""; clear: both; display: table;}
[class*="col-"] { float: left; padding: 15px; width: 100%; }
@media only screen and (min-width: 600px) {
.col-m-1 {width: 8.33%;}
.col-m-2 {width: 16.66%;}
.col-m-3 {width: 25%;}
.col-m-4 {width: 33.33%;}
.col-m-5 {width: 41.66%;}
.col-m-6 {width: 50%;}
.col-m-7 {width: 58.33%;}
.col-m-8 {width: 66.66%;}
.col-m-9 {width: 75%;}
.col-m-10 {width: 83.33%;}
.col-m-11 {width: 91.66%;}
.col-m-12 {width: 100%;}
}
@media only screen and (min-width: 768px) {
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
}
.container { width: 100%; max-width: 990px; padding-left: 1.5rem; padding-right: 1.5rem;
box-sizing: border-box; }
.row::after {content: ""; clear: both; display: table;}
[class*="col-"] { float: left; padding: 15px; width: 100%; }
@media only screen and (min-width: 600px) {
.col-m-1 {width: 8.33%;}
.col-m-2 {width: 16.66%;}
.col-m-3 {width: 25%;}
.col-m-4 {width: 33.33%;}
.col-m-5 {width: 41.66%;}
.col-m-6 {width: 50%;}
.col-m-7 {width: 58.33%;}
.col-m-8 {width: 66.66%;}
.col-m-9 {width: 75%;}
.col-m-10 {width: 83.33%;}
.col-m-11 {width: 91.66%;}
.col-m-12 {width: 100%;}
}
@media only screen and (min-width: 768px) {
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
}
Não se limite somente a essas resoluções do exemplo acima crie mais @media para mais tamanho de dispositivos, e vá alem disso prepare "class" para otimizar suas criações como por exemplo, espaço entre seções, botões, animação e outros.
Comentários
Postar um comentário