Facebook:
Este trabalho do USPCodeLab está licenciado com uma Licença Creative Commons - Atribuição 4.0 Internacional
O USPCodeLab é um grupo de extensão que tem como objetivo estimular a inovação tecnológica na USP
Posicionamento dos elementos do HTML
Controlado no CSS
Propriedade display
CSS Flow Layout
CSS Flexible Box Layout
CSS Grid Layout
Caixas no fluxo normal pertencem a um contexto de formatação: block ou inline
div, ul, ol, li, p, table | elementos block level |
span, strong, em, button, img | elementos inline level |
Categorização histórica
Deprecada com HTML5
<div>O parágrafo a seguir é um <p>elemento block-level;</p> seu background foi colorido para mostrar o começo e o fim do elemento no layout.</div>
<div>O parágrafo a seguir é um <span>elemento inline-level;</span> seu background foi colorido para mostrar o começo e o fim do elemento no layout.</div>
p, span { background-color: #ee3; }
Define como um elemento é posicionado no documento!
As propriedades top, right, bottom e left determinam a localização final dos elementos posicionados
Tipos de position:
Posiciona o elemento do lado esquerdo ou direito do container
O elemento é removido do fluxo normal da página, mas continua fazendo parte do fluxo!
float: none;
float: left;
float: right;
Dois principais conceitos
contêiner
item
abrir para acompanhar
nada a ver com Docker
Como crio um contêiner de Flexbox?
.container {
display: flex;
}
apenas um seletor qualquer
contêiner
.container {
display: flex;
flex-direction: row;
}
.container {
display: flex;
flex-direction: column;
}
contêiner
eixo principal
eixo secundário
contêiner
.container {
display: flex;
flex-direction: row-reverse;
}
.container {
display: flex;
flex-direction: column-reverse;
}
contêiner
eixo principal
eixo secundário
contêiner
item
.container {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
contêiner
item
.container {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
}
(comportamento padrão)
.container {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
}
.container {
display: flex;
flex-flow: row nowrap;
}
flow = direction + wrap
A disposição dos itens dentro de um contêiner pode ser feita nos seus dois eixos
justify-content dispõe no eixo principal (main)
align-items dispõe no eixo secundário (cross)
contêiner
.container {
display: flex;
flex-flow: row nowrap;
justify-content: flex-start;
}
contêiner
.container {
display: flex;
flex-flow: row nowrap;
justify-content: flex-end;
}
contêiner
.container {
display: flex;
flex-flow: row nowrap;
justify-content: center;
}
contêiner
.container {
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
}
contêiner
.container {
display: flex;
flex-flow: row nowrap;
justify-content: space-around;
}
contêiner
.container {
display: flex;
flex-flow: row nowrap;
justify-content: space-evenly;
}
A disposição dos itens dentro de um contêiner pode ser feita nos seus dois eixos
justify-content dispõe no eixo principal (main)
align-items dispõe no eixo secundário (cross)
contêiner
.container {
display: flex;
flex-flow: row nowrap;
justify-content: flex-start;
align-items: flex-start;
}
contêiner
.container {
display: flex;
flex-flow: row nowrap;
justify-content: flex-start;
align-items: flex-end;
}
contêiner
.container {
display: flex;
flex-flow: row nowrap;
justify-content: flex-start;
align-items: center;
}
contêiner
.container {
display: flex;
flex-flow: row nowrap;
justify-content: flex-start;
align-items: stretch;
}
contêiner
.container {
display: flex;
flex-flow: row nowrap;
justify-content: flex-start;
align-items: baseline;
}
text
text
text
text
contêiner
.um-item {
align-self: flex-end;
}
Também podemos alterar a disposição de um item específico com align-self
Dentro da sua página crie um header que deve armazenar os links internos para as seções do site organizado dentro de um flexbox.
Ele deve ficar "grudado" ao topo da página, ou seja, ao usar o scroll da página ele deve continuar no topo da página.
Desafio extra para praticar o flexbox: