Pular para o conteúdo principal

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">
  • 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; }


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%;}


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>

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;
    }
}


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%;
}


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%;}
}


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%;}
}

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  -->

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%;}
}




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

Postagens mais visitadas deste blog

Formatar o número do telefone no campo input com JavaScript

Colocar estilo no input range.

Remover e Inserir um atributo na Tag HTML usando JavaScript