Posicionando foguetes


Layouts

Alguns dos métodos usados para posicionar os elementos na tela.
Elementos:
  • Tables
  • Floats e clear
  • Frameworks e Grid Systems
  • Flexbox
  • Grid

Voltar ao índice


Position

Controla onde, na página, o elemento irá ficar, alterando o fluxo normal dos elementos.
Propriedade e valores.

Name: position

Value: static|relative|absolute|fixed

Lembrando que o fluxo normal dos elementos é ficar um abaixo do outro, a não ser no caso de elementos inline, que ficam um ao lado do outro.

Voltar ao índice


Static

static
Fluxo padrão

Por padrão os elementos sãostatic.

Isso significa que os elementos irão seguir o fluxo normal do HTML.

Voltar ao índice


Relative

relative
Introdução

O position indica onde o elemento vai ser posicionado na página. Ao usar o position podemos adicionar outras propriedades como top, right, bottom, left e z-index, que vão determinar o posicionamento final do elemento.

Quando o position é relative os elementos são deslocados do seu posicionamento normal, mas sem afetar o posicionamento de outros elementos da página.

Exemplo:

A caixa vermelha vai receber a propriedade relative e poderá ter o seu posicionamento alterado via top, right, bottom, left e z-index.

HTML

<div class="lessonbox lessonbox1"></div>
<div class="lessonbox lessonbox2"></div>
<div class="lessonbox lessonbox3"></div>

CSS

.lessonbox {
width: 50px;
height: 50px;
margin-bottom: 8px;
}

.lessonbox1 {
background-color: red;
position: relative;
left: 100px;
top: 80px;
}

.lessonbox2 {
background-color: green;
}

.lessonbox3 {
background-color: blue;
}

Resultado

Voltar ao índice


Absolute

absolute
Descrição:

Quando o position é absolute o elemento é deslocado saindo do fluxo normal.

O elemento de position absolute é posicionado em relação ao seu parent element mais próximo. Se esse elemento "pai" não existir, ele será posicionando em relação ao bloco contendo a raiz do elemento.

Exemplo:

No valor absolute, as caixas verde e azul sobem, pois é como se a box da vermelha tivesse deixado de existir e ocupar seu espaço.

Agora, os valores de length em relação às propriedades top right bottom left serão contados como distância da mesma, e não como proximidade(ou aproximação).

Foi necessário o seu parent element ter a position relative para que a caixa não ficasse perdida pela página.

HTML

<div class="foguetesgrid">
  <div class="lessonbox lessonbox4"></div>
  <div class="lessonbox lessonbox2"></div>
  <div class="lessonbox lessonbox3"></div>
</div>

CSS

.foguetesgrid {
position: relative;
}

.lessonbox {
width: 50px;
height: 50px;
margin-bottom: 8px;
}

.lessonbox4 {
background-color: red;
position: absolute;
left: 1170px;
}

.lessonbox2 {
background-color: green;
}

.lessonbox3 {
background-color: blue;
}

Resultado

Voltar ao índice


Fixed

fixed
Descrição:

Quando aplicado o position fixed é como se criasse um elemento flutuante que fica fixo na página, independente do scrolling feito.

Exemplo:

Nesse caso, a caixa vermelha não ficou presa à caixa de resultado.

HTML

<div class="lessonbox lessonbox7"></div>
<div class="lessonbox lessonbox2"></div>
<div class="lessonbox lessonbox3"></div>

CSS

.lessonbox {
width: 50px;
height: 50px;
margin-bottom: 8px;
}

.lessonbox7 {
background-color: red;
position: fixed;
}

.lessonbox2 {
background-color: green;
}

.lessonbox3 {
background-color: blue;
}

Resultado

Voltar ao índice


Element Stacking

z-index
O que é?

É o empilhamento de elementos. Podemos usar o z-index para determinar a ordem da posição do elemento.

Quanto maior o z-index, mais "acima" vai aparecer o elemento.

Exemplo:

Foi preciso colocar a gridbox com position relative para as caixas absolute não se perderem pela página.

O z-index define qual div vai ficar por cima da outra.

HTML

<div class="foguetesgrid">
  <div class="lessonbox lessonbox8"></div>
  <div class="lessonbox lessonbox5"></div>
  <div class="lessonbox lessonbox6"></div>
</div>

CSS

.foguetesgrid {
position: relative;
}

.lessonbox {
width: 50px;
height: 50px;
margin-bottom: 8px;
}

.lessonbox8 {
background-color: red;
position: absolute;
left: 10px;
top: 35px;
z-index: 3;
}

.lessonbox5 {
background-color: green;
position: absolute;
left: 15px;
top: 40px;
z-index: 2;
}

.lessonbox6 {
background-color: blue;
position: absolute;
left: 20px;
top: 45px;
z-index: 1;
}

Resultado

Voltar ao índice


Flex

Como posicionar elementos usando o CSS Flexbox.
Flexbox.

Nos permite posicionar os elementos dentro da caixa.

Controle em uma dimensão (horizontal ou vertical).

Alinhamento, direcionamento, ordenar e tamanhos.

div.parent {
  display: flex;
}
Flex-direction.

Qual a direção do flex: horizontal ou vertical:

  row | column

Alinhamento.

justify-content

align-items

Exemplo:

HTML

<div class="flexboxcontainer">
  <div class="flexlessonbox flexlessonblue"></div>
  <div class="flexlessonbox flexlessonred"></div>
  <div class="flexlessonbox flexlessongreen"></div>
</div>

CSS

.flexlessoncontainer {
display: flex;
justify-content: space-between;
align-items: center;
height: 300px;
}
.flexlessonbox {
width: 50px;
height: 50px;
}
.flexlessonblue {
background-color: blue;
}
.flexlessonred {
background-color: red;
}
.flexlessongreen {
background-color: green;
}

Resultado

Voltar ao índice


Grid

Como posicionar elementos usando o CSS Grid.
Características.
  • Posicionamento dos elementos dentro da caixa;
  • Posicionamento horizontal e vertical ao mesmo tempo;
  • Pode ser flexível ou fixo;
  • Cria espaços para os elementos filhos habitarem.
Exemplo:

Aplicado no Resultado e nas próprias tabelas.

HTML

<div class="gridlessonbody">
  <h3 class="gridlessontitle">Resultado</h3>
  <header class="gridlessonheader">Topo</header>
  <main class="gridlessonmain">Conteúdo</main>
  <aside class="gridlessonaside">Infos adicionais</aside>
  <footer class="gridlessonfooter">Rodapé</footer>
</div>

CSS

.gridlessonbody {
height: 1fr;
display: grid;
grid-template-areas: "title title"
"header header"
"main aside"
"footer footer"
;
grid-template-rows: 30px 50px 1fr 35px;
grid-template-columns: 1fr 80px;
}
.gridlessontitle {
grid-area: title;
}
.gridlessonheader {
grid-area: header;
background-color: green;
}
.gridlessonmain {
grid-area: main;
background-color: red;
}
.gridlessonaside {
grid-area: aside;
background-color: blue;
}
.gridlessonfooter {
grid-area: footer;
background-color: gray;
}

Resultado

Topo
Conteúdo
Rodapé

Voltar ao índice


Grid ou Flex

Podemos usar o Display Flex e Display Grid ao mesmo tempo.
Exemplo:

Dentro da gridlessonheader2 foram adicionados duas novas div e seu css recebeu o valor flex, além de outros.

HTML

<div class="gridlessonbody">
  <h3 class="gridlessontitle">Resultado</h3>
  <header class="gridlessonheader2">Topo</header>
    <div class="gridlessondiv">logo</div>
    <div class="gridlessondiv">menu</div>
  <main class="gridlessonmain">Conteúdo</main>
  <aside class="gridlessonaside">Infos adicionais</aside>
  <footer class="gridlessonfooter">Rodapé</footer>
</div>

CSS

.gridlessonbody {
height: 1fr;
display: grid;
grid-template-areas: "title title"
"header header"
"main aside"
"footer footer"
;
grid-template-rows: 30px 50px 1fr 35px;
grid-template-columns: 1fr 80px;
}
.gridlessontitle {
grid-area: title;
}
.gridlessonheader2 {
grid-area: header;
background-color: green;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 5px;
}
.gridlessondiv {
background-color: unset;
}
.gridlessonmain {
grid-area: main;
background-color: red;
}
.gridlessonaside {
grid-area: aside;
background-color: blue;
}
.gridlessonfooter {
grid-area: footer;
background-color: gray;
}

Resultado

logo
menu
Conteúdo
Rodapé

Voltar ao índice