You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tecnica de fonte responsiva, isso serve para ter uma visualização melhor no código e fixar um padrão no desenvolvimento.
html {
font-size:62.5%/* A cada 1rem será considerada 10px */
}
body {
font-size:1.6rem/* 16 pixels */
}
p {
font-size:2.4rem/* 24 pixels */
}
Quando utilizamos a propriedade 100vw, é contabilizado junto o scrollbar do navegador, retire
a propriedade max-width e conseguirá observar esse efeito, com ela aplicada conseguimos delimitar somente o que é referente ao corpo do documento.
.container {
width:100vw;
max-width:100%;
}
Opte sempre por imagens SVG quando há opção pois elas oferecem alta resolução independente do dispositivo.
Antigamente um dos maiores desafios relacionado ao desenvolvimento web se tratava na construção de layouts, conforme o tempo foi avançado várias abordagens (hoje isso se chama gambiarra) foram sendo utilizadas, tendo métodos desde da utilização com tabelas, floats, com a propriedade position e display block, inline-block e assim por diante.
Agora imagine o trabalho não só para construir mas para quando quisesse fazer alguma alteração no layout, a responsabilidade poderia estar no elemento HTML ou divido em várias seções no CSS, com isso tudo foi gerado a grande fama de dificuldade que se tem como trabalhar com CSS.
Mas queremos aqui, que você venha dar uma chance para nossas aplicações estarem bonitas (e com isso você não perder nenhum fio de cabelo).
Hoje em dia já possuímos o método de layout através flexbox, que foi um divisor na web em relação aos métodos passados com criação de layout, mas algo em relação a diferença do grid está no seguinte fator:
Flexbox: Unidirecional, tratamos somente um eixo, somente horizontal ou vertical, ele é baseado no conteúdo dos itens (a definição do tamanho do item, é definido no próprio item)
Grid: Bidrecional, conseguimos tratar os dois eixos horizontal e vertical, ele é baseado na definição do container (a definição do tamanho dos itens, é feito no elemento pai)
Quero tratar somente linha ou coluna: Utilize display: flex
Quero controlar linha e coluna: Utilize display: grid
Nada te impede de utilzar o grid caso queira tratar somente linha ou coluna (priorize sempre em simplificar seu código 😃), mas o conteúdo abordado será focado exclusivamente na utilização do display: grid
Conceitos Fundamentais
01 - Fundamentos
Todos nodes filhos de um elemento com display:grid, sempre irão ser items de grid explicitamente
A declaração direta é chamada de implicit grid
Os números em relação ao grid não significa a coluna em si, mas sim o começo e aonde termina
<sectionclass="container"><!-- Elemento com grid aplicado --><article></article><!-- Item do grid --><article></article><!-- Item do grid --><article></article><!-- Item do grid --></section>
.exemplo {
display:grid;
}
02 - Implicito X Explicito
O modo explicito acontece quando há declaração EXATAMENTE do que o elemento precisa distribuir para os itens do grid.
O modo implicito acontece quando o navegador precisa alocar um item extra, e já foi ocupado toda a definição anterior. Exemplo: 5 itens com somente duas colunas, uma linha extra será criada. Então, a implicidade ocorre no momento da criação da segunda linha
(grid-row) para encaixar os elementos.
O tamanho gerado por padrão da implicidade é 1fr, porém pode ser manipulada com auto-rows/columns.
O auto flow controla onde a implicidade anterior ocorre, determina se o elemento extra irá se ajuntar como uma nova coluna ou linha do grid.
Por padrão, ele sempre irá adicionar uma nova linha para ocorrer a implicidade.
.exemplo {
display:grid;
grid-auto-flow: column;
grid-auto-columns:1fr;
grid-template-rows:1fr;
/* Será somente uma linha, os novos itens irão surgir como uma nova coluna */
}
04 - Definição de tamanhos
Não utilize a definição do grid com %,
Porque a porcentagem é relacionado ao algo que tenha como pai algo pré-definido
container pai como width: 100vw, no node filho pode-se usar 50% (50vw)
Opte pelas medidas de frações, pois elas realizam o calculo automatico para nós
A definição do grid-auto-rows por padrão é 1fr ao declarar o display: grid
A propriedade auto ocupa somente o espaço restante referente aos calculos dado.
A propriedade gap serve para criar espaçamento entre os itens da coluna.
Diferente do span, podemos dizer exatamente onde queremos que nosso item comece no grid.
Para a coluna usamos grid-column e para as linhas usamos grid-row.
Quando colocamos um valor positivo
Coluna: começa da esquerda para direita
Linha: começa de cima para baixo
Quando há um valor negativo
Coluna: começa da direta para a esquerda.
Linha: começa de baixo para cima.
IMPORTANTE: Essa definição só funciona em relação a quantidade do que foi declarado explicitamente, tendo em consideração o exemplo abaixo imagine que um item extra surge e com isso uma nova linha é gerada, a declaração -1 só irá contar a partir da terceira para trás e não é inclusa a última gerada automaticamente pelo navegador.
.exemplo {
display: grid;
grid-template-columns:repeat(4,1fr);
grid-template-rows:repeat(3,1fr);
}
.exemplo-item {
/* grid-column-start: 1; grid-column-end: 3; utilize o shorthand: inicio / fim */grid-column:1/4; /* Ocupara todo o espaço disponível *//* grid-column: 1 / -1 Começa do primeiro item até o último, -2 = penúltimo e assim por diante */
}
08 - Propriedades reservadas
auto-fill: irá criar colunas implicitas para encaixar o item desejado caso o mesmo esteja como último elemento
auto-fit: os itens irão se ajeitar de acordo com as colunas pré definidas e não irá criar nenhuma coluna extra para o tal feito.
fit-content: aqui você pode definir o máximo que o item poderá alcançar em questão de tamanho, não é comumente usada, porém ela é semelhante ao minmax, porém o mínimo será o valor de 0
minmax: como a própria declaração já deixa explicita, você iŕa definir o valor mínimo logo em seguida o máximo que ela pode alcançar.
Como essas propriedades são tãooooo poderosas, são capazes de deixar nosso layout responsivo sem ao menos declarar alguma media query para conseguir tal feito.