Layout CSS com Flexbox e Grid

Aprenda como os navegadores organizam caixas em uma página e como controlar essa organização. Comece pelo fluxo normal, pela propriedade display e pelos elementos flutuantes. Depois, posicione elementos com posicionamento relativo, absoluto, fixo e aderente e controle camadas sobrepostas com z-index. Crie linhas e colunas de itens com flexbox e layouts bidimensionais com CSS Grid, incluindo dimensionamento, espaçamento e alinhamento. Por fim, escolha o método adequado para cada parte de uma página, crie layouts comuns de páginas e componentes e identifique e corrija problemas de layout com as ferramentas do desenvolvedor do navegador.

BásicoAula 5 de 8 do curso Curso de Noções básicas de desenvolvimento web

O que você vai aprender

  1. Descreva como um navegador posiciona as caixas quando nenhum CSS de layout é aplicado, altere esse comportamento com a propriedade display e use elementos flutuantes para fazer o texto contornar um elemento.
    • Acompanhe o fluxo normal: caixas de bloco e caixas em linha
      Preveja onde as caixas de bloco e em linha aparecem no fluxo normal, como suas dimensões se comportam e quando as margens verticais colapsam.
    • Altere o layout com a propriedade display
      Use display para alterar como um elemento participa do layout de seu elemento pai e como seus próprios filhos são organizados, e oculte elementos corretamente.
    • Faça o texto contornar um elemento com float
      Faça uma imagem ou citação flutuar para que o texto a contorne, posicione conteúdo abaixo dos elementos flutuantes com clear e faça um elemento pai conter seus elementos flutuantes.
  2. Desloque elementos de sua posição normal, fixe-os a um contêiner ou à área de visualização, mantenha-os visíveis durante a rolagem e controle qual elemento sobreposto aparece na frente.
    • Desloque elementos com posicionamento relativo e absoluto
      Use posicionamento relativo e absoluto para deslocar elementos e posicionar sobreposições, como emblemas, exatamente dentro de um contêiner escolhido.
    • Mantenha elementos visíveis com posicionamento fixo e aderente
      Fixe elementos à área de visualização com posicionamento fixo, faça cabeçalhos e títulos aderirem durante a rolagem com posicionamento aderente e evite os problemas causados por cada um.
    • Controle quais elementos aparecem na frente com z-index
      Preveja a ordem de empilhamento de elementos sobrepostos, use z-index dentro de contextos de empilhamento e corrija os problemas clássicos de “z-index não funciona”.
  3. Organize uma linha ou coluna de itens com flexbox: defina sua direção e quebra de linha, controle como os itens crescem e encolhem e alinhe-os e espace-os.
    • Configure um contêiner flexível e seus eixos
      Transforme um elemento em um contêiner flexível, explique os eixos principal e transversal e controle a direção, a quebra de linha e a ordem visual sem prejudicar a ordem de leitura.
    • Dimensione itens flexíveis com grow, shrink e basis
      Calcule como o flexbox distribui o espaço livre e o transbordamento entre os itens com flex-basis, flex-grow e flex-shrink, e use a propriedade abreviada flex com segurança.
    • Alinhe e espace itens flexíveis
      Distribua espaço ao longo do eixo principal, alinhe itens no eixo transversal, afaste itens com margens automáticas e espace-os com gap.
  4. Defina linhas e colunas com CSS Grid, posicione itens em linhas e áreas nomeadas, deixe a grade posicionar itens automaticamente e alinhe itens e trilhas.
    • Defina trilhas de grade com fr, repeat e minmax
      Crie as linhas e colunas de uma grade, calcule o tamanho das trilhas com a unidade fr e use repeat(), minmax() e gap.
    • Posicione itens com números de linha, extensões e áreas nomeadas
      Posicione itens de grade com números de linha, span e áreas nomeadas do modelo, e mantenha a ordem visual e a ordem de leitura em concordância.
    • Deixe a grade posicionar os itens automaticamente
      Use o posicionamento automático e a grade implícita para posicionar qualquer quantidade de itens e crie grades de cartões que ajustam o número de colunas com auto-fill e auto-fit.
    • Alinhe itens e trilhas em uma grade
      Alinhe cada item dentro de sua área de grade, alinhe todo o conjunto de trilhas dentro do contêiner e centralize conteúdo com as propriedades abreviadas place-.
  5. Escolha o método de layout adequado para cada parte de uma página, crie layouts comuns de páginas e componentes e identifique e corrija problemas de layout.
    • Escolha o método de layout adequado
      Escolha entre fluxo normal, flexbox, grade, posicionamento, elementos flutuantes e múltiplas colunas para um determinado layout e combine-os em uma página.
    • Crie layouts para a página inteira
      Crie uma coluna de conteúdo legível, uma página com cabeçalho, barra lateral, conteúdo principal e rodapé, um rodapé que fica na parte inferior e uma barra lateral aderente.
    • Crie layouts comuns de componentes
      Organize partes recorrentes da interface: conteúdo centralizado, barras de navegação, blocos com imagem ao lado de texto, grades de cartões com partes alinhadas, sobreposições, formulários e grupos de entrada.
    • Identifique e corrija problemas de layout
      Use as ferramentas do desenvolvedor do navegador e uma lista de causas comuns para descobrir por que um layout falha ou uma propriedade não tem efeito, e teste layouts com conteúdo real.

Guia de estudo de Layout CSS

5 capítulos

1

Como as caixas fluem

Os navegadores organizam páginas legíveis antes que qualquer regra especial de layout seja adicionada. As caixas de bloco e em linha explicam essa organização inicial, incluindo por que um parágrafo estreito ainda ocupa sua própria linha e por que algumas margens se combinam. Aprenda como display altera o exterior e o interior de uma caixa e depois use elementos flutuantes para a tarefa específica de fazer o texto contornar uma imagem. Essas regras ajudam você a prever o que mudará quando introduzir flexbox ou grade.

1.1 Como caixas de bloco e em linha compartilham uma página

Uma página já tem um layout antes de você adicionar flexbox ou grade. O fluxo normal posiciona caixas na ordem do HTML. Em texto horizontal em inglês, os blocos são empilhados para baixo e o conteúdo em linha segue da esquerda para a direita, passando para outra linha quando uma linha fica cheia.

Blocos ocupam uma linha

Parágrafos, títulos, divisões e seções são caixas de bloco por padrão. Um bloco com width: auto preenche a largura disponível de seu contêiner e cresce em altura conforme seu conteúdo. Definir sua largura não faz o próximo bloco ocupar a mesma linha.

<p>Read the <a href="/guide">setup guide</a> first.</p>
<p>Then install it.</p>

Os parágrafos começam em linhas separadas. O link é uma caixa em linha dentro do primeiro parágrafo. Mesmo que o primeiro parágrafo tenha apenas 300px de largura, o segundo ainda começa abaixo dele.

Caixas em linha acompanham o texto

Um <span>, <a>, <strong> ou <em> normalmente ocupa apenas a largura de seu texto. Uma caixa em linha não substituída ignora width e height. Portanto, adicionar a { width: 200px; } não faz o link ter 200px de largura.

Preenchimentos internos, bordas e margens horizontais afastam o texto adjacente. Preenchimentos internos e bordas verticais são desenhados, mas não afastam as linhas ao redor; um fundo grande pode se sobrepor à linha acima ou abaixo. Margens verticais não têm efeito. Uma imagem é um elemento substituído: ela é em linha por padrão, mas width e height se aplicam a ela.

Margens verticais podem se combinar

No fluxo normal, margens verticais de caixas de bloco que se tocam podem colapsar em um único espaço. Um parágrafo com margin-bottom: 24px seguido de um título com margin-top: 32px deixa 32px entre eles. A maior margem positiva prevalece; o espaço não é de 56px. Com uma margem positiva de 24px e uma margem de −10px, o resultado é 14px. Margens horizontais permanecem separadas.

A margem superior de um primeiro filho também pode colapsar com a margem superior de seu elemento pai quando nenhuma borda, preenchimento interno ou conteúdo em linha as separa. Uma margem superior de 20px em um título pode mover todo um cabeçalho sem preenchimento interno para baixo, sem deixar espaço dentro dele. Use preenchimento interno superior para criar espaço interno, adicione uma borda ou atribua display: flow-root ao elemento pai. A margem inferior de um último filho também pode colapsar com a margem inferior de seu elemento pai.

Itens flexíveis e de grade não colapsam margens entre si. Se você mudar um elemento pai do fluxo normal para flexbox, as mesmas duas margens positivas podem passar a ser somadas. Caixas flutuantes e com posicionamento absoluto também mantêm suas margens separadas.

As direções seguem o modo de escrita

A direção de bloco indica para onde vão os blocos sucessivos; a direção em linha indica para onde o texto segue. Árabe e hebraico também usam linhas horizontais, mas sua direção em linha é da direita para a esquerda. Propriedades lógicas seguem essas direções: margin-inline-start: 16px cria uma margem esquerda em inglês e uma margem direita em árabe. padding-block define o preenchimento interno ao longo da direção de bloco.

Principais conclusões

  • Blocos começam em novas linhas mesmo quando recebem uma largura estreita.
  • Caixas em linha não substituídas ignoram width e height; imagens são uma exceção.
  • Margens verticais de blocos que se tocam podem colapsar; margens horizontais não.
  • Propriedades lógicas seguem as direções de bloco e em linha.
  • Preenchimento interno ou flow-root pode impedir que a margem de um filho colapse com a do elemento pai.

1.2 O que display altera

A propriedade display controla a relação de uma caixa com seu elemento pai e a organização de seus filhos. São escolhas separadas. Um contêiner flexível pode ocupar uma linha inteira enquanto organiza seus próprios filhos lado a lado.

Leia display de fora para dentro

O tipo de exibição externo é de bloco ou em linha. O tipo de exibição interno descreve o layout dentro da caixa, como fluxo, flex ou grade.

ValorExteriorInterior
blockBlocoFluxo normal
inline-blockEm linhaRegião de fluxo separada
flexBlocoLayout flexível
inline-flexEm linhaLayout flexível
gridBlocoLayout de grade
inline-gridEm linhaLayout de grade

A sintaxe moderna de duas palavras-chave torna a distinção visível: display: inline flex significa o mesmo que inline-flex. display: block flow-root significa o mesmo que flow-root. Um único valor como grid fornece por padrão um tipo externo de bloco.

Faça uma caixa em linha aceitar um tamanho
nav a {
  display: inline-block;
  padding: 12px 16px;
}

Cada link ainda fica em uma linha de texto, mas agora aceita largura, altura e margens verticais. Seu preenchimento interno vertical cria espaço no layout da linha em vez de apenas ser desenhado sobre as linhas próximas. Isso dá ao link um alvo de clique maior.

Espaços em branco entre elementos de bloco em linha no HTML aparecem como um pequeno espaço entre as caixas. Se você precisa de uma linha controlada com espaçamento exato, o flexbox oferece isso diretamente.

Alterar display não muda o significado do elemento HTML. Uma divisão estilizada em linha continua sendo um contêiner genérico. Escolha uma lista, um link ou um botão de acordo com sua finalidade e depois estilize sua caixa.

Oculte uma caixa com o efeito adequado
RegraEfeito no layout
display: noneO elemento e seus descendentes não geram caixas.
visibility: hiddenA caixa mantém seu espaço no layout enquanto está oculta.

Uma mensagem de erro oculta com display: none não cria espaço. Exibi-la empurra o conteúdo seguinte para baixo. Usar visibility: hidden reserva o espaço, então revelar a mensagem não precisa mover nada. display: none também impede o foco do teclado e remove o conteúdo oculto da saída dos leitores de tela. Uma classe de texto visualmente oculto tem outra finalidade: manter o texto disponível para leitores de tela enquanto o oculta visualmente.

Filhos e regiões independentes

Com ul { display: grid; }, os itens de lista se tornam itens de grade. Os links dentro desses itens de lista permanecem no layout de seus próprios elementos pais. Para organizar esses links, dê ao item de lista seu próprio layout ou use uma subgrade quando forem necessárias trilhas compartilhadas.

display: contents remove a própria caixa do elemento envolvente para que seus filhos participem do layout ao redor. O comportamento de acessibilidade do navegador também pode remover a função do elemento envolvente, então evite isso em controles, listas e tabelas com significado.

display: flow-root cria um contexto de formatação de bloco, uma região de fluxo independente. Ele contém filhos flutuantes e impede que as margens do elemento pai colapsem com as margens dos filhos. Ele produz esses efeitos sem adicionar recorte ou barras de rolagem.

Principais conclusões

  • Display tem um tipo externo e um tipo interno.
  • Flex e grade afetam os filhos diretos.
  • inline-block mantém o posicionamento em linha enquanto aceita dimensões de caixa.
  • display: none remove o espaço no layout; visibility: hidden o preserva.
  • flow-root contém elementos flutuantes e separa as margens de elementos pais e filhos.
  • Use display: contents com cuidado, pois o comportamento do navegador pode remover a função acessível do elemento envolvente.

1.3 Texto que contorna elementos flutuantes

Um retrato em um artigo frequentemente precisa ter texto ao lado por algumas linhas e depois texto em largura total abaixo dele. Um elemento flutuante cria essa forma de fluxo do texto. Sua função é diferente da de uma barra lateral que permanece em uma coluna separada.

Coloque uma imagem ao lado do texto em fluxo
img.portrait {
  float: left;
  width: 160px;
  margin: 0 16px 8px 0;
}

Coloque a imagem antes dos parágrafos que devem contorná-la. A imagem se move para a borda esquerda de seu contêiner. O texto seguinte usa o espaço à direita, mantendo uma distância horizontal de 16px e de 8px abaixo de sua borda inferior. Quando o texto passa pela imagem, as linhas voltam a ocupar toda a largura do contêiner. Use float: right para a borda oposta e float: none para remover a flutuação.

Um elemento flutuante é removido do fluxo normal, mas o conteúdo em linha próximo ainda o contorna. As próprias caixas de bloco seguintes ignoram o elemento flutuante: seus fundos e bordas podem se estender atrás dele. Ver o fundo de um parágrafo sob a imagem não significa que seu texto deixou de contorná-la.

Um elemento flutuante se torna uma caixa de nível de bloco. Portanto, um <span> flutuante pode aceitar largura e altura. Sem largura definida, uma caixa de texto flutuante encolhe para se ajustar ao conteúdo; uma imagem tem suas próprias dimensões.

Comece a próxima seção abaixo da imagem

Suponha que o texto seja mais curto que o retrato e que um novo título de seção comece ao lado dele. A propriedade clear controla essa relação:

.next-section {
  clear: both;
}

O título se move para baixo dos elementos flutuantes anteriores de qualquer lado. clear: left libera apenas os flutuantes à esquerda; clear: right libera apenas os da direita. Aplicar clear a um título posterior não transforma, por si só, a imagem anterior novamente em um bloco comum.

Faça o elemento pai envolver seus elementos flutuantes

Um elemento pai com apenas filhos flutuantes não recebe deles altura no fluxo normal. Seu fundo e sua borda podem parecer colapsados, e o conteúdo seguinte pode subir para ficar ao lado dos elementos flutuantes. Faça o elemento pai contê-los:

.profile {
  display: flow-root;
}

A altura do elemento pai agora se estende para envolver a imagem flutuante. Isso é diferente de clear: flow-root altera a região de fluxo do elemento pai, enquanto clear move um elemento seguinte para baixo dos elementos flutuantes.

Folhas de estilo antigas frequentemente contêm uma técnica clearfix: um pseudoelemento ::after com content: "", display: block e clear: both. Você também pode encontrar overflow: auto usado para conter elementos flutuantes. Isso pode adicionar rolagem quando o conteúdo é grande demais; flow-root expressa diretamente a tarefa de contenção.

Reconheça layouts de colunas antigos

Antes de flexbox e grade, as colunas de página frequentemente eram flutuantes, com larguras percentuais e regras de clear. Mantenha essas regras com conhecimento de elementos flutuantes, mas escolha flexbox ou grade para novas colunas que precisam de dimensionamento e alinhamento.

Um filho direto de um contêiner flexível ou de grade segue esse layout, então float não tem efeito sobre esse item. Se uma imagem flutuante deixar de fazer o texto contorná-la depois que você adicionar display: flex a seu elemento pai, inspecione primeiro o layout do pai.

Principais conclusões

  • Um elemento flutuante permite que o conteúdo em linha seguinte o contorne.
  • clear move uma caixa posterior para baixo de elementos flutuantes anteriores.
  • flow-root faz um elemento pai conter seus filhos flutuantes.
  • Elementos flutuantes não têm efeito sobre itens flexíveis ou de grade.
2

Posicionamento e camadas sobrepostas

O posicionamento controla deslocamentos, sobreposições e elementos que permanecem visíveis durante a rolagem. O essencial é saber qual espaço uma caixa mantém e qual ancestral fornece sua referência. Comece com um emblema dentro de um cartão, avance para controles fixos e títulos aderentes e depois examine camadas sobrepostas. Os contextos de empilhamento explicam por que um menu suspenso pode permanecer oculto mesmo quando seu próprio z-index é muito alto e mostram qual ancestral realmente precisa ser alterado.

2.1 Deslocamentos e a caixa usada como referência

O posicionamento permite que uma caixa se sobreponha a outra ou se afaste de sua posição normal. Antes de definir um deslocamento, decida se a caixa deve manter seu espaço original e qual ancestral deve servir como referência.

Estático, relativo e absoluto
PosicionamentoEspaço no fluxo normalReferência do deslocamento
staticMantidoDeslocamentos não têm efeito
relativeMantidoPosição original da caixa
absoluteRemovidoSeu bloco de referência

Com position: relative; top: 10px; left: 20px, uma caixa é desenhada 10px abaixo e 20px à direita de sua posição original. Seus vizinhos permanecem onde estavam. O espaço original continua reservado, então um deslocamento grande pode fazer a caixa se sobrepor aos vizinhos.

Um elemento pai com posicionamento relativo não precisa de deslocamentos para fornecer uma referência a um filho com posicionamento absoluto. Esse é um uso comum do posicionamento relativo.

Prenda um emblema a um cartão
.card {
  position: relative;
}
.badge {
  position: absolute;
  top: 8px;
  right: 8px;
}

O emblema está fora do fluxo normal, então o cartão não reserva espaço para ele. Suas bordas superior e direita ficam 8px para dentro das bordas do preenchimento interno do cartão. Deixe espaço suficiente no conteúdo do cartão para que um título longo não passe por baixo do emblema.

O bloco de referência de uma caixa com posicionamento absoluto geralmente é a caixa de preenchimento interno de seu ancestral posicionado mais próximo. Um elemento posicionado tem qualquer valor de position exceto static. Se o cartão permanecer estático, o emblema procura mais acima na cadeia de ancestrais. Sem um ancestral que sirva de referência, ele usa o bloco de referência inicial: um retângulo do tamanho da área de visualização no topo do documento que rola com a página. Um ancestral com transform, filter ou perspective diferente de none também pode estabelecer essa referência.

Estique ou centralize uma sobreposição

Uma caixa com posicionamento absoluto, tamanho automático e deslocamentos que não a esticam encolhe para se ajustar ao conteúdo. Definir os deslocamentos esquerdo e direito com largura automática faz com que ela preencha o espaço entre eles; o par superior e inferior funciona de maneira semelhante para uma altura automática.

.overlay {
  position: absolute;
  inset: 0;
}

inset define os deslocamentos superior, direito, inferior e esquerdo em conjunto. Com dimensões automáticas e sem margens, essa sobreposição preenche o bloco de referência. Uma largura ou altura definida altera o dimensionamento, então remova esses limites quando a camada tiver que cobrir toda a caixa.

Para um emblema centralizado de tamanho desconhecido, use top: 50%; left: 50%; transform: translate(-50%, -50%). Os deslocamentos movem seu canto superior esquerdo para o centro do bloco de referência. A translação o move de volta pela metade de sua própria largura e altura. Com largura e altura conhecidas, inset: 0; margin: auto é outro método de centralização.

Verifique a referência das porcentagens

Um elemento pai com dimensionamento pela caixa de conteúdo, width: 400px e preenchimento interno horizontal de 20px tem uma caixa de preenchimento interno de 440px. Um filho com posicionamento absoluto e width: 50% tem, portanto, uma largura de conteúdo de 220px. Medir apenas a caixa de conteúdo de 400px do elemento pai leva ao resultado errado.

Use posicionamento absoluto para um emblema, uma dica flutuante ou uma sobreposição. Colunas de página precisam de caixas que respondam ao tamanho umas das outras; flexbox, grade e fluxo normal fornecem essa relação.

Principais conclusões

  • O posicionamento relativo mantém o espaço original; o absoluto o remove.
  • Uma caixa com posicionamento absoluto geralmente mede os deslocamentos a partir da caixa de preenchimento interno de seu ancestral posicionado mais próximo.
  • inset: 0 estica uma sobreposição com posicionamento absoluto e tamanho automático até preencher seu bloco de referência.
  • Porcentagens de deslocamento e de translação usam caixas de referência diferentes.
  • Use fluxo normal, flexbox ou grade para a estrutura principal da página.

2.2 Elementos que permanecem visíveis durante a rolagem

Um controle para voltar ao topo e um cabeçalho de tabela precisam permanecer visíveis, mas têm relações diferentes com a página. O posicionamento fixo prende um controle a uma janela de referência. O posicionamento aderente mantém uma caixa no fluxo e limita seu movimento à sua seção.

Fixe um controle à área de visualização
.back-to-top {
  position: fixed;
  right: 16px;
  bottom: 16px;
}

O botão permanece no canto inferior direito da janela enquanto o documento rola. Ele não ocupa espaço no fluxo normal. Um cabeçalho fixo também não reserva espaço e pode cobrir o primeiro parágrafo.

Para um cabeçalho fixo de 64px, body { padding-top: 64px; } deixa espaço para o conteúdo inicial. Defina também html { scroll-padding-top: 64px; } para que links de seção não posicionem seus títulos de destino sob o cabeçalho. Dê um fundo ao cabeçalho para que o texto que rola atrás dele não fique visível através dele.

Um transform, filter ou perspective diferente de none em um ancestral pode fazer desse ancestral o bloco de referência do elemento fixo. O elemento então permanece dentro desse ancestral e pode rolar junto com ele até sair da tela. Inspecione os ancestrais quando um controle fixo se mover inesperadamente com a página.

Faça um título aderir dentro de uma seção
thead th {
  position: sticky;
  top: 0;
  background: white;
}

Um título aderente ocupa primeiro seu lugar normal. Quando a rolagem o levaria acima do limite top: 0, ele permanece ali. Ele não pode ultrapassar seu bloco de referência: o fim de sua seção acaba empurrando-o para fora da área visível. Isso é útil para tabelas longas e navegação por seções.

ComportamentoFixoAderente
Espaço no fluxo normalRemovidoReservado
Começa em sua posição usualNãoSim
Para no fim de sua seçãoNãoSim

A área de visualização é a referência usual para posicionamento fixo. O posicionamento aderente usa o ancestral de rolagem relevante mais próximo; a página é a referência quando não há uma caixa de rolagem mais próxima.

Investigue uma caixa aderente que não adere

Verifique estas causas em ordem:

  1. Defina um deslocamento diferente de auto no eixo em que o elemento deve aderir, como top: 0 para rolagem vertical. A palavra-chave sticky sozinha não define um limite.
  2. Inspecione os ancestrais em busca de overflow: hidden, auto ou scroll. Eles podem se tornar a referência do elemento aderente mesmo quando outra caixa está realmente rolando.
  3. Compare a altura da caixa aderente com a de seu bloco de referência. Um elemento envolvente que tem apenas a altura do título não dá espaço para ele se mover.

Uma barra lateral aderente em uma grade também pode se esticar até a altura total da linha. align-self: start permite que ela mantenha a altura de seu conteúdo e deixa espaço para se mover.

Mantenha conteúdo e foco visíveis

Barras fixas e aderentes usam parte da tela visível. Com o texto ampliado para 200%, uma barra de navegação pode ficar muito mais alta. Teste a navegação por teclado além da rolagem. O critério 2.4.11 das WCAG 2.2, Foco não obscurecido (mínimo), exige que o conteúdo adicionado pelo autor não oculte totalmente um elemento com foco. Mantenha as barras baixas e forneça espaço de rolagem adequado ao redor dos destinos.

Principais conclusões

  • O posicionamento fixo remove a caixa do fluxo; o aderente preserva seu lugar.
  • O posicionamento aderente precisa de um deslocamento e de espaço para se mover dentro do bloco de referência.
  • O transbordamento em um ancestral pode alterar a referência do posicionamento aderente.
  • Reserve espaço para cabeçalhos fixos e verifique se o conteúdo com foco permanece visível.

2.3 Níveis e contextos de empilhamento

Quando caixas se sobrepõem, a ordem de empilhamento determina qual delas você vê na frente. Um z-index maior pode trazer uma caixa para a frente, mas apenas dentro do grupo em que esse valor é comparado.

Faça z-index ter efeito

z-index funciona em elementos posicionados e em itens flexíveis ou de grade. Um parágrafo estático no fluxo normal o ignora. Um item de grade estático pode usá-lo sem adicionar position: relative.

Sem níveis explícitos, caixas posicionadas são desenhadas acima de caixas comuns não posicionadas. Para caixas comparáveis no mesmo nível, a que aparece depois no HTML é desenhada por cima. Valores positivos, zero e negativos de z-index dão mais controle sobre essa ordem.

Um contexto é empilhado como uma unidade

Um contexto de empilhamento contém um grupo que o navegador empilha como um todo. O nível de um filho não pode elevar o grupo acima de um contexto irmão mais alto.

.site-header {
  position: relative;
  z-index: 1;
}
.menu {
  position: absolute;
  z-index: 9999;
}
main {
  position: relative;
  z-index: 2;
}

Aqui .menu está dentro de .site-header, enquanto main é seu irmão. Compare primeiro os grupos externos: o cabeçalho está no nível 1 e main no nível 2. Main é desenhado acima de todo o cabeçalho, incluindo o menu. Aumentar 9999 altera apenas a posição do menu dentro do cabeçalho.

Eleve o próprio cabeçalho, por exemplo para z-index: 3, ou remova o nível desnecessário de main. Escolha a mudança que corresponda à ordem desejada para toda a página.

Descubra o que cria o grupo

O elemento raiz cria um contexto de empilhamento. Outras causas comuns são:

  • Uma caixa relativa ou absoluta com z-index diferente de auto.
  • Um item flexível ou de grade com z-index diferente de auto.
  • Toda caixa fixa ou aderente.
  • opacity abaixo de 1, ou um transform ou filter diferente de none.
  • isolation: isolate.

Um elemento pai com opacity: 0.9 pode, portanto, prender um menu suspenso mesmo que ninguém tenha definido um nível nesse elemento. Percorra os ancestrais nas ferramentas do desenvolvedor quando um número maior não produzir diferença visível. Procure o primeiro par de grupos irmãos cuja ordem esteja errada.

Mantenha decorações dentro de um componente
.panel {
  position: relative;
  isolation: isolate;
}
.panel-decoration {
  position: absolute;
  inset: 0;
  z-index: -1;
}

isolation: isolate cria um contexto sem alterar a aparência do painel. O filho com nível negativo é desenhado atrás do texto do painel, mas acima do fundo dele. Sem o contexto local, ele pode ficar atrás do fundo do elemento pai e desaparecer.

Use uma pequena escala compartilhada para as camadas planejadas da página: por exemplo, 1 para cartões elevados, 10 para um cabeçalho aderente, 100 para menus suspensos e 1000 para uma caixa de diálogo modal. Propriedades personalizadas CSS, como --z-dropdown: 100, facilitam a manutenção dessas escolhas.

Principais conclusões

  • z-index se aplica a caixas posicionadas e a itens flexíveis ou de grade.
  • Um contexto de empilhamento é comparado aos contextos vizinhos como uma unidade.
  • O nível alto de um filho não pode escapar de um contexto ancestral mais baixo.
  • Opacidade e transformações podem criar contextos inesperados.
  • isolation: isolate contém os níveis de empilhamento de um componente.
  • Use uma pequena escala compartilhada depois de verificar os contextos ancestrais.
3

Linhas e colunas com flexbox

O flexbox transforma um grupo de filhos em uma linha ou coluna que pode compartilhar o espaço disponível. Seus eixos explicam a direção e o alinhamento, enquanto basis, grow e shrink explicam os tamanhos finais. Acompanhe uma linha com quebra e faça os cálculos antes de escolher espaçamentos, margens automáticas e alinhamento. Você também verá por que a reordenação visual pode prejudicar a navegação por teclado e por que uma linha longa de código pode impedir que uma coluna flexível encolha.

3.1 Linhas, colunas e quebra de linha no flexbox

O flexbox organiza um grupo em uma direção principal. Ele é adequado para links de navegação, barras de ferramentas e outros itens cujos tamanhos vêm de seu conteúdo. Um layout flexível com quebra pode ter várias linhas, mas cada linha distribui seu espaço independentemente.

Crie o contêiner
.nav {
  display: flex;
}

Os filhos diretos da navegação se tornam itens flexíveis. Um link dentro de um item de lista não é um item flexível da navegação, a menos que também seja um filho direto. O texto diretamente dentro do contêiner forma um item flexível anônimo.

Os padrões são uma linha, sem quebra, sem crescimento e com encolhimento permitido. Os itens começam na borda inicial do eixo principal. Em uma linha horizontal, itens com altura automática se esticam até a altura da linha, então frequentemente parecem ter a mesma altura.

Identifique os eixos antes de alinhar

O eixo principal segue flex-direction. O eixo transversal é perpendicular a ele. Em texto horizontal em inglês:

DireçãoEixo principalO primeiro item começa em
rowHorizontalEsquerda
row-reverseHorizontalDireita
columnVerticalTopo
column-reverseVerticalParte inferior

Uma linha segue a direção em linha, então seu início fica à direita em texto escrito da direita para a esquerda. Uma coluna segue a direção de bloco. Principal e transversal descrevem funções, não direções horizontais e verticais permanentes.

justify-content atua no eixo principal. align-items atua no eixo transversal. Depois de mudar de linha para coluna, justify-content: center centraliza verticalmente, desde que haja altura disponível.

Calcule quais itens cabem
.cards {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
}
.card {
  flex: 1 1 200px;
}

Considere cinco cartões em uma largura de conteúdo de 700px. Cada um começa com 200px e pode crescer ou encolher. Três cartões mais dois espaçamentos precisam de 632px; quatro mais três espaçamentos precisam de 848px. Três cabem na primeira linha.

A primeira linha divide 700px menos 32px de espaçamentos: cada cartão passa a ter cerca de 222,7px de largura. Os dois restantes dividem 700px menos um espaçamento de 16px: cada um passa a ter 342px de largura. Os itens da segunda linha não herdam as larguras da primeira. Use grade quando as colunas precisarem ficar alinhadas entre linhas.

flex-flow: row wrap é uma forma abreviada de definir direção e quebra de linha. Sem quebra, o flexbox mantém todos os itens em uma linha, encolhendo-os onde seus limites de tamanho permitem.

Mantenha uma ordem de leitura significativa

O valor padrão de order é 0. Valores menores aparecem primeiro; order: -1 coloca um item antes dos itens comuns. Direções invertidas e order alteram a ordem de desenho, enquanto leitores de tela e o foco normal do teclado continuam seguindo o HTML.

Mantenha sequências importantes em uma ordem coerente no HTML. A reordenação visual pode fazer uma pessoa que usa teclado saltar pela tela e pode violar as WCAG 1.3.2, Sequência significativa, ou 2.4.3, Ordem do foco, quando prejudica o significado ou a operação.

Um item também pode ser um contêiner. Um cartão em uma linha flexível pode usar seu próprio display: flex; flex-direction: column para empilhar seu conteúdo. Use inline-flex quando o contêiner externo deve ficar dentro de uma linha de texto, como um botão com ícone e rótulo.

Principais conclusões

  • O flexbox altera o layout dos filhos diretos.
  • A direção define o eixo principal; o eixo transversal é perpendicular.
  • Linhas flexíveis com quebra são dimensionadas independentemente.
  • Mudanças na ordem visual não alteram a ordem de leitura ou de foco do HTML.
  • Um item flexível pode conter seu próprio layout flexível.

3.2 Como itens flexíveis crescem e encolhem

O flexbox começa com um tamanho para cada item e depois ajusta esses tamanhos para caber no contêiner. As três partes de flex controlam esse ajuste: grow, shrink e basis, nessa ordem.

Comece pela base

flex-basis fornece o tamanho inicial ao longo do eixo principal. Com auto, ele usa a largura do item em uma linha ou sua altura em uma coluna; se esse tamanho também for automático, o conteúdo fornece o tamanho. Uma base explícita tem precedência sobre a largura, enquanto os tamanhos mínimo e máximo ainda limitam o resultado final.

Subtraia todas as bases e espaçamentos do tamanho de conteúdo do contêiner. Um resultado positivo é espaço livre para crescimento. Um resultado negativo é espaço que os itens precisam ceder.

Distribua o espaço positivo

Três itens em uma linha de 600px têm bases de 100px e fatores de crescimento 1, 1 e 2. Sem espaçamentos, as bases usam 300px, restando 300px. As quatro partes de crescimento dividem esse restante em 75px cada. Os tamanhos finais são 175px, 175px e 250px.

Agora adicione gap: 20px. Dois espaçamentos consomem 40px, deixando 260px após as bases. Cada parte passa a ser de 65px; as larguras finais passam a ser 165px, 165px e 230px. Um fator de 2 dobra o espaço adicionado, não toda a largura final.

Ceda espaço usando encolhimento ponderado

Dois itens com bases de 300px e 400px ocupam um contêiner de 500px sem espaçamento. Eles precisam perder 200px. Se ambos tiverem flex-shrink: 1, seus pesos de encolhimento serão 300 e 400: cada fator é multiplicado por seu tamanho base.

O primeiro perde cerca de 85,7px e termina com cerca de 214,3px. O segundo perde cerca de 114,3px e termina com cerca de 285,7px. Fatores de encolhimento iguais não significam perdas iguais em pixels. flex-shrink: 0 protege o tamanho base de um item, o que é útil para um avatar ou logotipo.

Esses cálculos descrevem itens sem preenchimento interno, bordas, margens ou limites de tamanho que alterem o resultado. Verifique essas restrições quando um layout real apresentar um resultado diferente.

Leia valores comuns da propriedade abreviada
DeclaraçãoValor expandidoPonto de partida
flex: initial0 1 autoLargura ou conteúdo; pode encolher
flex: auto1 1 autoLargura ou conteúdo; pode crescer ou encolher
flex: none0 0 autoLargura ou conteúdo; mantém esse tamanho
flex: 11 1 0%Base zero em uma linha de largura definida

Dois itens com larguras de conteúdo de 80px e 200px em uma linha de 600px passam a ter 240px e 360px com flex: auto: ambos ganham metade dos 320px restantes. Com flex: 1 e sem mínimos limitantes, ambos começam em zero e passam a ter 300px de largura.

Permita que uma coluna flexível fique estreita

O mínimo automático de um item flexível pode mantê-lo tão largo quanto uma URL ou linha de código sem quebras. Permita o encolhimento do item e trate o conteúdo dentro dele:

.sidebar { flex: 0 0 240px; }
.main { flex: 1; min-width: 0; }
.main pre { overflow-x: auto; }

A barra lateral permanece com 240px de largura. A área principal ocupa o restante. O código rola dentro da área principal em vez de forçar toda a página a ficar mais larga. Para texto longo comum, overflow-wrap: anywhere permite quebras. Um mínimo zero disponibiliza espaço; por si só, ele não quebra nem permite rolar o conteúdo.

Principais conclusões

  • A ordem da propriedade abreviada é grow, shrink, basis.
  • Fatores de crescimento dividem o espaço adicionado, não as larguras finais.
  • As perdas por encolhimento dependem de cada fator multiplicado por seu tamanho base.
  • Uma base diferente de auto tem precedência sobre a largura.
  • flex: 1 e flex: auto usam tamanhos iniciais diferentes.
  • min-width: 0 permite o encolhimento; o conteúdo interno ainda precisa de tratamento adequado do transbordamento.

3.3 Espaçamento e alinhamento no flexbox

O alinhamento começa depois do dimensionamento. Identifique o eixo principal, o eixo transversal e o espaço restante em cada um. Uma propriedade pode ser válida e ainda assim não produzir diferença visível quando não resta espaço para distribuir.

Distribua espaço no eixo principal

justify-content posiciona o grupo ao longo do eixo principal. Para três itens de 100px em uma linha de 600px sem espaçamentos, restam 300px:

ValorResultado
center150px antes e depois do grupo
space-between150px entre vizinhos; nada nas extremidades
space-around50px em cada extremidade externa; 100px entre vizinhos
space-evenlyQuatro espaços iguais de 75px

flex-start agrupa itens no início do eixo principal; flex-end os agrupa no fim. start e end seguem a direção da escrita. Em um row-reverse em inglês, flex-start agrupa junto à borda direita, mas start agrupa junto à esquerda.

Se itens com flex: 1 consumirem todo o espaço da linha, justify-content não terá espaço restante para distribuir. Reduzir ou remover o crescimento muda essa situação.

Alinhe dentro de cada linha

align-items posiciona itens no eixo transversal dentro de sua linha. O padrão usual, stretch, faz itens de altura automática em uma linha preencherem a altura dela. Um item com altura definida não se estica dessa forma. Use center, start ou end para outras posições, ou baseline para alinhar textos de tamanhos diferentes por sua linha de base.

align-self substitui essa escolha para um item. O flexbox não tem justify-self: os itens compartilham o eixo principal como grupo. justify-items também não alinha itens flexíveis.

Para centralizar um único filho nas duas direções, defina justify-content: center; align-items: center em seu elemento pai flexível. Um elemento pai mais alto, como um com min-height: 100vh, dá espaço para a centralização vertical aparecer. Se o único item já preencher a dimensão transversal da linha, centralizá-lo nela não produz movimento.

Separe grupos com margens automáticas
nav {
  display: flex;
  align-items: center;
  gap: 16px;
}
.logo {
  margin-inline-end: auto;
}

Em inglês horizontal, o logotipo permanece à esquerda enquanto os links se movem para a direita. Sua margem final automática absorve o espaço restante. Uma margem inicial automática em um item, por sua vez, empurra esse item e os seguintes em direção ao fim. Margens lógicas se adaptam quando a direção do texto muda.

Um único item com margin: auto pode ficar centralizado nos dois eixos. Quando um item é grande demais, margens automáticas evitam que seu transbordamento fique além da borda inicial inacessível, o que a centralização comum pode causar.

Diferencie linhas de itens

align-content move as linhas como grupo no eixo transversal em um contêiner com quebra e espaço disponível. Ele não tem efeito com flex-wrap: nowrap. Com wrap, ainda pode posicionar uma linha mesmo que os itens atuais caibam em apenas uma linha. align-items cuida dos itens dentro de cada linha.

gap: 16px 24px define um espaçamento de 16px entre linhas e de 24px entre colunas. Gap cria espaço entre itens e linhas, nunca ao redor da parte externa do contêiner. Adicione preenchimento interno para criar espaço externo. Qualquer espaço distribuído pelo alinhamento é adicional ao espaçamento definido por gap.

Principais conclusões

  • justify-content distribui o espaço restante no eixo principal.
  • flex-start segue a direção flexível; start segue a direção da escrita.
  • align-items alinha itens dentro das linhas; align-content distribui linhas em um contêiner com quebra.
  • Margens automáticas absorvem espaço livre e podem separar grupos.
  • Gap adiciona espaçamento interno; preenchimento interno adiciona espaço externo.
  • Use align-self para alinhar um item no eixo transversal.
  • O flexbox não oferece justify-self para posicionar itens individualmente no eixo principal.
4

Trilhas compartilhadas com grade

A grade oferece a várias linhas um conjunto compartilhado de colunas e permite que caixas individuais ocupem várias dessas trilhas ou se sobreponham nelas. Defina tamanhos, calcule partes fracionárias e posicione itens por limites ou áreas nomeadas. Depois, deixe o posicionamento automático cuidar de uma coleção crescente e compare auto-fill com auto-fit. Por fim, diferencie o alinhamento de itens dentro de áreas do alinhamento de trilhas dentro de todo o contêiner, para que cada propriedade mova a parte desejada.

4.1 Trilhas de grade e o espaço que compartilham

A grade define linhas e colunas em conjunto. Defina as trilhas em um contêiner e deixe seus filhos diretos ocupá-las. Ao contrário das linhas flexíveis com quebra, as linhas de grade compartilham a mesma estrutura de colunas.

Nomeie as partes

Uma trilha é uma linha ou coluna entre duas linhas de grade. Uma célula é a interseção de uma linha com uma coluna. Uma área de grade é um retângulo de uma ou mais células. Espaçamentos separam as trilhas.

.dashboard {
  display: grid;
  grid-template-columns: 200px 1fr 2fr;
  gap: 20px;
}

grid-template-columns define as colunas explícitas; grid-template-rows define as linhas explícitas. Sem colunas explícitas, uma grade tem uma coluna e seus itens são empilhados em linhas.

Calcule uma parte em fr

A unidade fr divide o espaço restante depois das trilhas fixas e dos espaçamentos. Em um contêiner de 900px, o exemplo tem uma coluna fixa de 200px e dois espaçamentos de 20px. Subtraia-os primeiro: restam 660px. As duas colunas flexíveis solicitam três partes no total, então uma parte é de 220px. As larguras são 200px, 220px e 440px.

As frações dividem o espaço restante para as trilhas, não todos os 900px. Uma trilha 2fr recebe o dobro da parte flexível de uma trilha 1fr quando os tamanhos mínimos não as limitam.

Repita trilhas e defina limites

repeat(4, 1fr) é uma forma abreviada de escrever quatro trilhas flexíveis iguais. Também é possível repetir um padrão: repeat(2, 100px 1fr) cria 100px 1fr 100px 1fr.

Os tamanhos das trilhas também podem usar comprimentos, porcentagens, auto, min-content e max-content. As palavras-chave de conteúdo solicitam tamanhos com base nas necessidades intrínsecas do conteúdo.

minmax(150px, 1fr) dá a uma trilha um mínimo de 150px e um máximo flexível. Para linhas criadas automaticamente, use grid-auto-rows: minmax(100px, auto) para obter um mínimo de 100px e permitir que conteúdo mais alto expanda a linha.

Uma trilha 1fr simples tem um mínimo automático, como minmax(auto, 1fr). Uma URL longa sem quebras pode fazer uma coluna ficar mais larga que as demais. Use repeat(3, minmax(0, 1fr)) quando as colunas precisarem dividir igualmente a largura disponível e permita a quebra ou rolagem de conteúdo grande demais dentro delas.

Mantenha os espaçamentos dentro da largura disponível

gap: 16px 32px significa 16px entre linhas e 32px entre colunas. Ele não cria preenchimento interno ao redor da grade.

Três colunas de 33.33% já usam quase todo um contêiner de 900px. Dois espaçamentos de 20px acrescentam então cerca de 40px além de sua largura. Trilhas fracionárias consideram esses espaçamentos antes de dividir o espaço, então repeat(3, 1fr) evita esse transbordamento causado pela soma de porcentagem e espaçamento quando os mínimos do conteúdo cabem.

Deixe as linhas responderem ao conteúdo

grid-template-rows: auto 1fr auto é adequado para cabeçalho, área principal e rodapé. As linhas externas se ajustam a seu conteúdo. Com uma altura ou altura mínima do contêiner a preencher, a linha central ocupa a altura restante. Mantenha espaço para o conteúdo crescer; uma altura mínima de página permite que uma página mais longa se expanda.

Principais conclusões

  • Linhas e colunas são trilhas delimitadas por linhas de grade.
  • fr divide o espaço restante depois das trilhas fixas e dos espaçamentos.
  • repeat() pode repetir um tamanho ou um padrão de trilhas.
  • minmax() define um tamanho mínimo e máximo para a trilha.
  • minmax(0, 1fr) remove o mínimo automático de uma trilha flexível.
  • Trilhas percentuais podem transbordar quando espaçamentos são adicionados.

4.2 Posicionamento de itens em linhas e áreas nomeadas

O posicionamento na grade descreve os limites de um item. Conte as linhas de grade ao redor das colunas e linhas ou nomeie uma região retangular e posicione o item nela. Ambos os métodos organizam caixas sem alterar sua ordem no HTML.

Conte os limites, não as colunas

Uma grade de três colunas tem quatro linhas de coluna. Em inglês horizontal, a linha de coluna 1 fica à esquerda e a linha de linha 1 fica no topo. Números negativos contam de trás para a frente a partir do fim da grade explícita: -1 é sua última linha.

DeclaraçãoPosicionamento
grid-column: 1 / 3Cobre as duas primeiras colunas
grid-column: 1 / -1Ocupa toda a largura da grade explícita
grid-column: 2 / span 2Começa na linha 2 e cobre duas colunas
grid-column: span 2Cobre duas colunas em uma posição automática

Para cobrir três colunas começando na linha 1, termine na linha 4. Terminar na linha 3 cobre apenas duas trilhas.

Em um painel com quatro colunas e três linhas, posicione um gráfico com grid-column: 1 / 4; grid-row: 1 / 3. Ele ocupa três colunas e duas linhas: seis células. Um painel de estatísticas em grid-column: 4; grid-row: 1 / 3 ocupa a última coluna ao lado dele. Uma tabela em grid-column: 1 / -1; grid-row: 3 preenche a terceira linha.

Desenhe a página usando nomes de áreas
.page {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  grid-template-rows: auto 1fr auto;
  grid-template-areas:
    "header header"
    "nav    main"
    "footer footer";
}
header { grid-area: header; }
nav    { grid-area: nav; }
main   { grid-area: main; }
footer { grid-area: footer; }

Cada string descreve uma linha, e cada palavra descreve uma célula. Repetir header ao longo da primeira linha permite que o cabeçalho ocupe as duas colunas. Um ponto marca uma célula vazia. Todas as linhas devem conter o mesmo número de células, e cada nome repetido deve formar um retângulo. Uma área nomeada em forma de L torna toda a declaração grid-template-areas inválida.

Uma área chamada main também cria linhas chamadas main-start e main-end. Você pode usar esses nomes para os limites de outro item. Defina nomes personalizados de linhas entre colchetes na lista de trilhas, como [content-start] 600px [content-end].

Sobreponha itens em uma área de grade

Uma imagem e uma legenda podem usar grid-area: 1 / 1. Elas compartilham a primeira célula; a legenda, que aparece depois no HTML, é desenhada sobre a imagem. align-self: end move a legenda para a parte inferior dessa área. Itens de grade aceitam z-index sem precisar de uma posição diferente de estática, então você pode alterar explicitamente a ordem de suas camadas.

Preserve a sequência de leitura

O posicionamento manual afeta a aparência, não a ordem do HTML seguida por leitores de tela e pelo foco do teclado. Mantenha instruções, títulos e links em uma ordem significativa no código-fonte. Um layout pode parecer coerente enquanto a navegação por Tab salta entre células distantes; isso pode violar as WCAG 1.3.2 ou 2.4.3 quando o significado ou a operação são prejudicados.

Principais conclusões

  • O posicionamento usa linhas de grade; três trilhas têm quatro limites.
  • -1 refere-se à última linha da grade explícita.
  • Toda área nomeada deve ser retangular, e todas as linhas do modelo precisam ter a mesma quantidade de células.
  • Itens podem se sobrepor em uma área e usar z-index sem posicionamento.
  • O posicionamento na grade não altera a ordem de leitura ou de foco.

4.3 Grades automáticas que se ajustam ao conteúdo

Uma lista de produtos pode crescer de alguns cartões para muitos sem alterar seu CSS. Defina as colunas, deixe o posicionamento automático criar linhas e escolha se as colunas não usadas devem manter seu espaço.

Deixe os itens encontrar a próxima célula

O padrão grid-auto-flow: row posiciona itens sem posição definida na ordem do código-fonte, percorrendo uma linha e depois descendo para a próxima. Ele pula células ocupadas. Trilhas extras formam a grade implícita.

.products {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: minmax(150px, auto);
}

Sete itens criam três linhas. A última linha contém um item. Cada linha tem pelo menos 150px de altura e pode crescer com seu conteúdo. Trilhas explícitas vêm do modelo; trilhas implícitas são adicionadas conforme o posicionamento exige.

Números negativos de linha contam apenas dentro da grade explícita. Se você definir colunas, mas nenhuma linha, grid-row: 1 / -1 não poderá significar todas as linhas criadas automaticamente. Defina linhas explícitas quando um item precisar ocupar toda a altura delas.

grid-auto-flow: column preenche colunas e cria colunas extras dimensionadas por grid-auto-columns. Adicionar dense permite que itens menores posteriores preencham lacunas deixadas por itens que ocupam mais trilhas. Isso pode alterar a sequência visual, então evite-o para instruções ordenadas ou outros conteúdos cuja sequência importa.

Calcule o número de colunas a partir de um mínimo
.products {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 16px;
}

Em uma largura de conteúdo de 1000px, quatro colunas de 200px mais três espaçamentos de 16px precisam de 848px. Cinco colunas mais quatro espaçamentos precisam de 1064px, então apenas quatro cabem. Suas larguras finais flexíveis são de 238px: subtraia 48px de espaçamentos e divida os 952px restantes por quatro.

Em 500px, duas colunas mínimas mais um espaçamento precisam de 416px; três precisam de 632px. Duas cabem e cada uma passa a ter 242px. O número de colunas muda conforme o espaço disponível, sem um ponto de quebra.

Escolha o que acontece com colunas não usadas

Com itens suficientes, auto-fill e auto-fit parecem iguais. Com apenas três itens nessa grade de 1000px, auto-fill mantém uma quarta coluna vazia, então cada coluna ocupada permanece com 238px de largura. auto-fit recolhe essa trilha vazia e seu espaçamento. As três colunas ocupadas passam então a dividir 968px e a ter cerca de 322,7px cada.

Uma coluna com um item em qualquer posição está ocupada, mesmo que uma célula em sua última linha esteja vazia. Auto-fit recolhe trilhas vazias, não todas as células vazias.

Proteja o contêiner mais estreito

A repetição automática precisa de um tamanho mínimo ou máximo definido para a trilha. repeat(auto-fill, 1fr) é inválido. Um mínimo fixo de 400px também pode transbordar em um contêiner de 320px. Use:

grid-template-columns:
  repeat(auto-fit, minmax(min(100%, 400px), 1fr));

min(100%, 400px) escolhe o menor mínimo, então um contêiner estreito pode acomodar uma trilha sem ser forçado a ter 400px. Continue tratando textos ou imagens grandes demais dentro dos cartões.

Principais conclusões

  • O posicionamento automático preenche células disponíveis e cria trilhas implícitas conforme necessário.
  • grid-auto-rows dimensiona linhas criadas automaticamente.
  • Auto-fill mantém trilhas vazias; auto-fit as recolhe.
  • A contagem de colunas deve incluir os espaçamentos entre elas.
  • Use um mínimo ou máximo definido na repetição automática.
  • min(100%, …) mantém o mínimo de uma trilha dentro de um contêiner estreito.
  • O preenchimento denso pode alterar a ordem visual.

4.4 Alinhe caixas dentro de áreas ou trilhas dentro de um contêiner

O alinhamento na grade tem duas escalas diferentes. Você pode mover um item dentro de sua área ou mover todo o conjunto de trilhas dentro do contêiner. Primeiro identifique qual espaço você quer distribuir.

Alinhe itens dentro de suas áreas

Em inglês horizontal, propriedades justify- atuam no eixo em linha, horizontal. Propriedades align- atuam no eixo de bloco, vertical. A grade permite alinhar itens nos dois eixos.

Definido no contêinerSubstituição em um itemEfeito
justify-itemsjustify-selfPosição em linha dentro da área
align-itemsalign-selfPosição de bloco dentro da área

Os valores incluem start, end, center e stretch. align-items: baseline alinha as linhas de base do texto. A maioria dos itens com tamanho automático se estica por padrão. Uma imagem com proporção própria normalmente começa na borda inicial da área em vez de ser esticada nas duas direções.

Em uma linha de cartões, o esticamento faz cada cartão preencher a altura da linha. Mude para align-items: start e cada cartão manterá a altura de seu conteúdo; suas bordas inferiores podem ficar em alturas diferentes. align-self: end em uma legenda a posiciona na parte inferior de sua área de grade.

Centralize uma caixa nas duas direções
.hero {
  display: grid;
  place-items: center;
  min-height: 60vh;
}

place-items combina align-items seguido de justify-items. Com um valor, ele aplica esse valor aos dois. A altura mínima cria espaço vertical ao redor de um item baixo. place-self é a propriedade abreviada correspondente para um item individual.

O item continua sendo uma caixa com texto dentro. Para centralizar as palavras dentro dessa caixa, defina text-align: center no item. Mover uma caixa para o centro de uma célula não altera o alinhamento de seu texto.

Mova as trilhas como grupo

justify-content posiciona todo o conjunto de colunas ao longo do eixo em linha. align-content posiciona as linhas ao longo do eixo de bloco. Essas propriedades precisam de espaço extra fora das trilhas para que seu efeito apareça.

Para três colunas fixas de 200px em um contêiner de 900px sem espaçamentos, restam 300px. justify-content: center deixa 150px antes da primeira coluna e depois da última. justify-content: space-between coloca as colunas externas nas bordas do contêiner e distribui 150px entre colunas vizinhas. Os itens permanecem dentro de suas próprias trilhas enquanto elas se movem.

Se as colunas usarem fr e preencherem toda a largura disponível, não haverá espaço horizontal restante para justify-content distribuir. Definir justify-items: center ainda pode centralizar visivelmente um filho estreito dentro de sua trilha larga. A primeira propriedade posiciona trilhas; a segunda posiciona itens.

Principais conclusões

  • justify- segue o eixo em linha; align- segue o eixo de bloco.
  • O alinhamento dos itens move caixas dentro de suas áreas.
  • O alinhamento do conteúdo move trilhas dentro do contêiner.
  • place-items combina as duas propriedades de alinhamento de itens.
  • Use text-align para alinhar o texto dentro de um item.
5

Crie e depure layouts reais

Páginas reais combinam vários layouts: uma grade de página pode conter uma barra de ferramentas flexível, cartões e um emblema posicionado. Escolha o método adequado a cada relação e crie padrões que continuem funcionando quando o texto crescer ou o espaço ficar estreito. Estude colunas de conteúdo, rodapés, barras laterais e controles de formulário antes de usar as ferramentas do desenvolvedor para localizar propriedades inativas e transbordamentos. Texto mais longo, zoom e verificações com teclado revelam problemas que o conteúdo de exemplo pode ocultar.

5.1 Escolha um método para a relação desejada

Uma página pode usar vários métodos de layout ao mesmo tempo. Escolha cada método de acordo com a relação entre as caixas naquela parte da página: uma sequência de texto, um grupo flexível, colunas compartilhadas ou uma camada sobreposta.

Comece pelo conteúdo

O fluxo normal já cuida de artigos, títulos e parágrafos. Ele quebra o texto em linhas e move os blocos seguintes para baixo quando o conteúdo anterior cresce. Adicione mais estrutura quando o design exigir uma relação diferente.

NecessidadeMétodo útilMotivo
Uma linha ou coluna de controlesFlexboxDistribui espaço entre itens dimensionados pelo conteúdo
Colunas alinhadas em várias linhasGradeDefine trilhas compartilhadas de linhas e colunas
Um emblema sobre uma imagemPosicionamento absolutoPosiciona uma camada em relação a um contêiner escolhido
Um controle visível em toda a páginaPosicionamento fixoMantém o controle preso à área de visualização
Um título visível dentro de sua seçãoPosicionamento aderenteMantém o espaço no fluxo e para no fim da seção
Texto que contorna uma fotoElemento flutuanteEncurta as linhas de texto próximas à imagem
Texto que flui em colunas de jornalLayout de múltiplas colunasContinua o texto de uma coluna para a próxima

O flexbox é unidimensional: distribui espaço em uma linha ou coluna, com cada linha quebrada funcionando de forma independente. A grade é bidimensional: define colunas e linhas em conjunto. São escolhas sobre as restrições do layout, não uma proibição de usar qualquer uma das ferramentas para uma linha simples.

Compare uma linha com quebra e colunas compartilhadas

Sete cartões ocupam uma largura de conteúdo de 1000px com espaçamentos de 16px. No flexbox, atribua flex: 1 1 200px a cada cartão e permita a quebra. Quatro cartões cabem na primeira linha e crescem para 238px cada. Os três cartões da segunda linha crescem para cerca de 322,7px cada. Cada linha usa seu próprio espaço livre.

Agora use repeat(auto-fill, minmax(200px, 1fr)) na grade. Quatro colunas cabem. Todos os sete cartões usam as mesmas larguras de coluna de 238px; a última linha deixa uma célula vazia. A grade mantém o alinhamento entre as linhas.

Use a versão com flexbox quando itens mais largos na última linha forem adequados ao design. Use a versão com grade quando uma estrutura de colunas consistente for importante.

Combine métodos em níveis diferentes

Uma página pode usar grade para uma barra lateral e uma área principal, flexbox para a barra de ferramentas da área principal e um emblema com posicionamento absoluto dentro de um cartão. Um cartão pode ser um item de grade por fora e um contêiner flexível por dentro. Defina a relação externa em seu elemento pai e a organização interna no próprio cartão.

Para uma lista longa de texto, columns: 3 ou column-width: 250px cria um fluxo de múltiplas colunas. O texto continua para baixo em uma coluna e depois passa para a próxima; não é uma grade de cartões independentes. Verifique se esse percurso de leitura é adequado ao conteúdo.

Leia layouts antigos com cuidado

Colunas flutuantes, grades de blocos em linha e tabelas HTML usadas para layout de página ainda aparecem em código antigo. Suas regras de espaçamento e contenção diferem das de flexbox e grade. Ao criar uma nova estrutura de página, use ferramentas modernas de layout. Reserve <table> para dados cujas linhas e colunas expressem relações tabulares.

Principais conclusões

  • Escolha grade para linhas e colunas compartilhadas e flexbox para uma linha ou coluna independente.
  • Use elementos flutuantes quando o texto precisar contornar uma imagem.
  • Use posicionamento para sobreposições ou posicionamento relacionado à rolagem.
  • Múltiplas colunas continuam o texto de uma coluna para outra.
  • Uma caixa pode ser item de um layout e contêiner de outro.

5.2 Padrões de página que crescem com o conteúdo

Um layout de página útil tem largura de conteúdo legível, espaço nas bordas e espaço para conteúdo mais longo. Crie suas regiões principais no fluxo para que um artigo que cresce mova o rodapé para baixo naturalmente.

Centralize uma coluna de conteúdo
.container {
  max-width: 1100px;
  margin-inline: auto;
  padding-inline: 16px;
}

O máximo limita o crescimento em telas largas. As margens automáticas em linha dividem o espaço restante entre os dois lados. O preenchimento interno mantém o texto afastado das bordas em telas estreitas. Para texto corrido, max-width: 65ch fornece uma medida aproximada de 65 caracteres; um ch é a largura do dígito 0 na fonte atual. Uma linha de cerca de 45–75 caracteres é uma faixa útil para leitura, embora a largura das letras varie.

Coloque as regiões da página em uma grade
.page {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  grid-template-rows: auto 1fr auto;
  grid-template-areas:
    "header  header"
    "sidebar main"
    "footer  footer";
}
header { grid-area: header; }
aside  { grid-area: sidebar; }
main   { grid-area: main; }
footer { grid-area: footer; }

O cabeçalho e o rodapé ocupam as duas colunas. A barra lateral mantém 240px, e a área principal recebe o restante. O mínimo zero na trilha flexível impede que conteúdo largo force a trilha a ultrapassar sua parte do espaço disponível. Trate esse conteúdo com quebra de linha ou rolagem dentro da área principal.

O padrão de três colunas frequentemente chamado de layout santo graal usa 200px 1fr 200px e as áreas da linha central "nav main aside", com cabeçalho e rodapé ocupando as três colunas. Colunas laterais fixas ainda precisam de largura disponível suficiente; teste o layout em tamanhos estreitos.

Mantenha o rodapé de uma página curta na parte inferior
body {
  margin: 0;
  min-height: 100dvh;
  display: grid;
  grid-template-rows: auto 1fr auto;
}

Com cabeçalho, conteúdo principal e rodapé como filhos diretos, a linha central preenche a altura não usada. O rodapé de uma página curta chega à parte inferior da janela; o de uma página longa vem depois do conteúdo. Esse padrão é chamado de rodapé no fim da página, mas o rodapé não precisa de position: sticky.

A unidade tradicional relativa à área de visualização é vh. Em celulares, 100vh pode se estender atrás dos controles visíveis do navegador. A altura dinâmica da área de visualização, dvh, acompanha a altura visível conforme esses controles mudam; todos os principais navegadores a suportam desde 2022. Use min-height para que conteúdo mais longo possa aumentar a página. Um height fixo pode fazer o conteúdo transbordar sobre o que vem depois.

Uma alternativa com flexbox usa um body em coluna com min-height: 100dvh e depois main { flex: 1; }. Para uma linha com barra lateral, use .sidebar { flex: 0 0 240px; } e .main { flex: 1; min-width: 0; }.

Faça uma barra lateral aderir e uma imagem ocupar toda a largura

Uma barra lateral de grade pode usar position: sticky; top: 16px; align-self: start. Manter a altura do próprio conteúdo deixa espaço para se mover dentro de sua linha.

Para conteúdo de artigo em largura total, defina as colunas como 1fr min(65ch, 100% - 32px) 1fr. Coloque os filhos comuns na coluna 2 e uma imagem larga em grid-column: 1 / -1. A trilha central permanece legível enquanto a imagem ocupa toda a largura do contêiner.

Principais conclusões

  • Margens automáticas em linha centralizam uma coluna de conteúdo com largura limitada.
  • Use min-height para páginas de altura total que precisam crescer.
  • O padrão de rodapé no fim da página mantém o rodapé no fluxo normal.
  • dvh acompanha as mudanças da altura visível da área de visualização.
  • Um mínimo zero na trilha flexível ajuda a evitar o transbordamento da página.
  • Uma barra lateral aderente de grade precisa de espaço para se mover; align-self: start evita o esticamento.
  • Um item em largura total se estende além da coluna de texto do artigo.

5.3 Layouts reutilizáveis para partes da interface

Pequenas partes da interface combinam as mesmas relações: uma imagem mantém seu tamanho, o texto preenche o restante, controles relacionados compartilham uma linha ou vários cartões alinham suas partes internas. Dê a cada contêiner o layout que expressa sua função.

Escolha o tipo adequado de centralização
Conteúdo a centralizarRegra
Uma caixa nos dois eixosElemento pai: display: grid; place-items: center
Um bloco com largura limitadaBloco: margin-inline: auto
Texto ou conteúdo em linhaElemento pai: text-align: center

O flexbox também pode centralizar um filho com justify-content: center; align-items: center. Verifique se o contêiner tem espaço disponível no eixo relevante.

Uma linha de navegação e uma linha de mídia
nav { display: flex; align-items: center; gap: 16px; }
.logo { margin-inline-end: auto; }
.media { display: flex; align-items: flex-start; gap: 16px; }
.media img { flex: none; width: 64px; }
.media-body { flex: 1; min-width: 0; }

Em inglês, o logotipo permanece à esquerda e os links se agrupam à direita. Quando a navegação tem exatamente dois filhos, um logotipo e uma lista de links, justify-content: space-between pode separá-los; a lista precisa de seu próprio layout flexível para organizar os links.

Na linha de mídia, a imagem mantém sua largura. O texto recebe o restante e pode encolher. O alinhamento no início do eixo transversal impede que uma imagem de altura automática se estique para acompanhar um bloco de texto longo. Isso é adequado para um comentário, perfil ou linha de produto.

Cartões com botões alinhados
.cards {
  display: grid;
  grid-template-columns:
    repeat(auto-fill, minmax(min(100%, 240px), 1fr));
  gap: 24px;
}
.card { display: flex; flex-direction: column; }
.card .button { margin-top: auto; }

A grade do elemento pai estica os cartões de cada linha até a mesma altura. Dentro de cada cartão, a margem superior automática usa o espaço vertical não utilizado antes do botão, posicionando-o na parte inferior. Os títulos ainda podem ter alturas diferentes.

Para alinhar títulos, texto e rodapés entre cartões, use subgrade. Faça cada cartão ser um item de grade que ocupa três linhas do elemento pai e defina display: grid; grid-template-rows: subgrid. Cada cartão adota essas linhas do elemento pai para suas três partes. A subgrade funciona nos principais navegadores desde setembro de 2023.

Sobreposições, formulários e grupos de entrada

Para texto sobre uma imagem, faça do elemento envolvente uma grade e coloque os dois filhos em grid-area: 1 / 1. Uma legenda posterior é desenhada acima da imagem. Outra opção é um elemento envolvente relativo com uma camada de legenda absoluta usando inset: 0.

Um formulário com rótulos e campos alternados pode usar grid-template-columns: max-content 1fr; gap: 12px 16px; align-items: center. O rótulo mais largo define uma coluna compartilhada de rótulos. Os campos ficam alinhados na segunda coluna; linhas flexíveis separadas não podem compartilhar automaticamente essa largura de rótulo.

Um grupo de pesquisa usa display: flex; gap: 8px, com input { flex: 1; min-width: 0; } e button { flex: none; }. O campo de entrada pode encolher enquanto o botão mantém sua largura natural. Para etiquetas ou controles de barra de ferramentas que devem passar para outra linha mantendo suas larguras naturais, use display: flex; flex-wrap: wrap; gap: 8px.

Principais conclusões

  • Centralize uma caixa, um bloco e texto em linha com o tipo adequado de alinhamento.
  • Use uma imagem de tamanho fixo e um item de texto flexível para uma linha de mídia.
  • Flexbox em coluna e uma margem superior automática alinham botões de cartões.
  • A subgrade compartilha trilhas do elemento pai entre partes aninhadas de cartões.
  • A grade pode alinhar rótulos entre linhas de formulário.
  • Um campo de entrada flexível frequentemente precisa de min-width: 0.

5.4 Encontre a caixa que causa o problema de layout

Um problema de layout é mais fácil de corrigir quando você inspeciona as caixas reais do navegador. Comece pelo elemento que se moveu ou transbordou e verifique o layout do qual ele participa antes de alterar valores.

Inspecione em uma ordem útil
  1. Encontre o elemento nas ferramentas do desenvolvedor.
  2. Inspecione o display computado de seu elemento pai: fluxo normal, flex e grade dão funções diferentes às propriedades.
  3. Verifique se sua propriedade se aplica a esse elemento nesse layout.
  4. Compare tamanhos, margens e posição computados com os valores esperados.
  5. Ative ou desative uma declaração por vez para ver qual restrição causa o problema.

O painel do modelo de caixa mostra conteúdo, preenchimento interno, borda e margem. As sobreposições de inspeção de grade mostram linhas, números, trilhas e espaçamentos; as de flexbox mostram itens e a distribuição de espaço entre eles. Use-as para verificar o que o navegador construiu, não apenas o que a folha de estilo pretendia.

Verifique propriedades inativas

Deslocamentos não fazem nada em um elemento estático. Largura e altura não fazem nada em um <span> em linha comum, embora dimensionem uma imagem em linha. z-index precisa de uma caixa posicionada ou de um item flexível ou de grade. float não tem efeito sobre itens flexíveis ou de grade, e justify-self não pode alinhar um item flexível.

Uma declaração de alinhamento válida pode não ter efeito visível porque os itens já usam todo o espaço. align-content também não tem efeito em um contêiner flexível nowrap. O posicionamento aderente precisa de um deslocamento e de espaço para se mover.

Identifique a origem do transbordamento horizontal

O transbordamento pode vir de uma caixa grande demais ou de uma caixa menor empurrada para além de uma borda por margens, deslocamentos ou larguras de elementos vizinhos. Causas comuns incluem:

  • Uma largura fixa, como 1200px, maior que a área de visualização.
  • width: 100% mais preenchimento interno com dimensionamento content-box.
  • width: 100vw, que pode incluir a largura de uma barra de rolagem vertical visível.
  • Uma palavra longa sem quebra, URL ou linha de código.
  • O mínimo automático de um item flexível ou de uma trilha 1fr.
  • Um mínimo de repetição automática mais largo que seu contêiner.

Adicione temporariamente * { outline: 1px solid red; } para revelar as bordas. Contornos não usam espaço no layout, então expõem os limites sem alterar os tamanhos das caixas como as bordas fariam.

Analise um bloco de código largo

Uma página flexível tem uma barra lateral de 240px e uma coluna principal contendo um exemplo de código de 1400px de largura. A página inteira rola para os lados. A sobreposição de inspeção do flexbox mostra a área principal mais larga que sua parte do espaço, e sua largura mínima computada é auto.

.main { min-width: 0; }
.main pre { overflow-x: auto; }

A primeira regra permite que o item flexível encolha. A segunda mantém o código largo acessível por meio de rolagem horizontal local. Ocultar todo o transbordamento da página esconderia o sintoma sem tornar o código disponível.

Para outras surpresas, inspecione margens que colapsam, um cabeçalho fixo que cobre conteúdo, um filho com posicionamento absoluto cujo elemento pai desejado é estático ou uma camada presa dentro de um contexto de empilhamento criado por opacidade ou transformação.

Teste conteúdo real e espaço estreito

Redimensione a janela, use um nome ou URL longo e amplie o texto para 200%. Verifique o foco do teclado perto de barras fixas. O critério 1.4.4 das WCAG 2.2 exige redimensionamento do texto para 200% sem perda de conteúdo ou função. O critério 1.4.10 geralmente exige refluxo em 320 pixels CSS sem rolagem em duas direções; conteúdo que precisa de um layout bidimensional, como uma tabela de dados, tem exceções. Teste mais do que o texto curto de exemplo que inicialmente fez a página parecer correta.

Principais conclusões

  • Inspecione o layout do elemento pai e os valores computados antes de alterar declarações.
  • Use sobreposições de inspeção e contornos para localizar os limites reais das caixas.
  • Verifique se uma propriedade se aplica e se há espaço livre para ela usar.
  • Trate tanto o mínimo de um item flexível quanto seu conteúdo que transborda.
  • Teste larguras estreitas, ampliação do texto para 200%, texto mais longo e foco do teclado.

Exercícios resolvidos de Layout CSS

5 Lições Interativas

1

Leia o layout natural da página

13 passos
Acompanhe as caixas de um artigo, altere a exibição de um link e faça o texto contornar uma foto.
  1. 1
    IntroduçãoComece com um artigo comum

    Imagine um artigo com um título, dois parágrafos, um link e um retrato. O navegador já sabe como organizar esses elementos antes de você adicionar CSS de layout: títulos e parágrafos são caixas de bloco, links ficam em linha no texto e display pode mudar esse comportamento.

    Você acompanhará as caixas padrão, tornará o link um alvo maior e depois posicionará o retrato com um float para que o texto o contorne. Observe o texto e os fundos dos elementos pais: eles respondem a partes diferentes do layout.

  2. 2
    ExplicaçãoAcompanhe as linhas dos blocos

    O título e os parágrafos são caixas de bloco por padrão. Cada um começa em uma nova linha e cresce em altura quando seu conteúdo passa para outras linhas.

    Defina o primeiro parágrafo com width: 260px. Ele fica estreito, mas o próximo parágrafo ainda começa abaixo dele. Um bloco não se torna em linha só porque há espaço horizontal livre ao lado. Deixe a largura automática quando ele deve preencher sua linha disponível.

  3. 3
    ExemploAcompanhe o link dentro de uma frase

    Em <p>Open the <a href="/notes">reading notes</a> before class.</p>, o link faz parte da linha de texto. Ele ocupa o espaço necessário para suas palavras e pode passar para outra linha junto com a frase.

    Adicionar width: 190px não redimensiona esse link comum em linha. O preenchimento interno vertical pode desenhar um fundo maior sem afastar as linhas de texto adjacentes. Uma imagem em linha é diferente: sua largura e altura se aplicam.

  4. 4
    ExemploMeça um espaço após o colapso de margens

    O parágrafo do artigo tem uma margem inferior de 14px. O título seguinte tem uma margem superior de 26px. Quando essas margens verticais positivas se tocam no fluxo normal, elas colapsam para 26px.

    Elas não são somadas para resultar em 40px. Se o elemento pai mais tarde se tornar flexível ou de grade, as margens entre seus itens permanecerão separadas, então as mesmas declarações podem produzir mais espaço.

  5. 5
    DesafioColoque o espaço dentro do cabeçalho

    Um cabeçalho sem preenchimento interno contém apenas um título com margem superior. A margem colapsa com a do cabeçalho, e o espaço aparece acima do fundo dele. Como você pode criar espaço interno superior?

    ---reveal---

    Remova a margem superior do título e adicione preenchimento interno superior ao cabeçalho. O preenchimento interno fica dentro da caixa do cabeçalho. Uma borda ou flow-root também impediria o colapso entre pai e filho, mas o preenchimento interno cria diretamente o espaçamento interno desejado.

  6. 6
    ExplicaçãoDê ao link sua própria caixa dimensionada

    Use display: inline-block no link do artigo quando ele precisar de uma largura e de um alvo mais alto com preenchimento interno, mantendo-se na linha de texto.

    .article-link {
      display: inline-block;
      padding: 10px 14px;
    }
    

    A caixa agora participa do layout com seu tamanho vertical completo. Display altera seu comportamento no layout; ela continua sendo um link HTML. Espaços em branco entre blocos em linha vizinhos ainda aparecem como um espaço de texto.

  7. 7
    Ideia-chaveSepare o exterior do interior

    Uma caixa pode participar de um layout e ter outro dentro de si. display: flex significa bloco por fora e flex por dentro. inline-flex mantém o mesmo layout flexível interno, mas usa posicionamento externo em linha.

    A regra afeta os filhos diretos. Uma navegação flexível transforma sua lista em um item flexível; ela não transforma automaticamente cada link aninhado em um item dessa linha externa. Atribua um layout separado à lista quando seus links precisarem de uma linha própria.

  8. 8
    DesafioReserve espaço para uma mensagem

    Uma mensagem de status de leitura deve ficar oculta inicialmente, com seu espaço reservado para que o artigo não se desloque quando ela aparecer. Ela deve usar display: none ou visibility: hidden?

    ---reveal---

    Use visibility: hidden para manter seu espaço no layout. display: none remove sua caixa e o espaço, então exibi-la moveria o conteúdo seguinte. Se o texto precisar permanecer disponível para leitores de tela enquanto estiver visualmente oculto, uma classe de texto visualmente oculto atende a essa outra finalidade.

  9. 9
    ExemploFaça o retrato flutuar

    Coloque o retrato antes do parágrafo e faça-o flutuar:

    .portrait {
      float: left;
      width: 130px;
      margin: 0 18px 10px 0;
    }
    

    As linhas de texto contornam a foto com um espaço horizontal de 18px. Quando passam por sua margem inferior, voltam à largura total. O fundo do parágrafo pode se estender atrás do elemento flutuante mesmo que o próprio texto permaneça ao lado dele.

  10. 10
    ExemploContenha a altura da imagem

    Se o texto do artigo for muito curto, o elemento flutuante pode se estender abaixo do fundo de seu elemento pai. Filhos flutuantes não fornecem altura ao fluxo normal.

    Adicione display: flow-root ao elemento envolvente. Sua região de fluxo independente agora contém o retrato, então a borda e o fundo do elemento envolvente se estendem ao redor dele. Isso também separa as margens de pai e filho; não adiciona recorte nem uma área de rolagem.

  11. 11
    DesafioComece uma nova seção abaixo do retrato

    O retrato ainda se estende para baixo do primeiro parágrafo do artigo. O título da próxima seção deve começar abaixo dele, enquanto o parágrafo pode continuar contornando-o. Qual regra deve ser aplicada ao título?

    ---reveal---

    Use clear: left, ou clear: both se os elementos flutuantes dos dois lados precisarem ser liberados. Isso move o título para baixo dos elementos flutuantes anteriores. Sua função é diferente da de flow-root, que faz um elemento pai incluir a altura de seus filhos flutuantes.

  12. 12
    DesafioUma mudança no elemento pai remove o contorno do texto

    Você muda o elemento que envolve a foto e o texto para display: flex. O retrato flutuante deixa de fazer as linhas de texto contornarem a imagem e seguirem abaixo dela. Por quê? Como restaurar o fluxo desejado do artigo?

    ---reveal---

    O retrato agora é um item flexível, então sua flutuação não tem efeito. O parágrafo ocupa um item flexível separado. Retorne esse elemento envolvente ao fluxo normal, mantenha o retrato flutuante e use flow-root se o elemento envolvente precisar conter a imagem.

  13. 13
    RecapitulaçãoExamine o elemento pai antes de mudar o filho

    O comportamento de bloco e em linha explica o layout inicial do artigo. Display pode alterar a participação externa, o layout interno ou até a existência de uma caixa.

    Para fazer o texto contornar um retrato, mantenha o texto no fluxo normal com um elemento flutuante, contenha-o quando necessário e aplique clear às seções posteriores que devem começar abaixo dele. Quando o resultado mudar inesperadamente, inspecione o display do elemento pai e também as regras do filho.

2

Posicione emblemas e mantenha a navegação visível

14 passos
Crie uma sobreposição local, compare o comportamento fixo e aderente e depois corrija um menu oculto.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoDecida o que deve se mover junto
  2. 2
    ExplicaçãoMantenha ou remova o espaço original
  3. 3
    ExemploFaça do cartão a referência do emblema
  4. 4
    ExemploPosicione o emblema dentro do canto
  5. 5
    DesafioEscolha a referência da porcentagem
  6. 6
    ExemploFixe a ajuda à janela
  7. 7
    ExemploMantenha um título dentro de sua seção
  8. 8
    DesafioUm título não tem espaço para se mover
  9. 9
    DicaDeixe espaço abaixo de um cabeçalho fixo
  10. 10
    ExplicaçãoCompare primeiro os grupos externos
  11. 11
    ExemploCorrija o nível do ancestral
  12. 12
    DesafioUma legenda estática de grade precisa de position?
  13. 13
    DesafioUma barra de ferramentas fixa ainda fica por baixo
  14. 14
    RecapitulaçãoVerifique a referência, o espaço no fluxo e o grupo
3

Crie uma barra de ferramentas flexível e uma linha de cartões

17 passos
Acompanhe a direção, calcule crescimento e encolhimento e use alinhamento somente após o dimensionamento.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoCrie uma linha que distribui seu espaço
  2. 2
    ExplicaçãoFaça apenas os filhos diretos serem itens flexíveis
  3. 3
    ExplicaçãoMude os eixos com a direção
  4. 4
    DesafioCentralize um grupo vertical
  5. 5
    ExemploComece o cálculo do crescimento
  6. 6
    ExemploAdicione o crescimento às bases
  7. 7
    ExemploPondere o encolhimento pelo tamanho base
  8. 8
    DesafioEscolha larguras iguais ou preserve diferenças de tamanho
  9. 9
    DicaMantenha uma linha longa de código em sua área
  10. 10
    ExemploDeixe os cartões passarem para linhas independentes
  11. 11
    ExplicaçãoDistribua apenas o espaço restante
  12. 12
    ExemploAlinhe o texto dentro da linha
  13. 13
    DesafioEmpurre um grupo para a extremidade
  14. 14
    Ideia-chaveLinhas e itens têm alinhamentos diferentes
  15. 15
    DicaMantenha acessível o conteúdo centralizado grande demais
  16. 16
    DesafioUma linha centralizada não se move
  17. 17
    RecapitulaçãoEntenda o flexbox em três etapas
4

Crie um painel e uma grade automática de cartões

18 passos
Calcule trilhas, posicione um painel, adapte o número de colunas e escolha a escala de alinhamento correta.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoDê limites compartilhados a várias linhas
  2. 2
    ExplicaçãoTrilhas são os espaços entre linhas de grade
  3. 3
    ExemploSubtraia trilhas fixas e espaçamentos
  4. 4
    ExemploTransforme partes em larguras de coluna
  5. 5
    DesafioColunas percentuais ultrapassam a linha
  6. 6
    ExemploConte o limite final do painel
  7. 7
    ExplicaçãoUse nomes para regiões da página
  8. 8
    DesafioUma forma que áreas não podem expressar
  9. 9
    ConexãoCompartilhe uma célula para criar uma camada sobre a imagem
  10. 10
    ExplicaçãoDeixe novas linhas aparecerem
  11. 11
    ExemploDescubra quantas colunas mínimas cabem
  12. 12
    ExemploRecolha trilhas não usadas com auto-fit
  13. 13
    DesafioMantenha um mínimo dentro de uma caixa estreita
  14. 14
    ExplicaçãoMova um item dentro de sua área
  15. 15
    ExemploMova as colunas como um grupo
  16. 16
    DesafioPor que as partes inferiores dos cartões deixam de se alinhar?
  17. 17
    DesafioUm banner em largura total acima de cartões automáticos
  18. 18
    RecapitulaçãoSepare dimensionamento, posicionamento e alinhamento
5

Monte uma página de leitura e corrija seus pontos fracos

19 passos
Escolha métodos para a página e seus componentes e depois teste o layout com conteúdo difícil.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoConstrua da página até suas partes
  2. 2
    ExplicaçãoDê a cada método uma função concreta
  3. 3
    DesafioEscolha colunas para uma coleção de recursos
  4. 4
    ExemploLimite a largura de leitura
  5. 5
    ExemploReserve uma coluna fixa e uma flexível
  6. 6
    ExemploCrie espaço para o rodapé sem fixá-lo
  7. 7
    DicaPermita que a altura e o espaço da área de visualização mudem
  8. 8
    DesafioDeixe uma foto ser mais larga que o artigo
  9. 9
    ExemploAninhe uma barra de ferramentas flexível na grade da página
  10. 10
    ExemploMantenha a imagem e o texto equilibrados
  11. 11
    ExemploAlinhe as partes dos cartões no nível necessário
  12. 12
    ExemploDeixe um campo compartilhar uma linha com um botão
  13. 13
    DesafioCentralizar a caixa ou suas palavras?
  14. 14
    ExplicaçãoInspecione o layout que o navegador construiu
  15. 15
    ExemploAcompanhe um bloco de código largo até o layout externo
  16. 16
    DicaRevele bordas sem movê-las
  17. 17
    DesafioRedefinir a largura não é suficiente
  18. 18
    DesafioTeste a página além do exemplo
  19. 19
    RecapitulaçãoUse conteúdo real para verificar cada relação

Questões de Layout CSS

50 Questões de Prática em 5 conjuntos

Conjunto 1: Fluxo, camadas e contêineres flexíveis10 Questões de Prática

Questão 1 de 10

Um item estreito deve ficar no centro em linha de sua própria área de grade larga, sem mover as colunas. Qual propriedade deve ser aplicada a esse item?
  1. justify-content: center
  2. align-content: center
  3. text-align: center
  4. justify-self: center
Mostrar respostaOcultar resposta
Resposta: D
Justify-self posiciona um item de grade no eixo em linha dentro de sua própria área. Justify-content posiciona todo o conjunto de colunas dentro do contêiner. Text-align altera o conteúdo em linha dentro da caixa do item, então não move essa caixa para o centro da área.

Questão 2 de 10

Uma caixa de perfil contém apenas uma foto flutuante, e seu fundo não se estende ao redor da foto. Qual valor de display na caixa de perfil contém o elemento flutuante?
  1. inline
  2. contents
  3. flow-root
  4. none
Mostrar respostaOcultar resposta
Resposta: C
Flow-root cria uma região de fluxo independente cuja altura inclui seus filhos flutuantes. O elemento pai pode então desenhar seu fundo ao redor da foto. Display contents remove a caixa do elemento pai, então não pode fornecer o fundo visível e a contenção necessários nessa situação.

Questão 3 de 10

Um <span> comum em linha tem width: 180px e 10px de preenchimento interno vertical. Por que seu fundo pode se sobrepor a linhas de texto vizinhas enquanto sua largura continua ajustada ao conteúdo?
  1. A largura em linha é ignorada; o preenchimento vertical é desenhado sem ampliar o espaçamento entre linhas.
  2. A largura em linha é herdada; o preenchimento vertical colapsa com as margens vizinhas.
  3. A largura em linha define um mínimo; o preenchimento vertical retira a caixa do fluxo normal.
  4. A largura em linha reserva espaço vazio; o preenchimento vertical altera apenas a linha de base.
Mostrar respostaOcultar resposta
Resposta: A
Um span comum em linha ignora a largura, e seu preenchimento interno vertical é desenhado sem afastar as linhas ao redor. Isso permite que o fundo invada linhas próximas. O colapso de margens é uma regra para determinadas margens de bloco, então não explica o preenchimento interno vertical do span.

Questão 4 de 10

Um cabeçalho relativo com z-index: 4 contém um menu absoluto com z-index: 800. Uma área principal relativa irmã está em z-index: 5. As duas caixas externas estão no mesmo contexto de empilhamento do elemento pai. Qual mudança coloca todo o cabeçalho acima da área principal?
  1. Elevar o menu para z-index: 900.
  2. Reduzir o menu para z-index: 6.
  3. Definir o menu com position: relative.
  4. Elevar o cabeçalho para z-index: 6.
Mostrar respostaOcultar resposta
Resposta: D
O cabeçalho e a área principal criam contextos de empilhamento irmãos, comparados nos níveis 4 e 5. Elevar o cabeçalho para 6 coloca todo o seu grupo acima da área principal. Um número maior no menu permanece dentro do grupo inferior do cabeçalho e não pode mudar a ordem desses contextos externos.

Questão 5 de 10

Um parágrafo tem position: relative; top: 9px. O que acontece com a posição do parágrafo seguinte no fluxo normal?
  1. Ele também se move 9px para baixo.
  2. Ele permanece onde foi posicionado.
  3. Ele sobe para o espaço original.
  4. Ele recebe posicionamento absoluto.
Mostrar respostaOcultar resposta
Resposta: B
O posicionamento relativo move o local em que o primeiro parágrafo é desenhado enquanto preserva seu espaço original. O parágrafo seguinte mantém sua posição no fluxo normal e pode ser coberto pela caixa deslocada. Subir para o espaço ocorreria após a remoção do fluxo, como no posicionamento absoluto.

Questão 6 de 10

Uma linha flexível horizontal em inglês precisa ter seu último controle empurrado para a extremidade, enquanto os controles anteriores permanecem no início. Qual margem no último controle absorve o espaço livre antes dele?
  1. margin-inline-start: auto
  2. margin-inline-end: auto
  3. margin-block-start: auto
  4. margin-block-end: auto
Mostrar respostaOcultar resposta
Resposta: A
Uma margem automática no início em linha nessa linha absorve o espaço livre antes do último controle, empurrando-o para a extremidade. Uma margem automática no fim em linha absorve o espaço depois do controle. Margens no eixo de bloco atuam verticalmente nesse modo de escrita e não criam a separação horizontal necessária.

Questão 7 de 10

Uma linha flexível de 540px tem dois itens com bases de 240px e 480px e fatores de encolhimento 2 e 1. Não há espaçamentos, margens, bordas, preenchimento interno nem mínimos limitantes. Quais são as larguras finais?
  1. 180px e 360px
  2. 120px e 420px
  3. 150px e 390px
  4. 160px e 380px
Mostrar respostaOcultar resposta
Resposta: C
As bases totalizam 720px, então a linha precisa perder 180px. Os pesos de encolhimento são 2 vezes 240 e 1 vez 480: ambos são 480, então cada item perde 90px. Uma perda proporcional apenas ao tamanho base resultaria em 180px e 360px, mas isso ignoraria os diferentes fatores de encolhimento.

Questão 8 de 10

Uma grade de três colunas não define linhas e posiciona automaticamente oito itens comuns. Quantas linhas implícitas são necessárias?
  1. Duas linhas.
  2. Três linhas.
  3. Quatro linhas.
  4. Oito linhas.
Mostrar respostaOcultar resposta
Resposta: B
O posicionamento linha por linha coloca três itens em cada uma das duas primeiras linhas e depois os dois restantes em uma terceira. Apenas duas linhas forneceriam seis células e deixariam dois itens sem espaço. O navegador adiciona linhas implícitas conforme necessário, mesmo que nenhuma tenha sido listada no modelo.

Questão 9 de 10

O rodapé de uma página curta deve chegar à parte inferior da área de visualização e depois descer naturalmente quando o artigo crescer. Qual configuração de grade no body permite isso com cabeçalho, conteúdo principal e rodapé como filhos?
  1. height: 100dvh; grid-template-rows: auto 0 auto
  2. max-height: 100dvh; grid-template-rows: 1fr auto 1fr
  3. min-height: 100dvh; grid-template-rows: auto 1fr auto
  4. height: auto; grid-template-rows: auto auto auto
Mostrar respostaOcultar resposta
Resposta: C
Uma altura mínima da área de visualização cria espaço disponível que a linha central 1fr pode preencher em uma página curta. O mínimo também permite que a página cresça com um artigo mais longo. Uma altura fixa com uma linha central zero não consegue reservar espaço para o conteúdo crescente do artigo e pode deixá-lo transbordar para regiões vizinhas.

Questão 10 de 10

O item principal de uma página flexível contém uma linha longa de código sem quebras. As ferramentas do desenvolvedor mostram que a área principal tem min-width: auto; a página inteira rola para os lados. O código deve continuar disponível sem alargar a página. Qual correção em conjunto trata das duas caixas?
  1. Dar à área principal min-width: 0 e ao bloco de código overflow-x: auto.
  2. Dar à área principal width: 100% e ao bloco de código white-space: nowrap.
  3. Dar à área principal overflow: visible e ao bloco de código min-width: 100%.
  4. Dar à área principal flex-shrink: 0 e ao bloco de código overflow-x: hidden.
Mostrar respostaOcultar resposta
Resposta: A
O mínimo automático da área principal pode preservar a largura indivisível da linha de código, então um mínimo zero permite que o item flexível encolha. A rolagem horizontal local no bloco de código mantém toda a linha disponível dentro dessa largura. Ocultar o transbordamento do código esconderia parte do conteúdo em vez de torná-lo acessível.
Conjunto 2: Caixas, espaço e escolhas de layout10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Um diretório tem muitos cartões. Os cartões em linhas posteriores devem usar os mesmos limites de coluna que os das linhas anteriores, mesmo quando a última linha estiver incompleta. Qual método de layout expressa melhor esse requisito?
  1. Grade com trilhas de coluna compartilhadas.
  2. Flexbox com linhas flexíveis quebradas.
  3. Elementos flutuantes com larguras individuais.
  4. Blocos em linha com larguras naturais.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Uma grade de 760px tem colunas 160px 1fr 2fr e espaçamento de 15px entre colunas. Os mínimos do conteúdo não limitam as trilhas. Qual é a largura da coluna 2fr?
  1. 400px
  2. 300px
  3. 190px
  4. 380px
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Um item de grade deve cobrir as três primeiras colunas de uma grade de cinco colunas. Qual posicionamento por linhas de grade produz essa extensão?
  1. grid-column: 1 / 3
  2. grid-column: 2 / 4
  3. grid-column: 1 / 4
  4. grid-column: 1 / 5
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Dois blocos adjacentes no fluxo normal têm margens verticais positivas de 18px e 30px que se tocam. Qual é o tamanho do espaço após o colapso?
  1. 18px
  2. 30px
  3. 48px
  4. 12px
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Um link de texto comum precisa de uma largura definida enquanto permanece em uma linha de texto. Qual valor de display dá à sua caixa esse comportamento?
  1. inline
  2. block
  3. contents
  4. inline-block
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Um emblema tem posicionamento absoluto dentro de um cartão. O cartão tem position: relative e nenhuma outra regra cria um bloco de referência entre eles. Qual caixa fornece a referência dos deslocamentos do emblema?
  1. A caixa de preenchimento interno do cartão.
  2. A caixa de conteúdo do cartão.
  3. A caixa de borda do emblema.
  4. A caixa de conteúdo da área de visualização.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Um título de seção tem position: sticky, mas os quatro deslocamentos permanecem em auto. Qual declaração permite que ele adira ao topo durante a rolagem vertical?
  1. z-index: 1
  2. margin-top: 0
  3. top: 0
  4. height: auto
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Três itens flexíveis têm bases de 60px e fatores de crescimento 1, 2 e 1 em uma linha de 460px com dois espaçamentos de 20px. Nenhuma margem, preenchimento interno, borda ou limite de tamanho interfere. Quais são suas larguras finais, em ordem?
  1. 130px, 200px, 130px
  2. 120px, 180px, 120px
  3. 105px, 210px, 105px
  4. 140px, 140px, 140px
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Na propriedade abreviada flex com três valores, qual parte define o tamanho inicial do item ao longo do eixo principal?
  1. A terceira parte, flex-basis.
  2. A primeira parte, flex-grow.
  3. A segunda parte, flex-shrink.
  4. O valor align-items do elemento pai.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Cartões com textos de comprimentos diferentes formam uma linha de grade. Seus botões devem ficar alinhados na parte inferior sem alturas fixas para os cartões, e os cartões devem crescer se o texto crescer. Como a grade externa e os cartões internos devem funcionar juntos?
  1. Alinhar os cartões no início; usar colunas flexíveis e margens superiores automáticas nos botões.
  2. Esticar os cartões; usar colunas flexíveis e margens superiores automáticas nos botões.
  3. Esticar os cartões; usar linhas flexíveis e margens superiores automáticas nos botões.
  4. Esticar os cartões; usar colunas flexíveis e margens inferiores automáticas nos botões.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 3: Trilhas compartilhadas e conteúdo variável10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Uma mensagem deve ficar invisível inicialmente, mas reservar seu espaço atual para que o conteúdo seguinte não se mova quando ela aparecer. Qual valor de propriedade fornece esse comportamento?
  1. display: none
  2. display: contents
  3. position: absolute
  4. visibility: hidden
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Um artigo tem um retrato flutuante à esquerda seguido pelo título de uma nova seção. O texto pode contornar o retrato, mas o título deve começar abaixo dele. Qual regra deve ser aplicada ao título?
  1. float: left
  2. clear: left
  3. overflow: visible
  4. position: relative
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Um título aderente tem top: 0 dentro de um ancestral com overflow: auto. A página rola, mas esse ancestral não. O que deve ser inspecionado como provável motivo para o título nunca aderir à área de visualização?
  1. O ancestral com transbordamento tornou-se sua referência de rolagem.
  2. A ordem do título no código-fonte tornou-se seu nível de empilhamento.
  3. O deslocamento superior do título é medido a partir de sua própria altura.
  4. A direção flexível da página removeu o limite do posicionamento aderente.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Uma dica flutuante está dentro de um cartão estático com opacity: 0.8. O cartão está dentro de uma seção relativa em z-index: 2. Uma seção irmã sobreposta é relativa em z-index: 3. Aumentar o z-index da dica não muda nada. Qual mudança externa pode trazer toda a seção da dica para a frente?
  1. Aumentar a opacidade do cartão para exatamente 1.
  2. Elevar o nível da dica flutuante acima de 3000.
  3. Elevar a seção que a contém acima do nível 3.
  4. Elevar o próprio z-index do cartão para 4.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Uma coluna flexível vertical tem altura disponível e deve centralizar seu grupo de filhos de cima para baixo. Qual declaração no contêiner controla esse eixo?
  1. justify-content: center
  2. align-items: center
  3. justify-items: center
  4. align-self: center
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Uma grade deve ter três colunas exatamente iguais dentro de 810px, com espaçamentos de 24px, mesmo quando um item contém uma URL longa. A URL pode ser quebrada em qualquer ponto. Qual configuração conjunta trata do tamanho das trilhas e do conteúdo?
  1. Usar repeat(3, 33.33%) e overflow-wrap: anywhere no item da URL.
  2. Usar repeat(3, minmax(0, 1fr)) e overflow-wrap: anywhere no item da URL.
  3. Usar repeat(3, 1fr) e white-space: nowrap no item da URL.
  4. Usar repeat(3, minmax(270px, 1fr)) e overflow: visible no item da URL.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Um modelo usa "banner banner" "banner main" como suas duas linhas. Por que essa declaração de áreas nomeadas é inválida?
  1. O nome main precisa de pelo menos duas células.
  2. Uma área de grade não pode cruzar o limite de uma linha.
  3. Toda área deve preencher uma linha de grade inteira.
  4. As células de banner não formam um retângulo.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Três cartões usam repeat(auto-fit, minmax(180px, 1fr)) em uma grade de 860px com espaçamentos de 20px. Eles não têm restrições de tamanho nem espaçamento extra. Quantas colunas ocupadas permanecem e qual é a largura de cada uma?
  1. Quatro colunas, exatamente 200px cada.
  2. Três colunas, cerca de 286,7px cada.
  3. Três colunas, cerca de 273,3px cada.
  4. Quatro colunas, exatamente 180px cada.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Um glossário longo deve continuar para baixo em uma coluna estreita e depois passar para a próxima, como em um jornal. Qual recurso de layout CSS fornece diretamente esse fluxo de texto?
  1. Layout de grade com trilhas 1fr repetidas.
  2. Layout de múltiplas colunas com columns.
  3. Layout flexível com flex-direction: row.
  4. Posicionamento absoluto com deslocamentos iguais.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Uma imagem e sua legenda compartilham grid-area: 1 / 1. A legenda vem depois da imagem no HTML e nenhuma das duas tem z-index. Qual é desenhada por cima?
  1. A imagem é desenhada por cima.
  2. O filho mais alto é desenhado por cima.
  3. O filho mais largo é desenhado por cima.
  4. A legenda é desenhada por cima.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 4: Diagnostique posicionamento e alinhamento10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Um contêiner flexível em inglês usa row-reverse. O grupo deve ficar junto à borda esquerda, independentemente do início invertido de seu eixo principal. Qual valor de justify-content segue essa borda inicial da direção da escrita?
  1. flex-start
  2. flex-end com row
  3. start
  4. space-between
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Qual lista expandida de trilhas é produzida por repeat(2, 80px 1fr)?
  1. 80px 80px 1fr 1fr
  2. 80px 1fr 80px 1fr
  3. 160px 2fr
  4. 80px 1fr 1fr
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Uma grade tem sete cartões, quatro colunas auto-fit que cabem em sua largura e posicionamento comum linha por linha. A última linha tem uma célula vazia. Auto-fit recolhe a quarta coluna? Por quê?
  1. Não; o item da primeira linha mantém essa coluna ocupada.
  2. Sim; qualquer célula vazia recolhe toda a sua coluna.
  3. Não; auto-fit nunca recolhe colunas geradas.
  4. Sim; apenas a última linha determina a ocupação da coluna.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Duas colunas fixas de 140px estão em uma grade de 500px com um espaçamento de 20px. Nenhum outro espaçamento se aplica. Com justify-content: center, quanto espaço fica antes da primeira coluna?
  1. 110px
  2. 90px
  3. 200px
  4. 100px
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Sete cartões flexíveis têm flex: 1 1 150px em uma linha de 640px com quebra e espaçamentos de 10px. Não há margens, preenchimento interno, bordas nem limites de tamanho. Como os cartões se dividem em linhas e quais larguras as duas linhas produzem?
  1. Três e depois quatro; cerca de 206,7px e depois 152,5px.
  2. Quatro e depois três; 152,5px e depois cerca de 206,7px.
  3. Quatro e depois três; 160px nas duas linhas.
  4. Quatro e depois três; 150px e depois cerca de 213,3px.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Um cabeçalho não tem preenchimento interno nem borda. Seu primeiro filho, um título, tem uma margem superior de 22px que colapsa com o cabeçalho. O espaço aparece fora do fundo do cabeçalho. Qual mudança coloca o espaçamento dentro do cabeçalho?
  1. Manter a margem do filho e adicionar uma margem superior de 22px ao cabeçalho.
  2. Remover a margem do filho e adicionar uma margem inferior de 22px ao cabeçalho.
  3. Remover a margem do filho e adicionar preenchimento interno superior de 22px ao cabeçalho.
  4. Manter a margem do filho e definir o posicionamento do cabeçalho como relativo.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Um <ul> é um contêiner de grade. Cada <li> contém um link. Quais elementos se tornam itens de grade do <ul>?
  1. Os itens de lista que são filhos diretos.
  2. Os links dentro dos itens de lista.
  3. Os itens de lista e seus links.
  4. Os irmãos do contêiner da lista.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Um cartão posicionado tem largura de conteúdo de 280px, preenchimento interno de 18px de cada lado e borda de 2px. Ele usa content-box. Um filho absoluto tem width: 50% e right: 12px, sem preenchimento interno, borda ou margem próprios. Qual é a largura do filho e a distância de sua borda esquerda até a borda esquerda do preenchimento interno do cartão?
  1. 140px de largura; borda esquerda a 128px.
  2. 160px de largura; borda esquerda a 148px.
  3. 158px de largura; borda esquerda a 158px.
  4. 158px de largura; borda esquerda a 146px.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Uma barra lateral aderente compartilha uma linha alta de grade com um artigo. Ela tem top: 12px, nenhuma altura fixa e o esticamento padrão; preenche a linha e não se move visivelmente. Nenhum transbordamento em ancestrais interfere. Qual mudança cria espaço para que ela adira enquanto permanece no fluxo?
  1. Definir justify-self: start na barra lateral.
  2. Definir align-self: start na barra lateral.
  3. Definir position: absolute na barra lateral.
  4. Definir z-index: 12 na barra lateral.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Uma caixa usa width: 100%, 14px de preenchimento interno à esquerda e à direita e box-sizing: content-box, sem borda. A largura de conteúdo de seu elemento pai é 390px. Por que essa caixa ultrapassa o elemento pai?
  1. Sua largura de conteúdo de 390px recebe mais 28px de preenchimento interno.
  2. Sua largura de conteúdo é reduzida para 362px pelo preenchimento interno.
  3. Seu preenchimento interno substitui as margens externas do elemento pai.
  4. Sua largura é medida a partir da borda da área de visualização.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 5: Combine as regras em novos layouts10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Uma grade de artigo usa 1fr min(65ch, 100% - 32px) 1fr. Em sua fonte atual, 1ch é 8px. Para larguras de conteúdo de 480px e 900px, quais são as larguras da trilha central e qual posicionamento faz uma foto ocupar toda a largura?
  1. 480px e 520px; grid-column: 1 / -1.
  2. 448px e 868px; grid-column: 2.
  3. 448px e 520px; grid-column: 1 / -1.
  4. 520px e 520px; grid-column: 1 / 3.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Uma grade tem seis colunas explícitas e quatro linhas explícitas. Um painel usa grid-column: 2 / -1; grid-row: 2 / span 2. Quantas células ele cobre?
  1. 8 células
  2. 12 células
  3. 15 células
  4. 10 células
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Qual propriedade abreviada de grade centraliza cada item nos dois eixos dentro de sua área?
  1. place-content: center
  2. place-items: center
  3. text-align: center
  4. justify-content: center
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Uma imagem e um parágrafo são filhos diretos de um elemento pai que passou do fluxo normal para display: flex. A imagem ainda tem float: left, mas as linhas inferiores do parágrafo não passam mais para baixo dela. Como restaurar o contorno normal do texto ao redor da imagem?
  1. Manter flex e adicionar clear: both ao parágrafo.
  2. Manter flex e aumentar a margem esquerda da imagem flutuante.
  3. Manter flex e atribuir flex-grow: 1 ao parágrafo.
  4. Retornar o elemento pai ao fluxo normal e manter a imagem flutuante.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Um botão fixo de ajuda fica dentro de um painel transformado que sai da tela durante a rolagem. Nenhum outro ancestral altera a referência do posicionamento fixo. Um cabeçalho fixo separado de 72px também cobre destinos de links da mesma página. O botão deve permanecer preso à área de visualização, e os destinos devem ficar visíveis abaixo do cabeçalho. Qual par de mudanças trata das duas referências?
  1. Elevar o z-index do botão; adicionar margin-bottom de 72px ao cabeçalho fixo.
  2. Tornar o botão aderente no painel; adicionar padding-bottom de 72px ao html.
  3. Mover o botão para fora do painel transformado; adicionar scroll-padding-top de 72px ao html.
  4. Dar top: 0 ao botão; adicionar border-bottom de 72px aos destinos dos links.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Dois painéis relativos compartilham um contexto de empilhamento pai: A tem z-index 1, B tem z-index 2. A contém um componente isolado com uma decoração de nível negativo e um menu com z-index 100. O menu deve aparecer acima de B, enquanto a decoração permanece atrás do texto de seu componente. Qual mudança atende aos dois objetivos?
  1. Elevar A acima de 2 e manter o componente isolado.
  2. Elevar o menu acima de 200 e remover o isolamento do componente.
  3. Manter A em 1 e elevar o componente isolado acima de 2.
  4. Remover o posicionamento do menu e manter os níveis dos dois painéis.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Os links de uma linha flexível estão em uma sequência coerente no HTML, mas order: -1 move visualmente o último link para o início. Quais sequências o foco normal do teclado e a leitura por leitor de tela seguem?
  1. Somente o foco segue a ordem visual.
  2. Ambos seguem a sequência do HTML.
  3. Somente a leitura segue a ordem visual.
  4. Ambos seguem a sequência visual.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Três itens flexíveis de 80px que não crescem estão em uma linha de 500px em inglês com espaçamentos de 20px. O terceiro tem margin-inline-start: auto, e o contêiner tem justify-content: center. Nenhum outro espaçamento se aplica. A que distância da borda esquerda do conteúdo começa o terceiro item?
  1. 420px
  2. 280px
  3. 310px
  4. 400px
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Uma coleção de cartões precisa ter títulos, descrições e rodapés alinhados entre os cartões. Cada cartão tem esses três filhos diretos, mas sua grade atual de linhas independentes não consegue alinhar seus limites aos dos cartões vizinhos. Qual relação deve substituir esse dimensionamento independente de linhas?
  1. Cada cartão ocupa três colunas do elemento pai e as adota com subgrade de colunas.
  2. Cada cartão ocupa uma linha do elemento pai e dá ao rodapé uma margem superior automática.
  3. Cada cartão ocupa uma célula do elemento pai e define as três linhas filhas como 1fr.
  4. Cada cartão ocupa três linhas do elemento pai e as adota com subgrade de linhas.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Uma caixa de 210px começa a 150px da borda esquerda da área de visualização. A área de visualização tem 340px de largura. Quanto a borda direita da caixa ultrapassa a borda direita da área de visualização?
  1. 20px
  2. 60px
  3. 130px
  4. 150px
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Travou em uma questão sua? Ajuda com Tarefas

Termos-Chave

86 Termos-Chave, cada um com sua definição

Á

Área de grade
Uma área de grade é uma região retangular de uma ou mais células de grade que pode conter ou delimitar o posicionamento de um item.
Em um painel organizado como grade, a área de grade de um gráfico ocupa três colunas e duas linhas.
Área de visualização
A área de visualização é a área visível da janela pela qual um documento é visto, normalmente usada como referência para o posicionamento fixo.
O controle para voltar ao topo permanece a 18px da borda inferior da área de visualização enquanto o documento rola.
Área nomeada
Uma área nomeada é uma região retangular de grade descrita em strings de áreas do modelo e atribuída a um item com grid-area.
Em um modelo de duas colunas, a área nomeada do cabeçalho se repete nas duas células da linha superior para que o cabeçalho ocupe toda a página.

A

Alinhamento do conteúdo
O alinhamento do conteúdo posiciona as trilhas de grade ou linhas flexíveis como um grupo dentro de seu contêiner quando há espaço disponível.
O alinhamento do conteúdo move três colunas fixas em direção ao centro do contêiner de grade como um grupo.
Alinhamento dos itens
O alinhamento dos itens posiciona cada item flexível ou de grade dentro do espaço atribuído a ele, como uma área de grade ou linha flexível.
O alinhamento de itens de grade pode centralizar um cartão estreito dentro de sua trilha sem mover a própria trilha.
Alinhamento pela linha de base
O alinhamento pela linha de base posiciona itens com texto de modo que suas linhas de base fiquem alinhadas, apesar de diferenças no tamanho da fonte ou na altura da caixa.
O alinhamento pela linha de base faz um pequeno rótulo da barra de ferramentas ficar alinhado naturalmente ao lado de um título maior.
Altura dinâmica da área de visualização
A altura dinâmica da área de visualização é a altura visível variável da área de visualização representada por dvh conforme os controles do navegador aparecem ou desaparecem.
A altura dinâmica da área de visualização ajuda uma seção móvel em tela cheia a se ajustar enquanto a barra de endereços está visível.

B

Bloco de referência
Um bloco de referência é o retângulo usado para calcular tamanhos ou deslocamentos de uma caixa segundo as regras de layout aplicáveis.
O cartão relativo fornece o bloco de referência do emblema absoluto nas bordas de seu preenchimento interno.
Bloco em linha
Um bloco em linha é uma caixa que permanece em uma linha de texto enquanto aceita largura, altura e espaçamento vertical da caixa.
Um link de navegação estilizado como bloco em linha pode ter um alvo de clique maior com preenchimento interno.

C

Caixa de bloco
Uma caixa de bloco começa uma nova linha de bloco e normalmente preenche a largura disponível quando sua largura é automática.
Um parágrafo continua sendo uma caixa de bloco mesmo quando sua largura é reduzida para 280px.
Caixa em linha
Uma caixa em linha participa de uma linha de texto e passa para outra linha com o texto em vez de ocupar uma linha de bloco inteira.
O link é uma caixa em linha dentro da frase, então as palavras ao redor compartilham sua linha.
Célula de grade
Uma célula de grade é o espaço onde uma linha de grade cruza uma coluna de grade, delimitado pelas linhas de grade ao redor.
Uma legenda e uma imagem podem compartilhar uma célula de grade para criar uma sobreposição sem posicionamento absoluto.
Colapso de margens
O colapso de margens combina certas margens verticais de blocos que se tocam em uma única margem no fluxo normal.
O colapso de margens faz uma margem inferior de 20px e uma margem superior de 36px deixarem um espaço de 36px.
Coluna de conteúdo
Uma coluna de conteúdo é uma região de largura limitada para conteúdo de página legível, frequentemente centralizada com margens automáticas em linha e preenchimento interno lateral.
A coluna de conteúdo centralizada para de se expandir em telas largas enquanto mantém o preenchimento interno em telas estreitas.
Contêiner de grade
Um contêiner de grade é uma caixa cujo tipo de exibição de grade organiza seus filhos diretos usando trilhas compartilhadas de linhas e colunas.
O contêiner de grade do painel define colunas que permanecem alinhadas em várias linhas de painéis.
Contêiner flexível
Um contêiner flexível é uma caixa cujo tipo de exibição flexível organiza seus filhos diretos como itens flexíveis ao longo de um eixo principal.
A navegação se torna um contêiner flexível, enquanto sua lista aninhada de links pode ter seu próprio layout.
Conteúdo em largura total
Conteúdo em largura total é aquele que se estende além de uma coluna de texto mais estreita para preencher a largura disponível do layout ao redor.
Uma foto ocupa toda a largura da grade do artigo enquanto os parágrafos permanecem em sua trilha central.
Contexto de empilhamento
Um contexto de empilhamento é um grupo de caixas desenhado como uma unidade quando comparado a outros grupos no contexto ao redor.
O contexto de empilhamento do cabeçalho permanece abaixo da área principal mesmo que seu menu tenha um nível interno muito alto.
Contexto de formatação de bloco
Um contexto de formatação de bloco é uma região de fluxo independente que contém seus elementos flutuantes e separa suas margens das margens dos filhos.
Quando uma caixa de perfil contém uma foto flutuante, seu contexto de formatação de bloco faz o fundo se estender ao redor dessa foto.

D

Direção em linha
A direção em linha é a direção em que o texto segue dentro de uma linha, como da esquerda para a direita em inglês ou da direita para a esquerda em árabe.
Uma margem automática no início da direção em linha passa para o lado direito quando o texto está em árabe.

E

Eixo principal
O eixo principal é a direção em que um contêiner flexível organiza seus itens, determinada por flex-direction.
Com direção de coluna, o eixo principal segue na vertical e justify-content distribui a altura disponível.
Eixo transversal
O eixo transversal é a direção perpendicular ao eixo principal de um contêiner flexível, usada para o alinhamento transversal de itens e linhas.
Em uma linha flexível em inglês, o eixo transversal segue na vertical, então align-items pode centralizar controles baixos.
Elemento flutuante
Um elemento flutuante é uma caixa movida para um lado de um contêiner para que o conteúdo em linha seguinte possa contorná-la.
Um elemento flutuante à esquerda permite que as primeiras linhas do artigo sigam ao lado do retrato antes de voltarem à largura total.
Elemento posicionado
Um elemento posicionado tem um valor computado de position diferente de static, permitindo que deslocamentos de posição se apliquem a ele.
Um elemento com posicionamento relativo pode fornecer a caixa de referência para um emblema sem se mover.
Espaçamento entre itens ou trilhas
A propriedade gap define o espaçamento entre itens ou trilhas de layout; ela não cria preenchimento interno ao redor da parte externa do contêiner.
Um espaçamento de 12px mantém os controles da barra de ferramentas separados sem adicionar 12px ao redor de suas bordas externas.
Espaço livre
O espaço livre é o espaço restante no eixo principal depois que os tamanhos iniciais dos itens flexíveis e os espaçamentos são subtraídos do contêiner.
Uma barra de ferramentas com 120px restantes após a contagem de suas bases e espaçamentos dá esse espaço livre aos seus controles em crescimento.
Exibição desativada
A exibição desativada é uma configuração de display que remove um elemento e seus descendentes do layout, sem reservar espaço para suas caixas.
Usar display none para uma mensagem fechada remove o espaço que a mensagem visível ocuparia.
Extensão
Uma extensão no posicionamento em grade especifica quantas trilhas um item atravessa a partir de um limite ou de uma posição escolhida automaticamente.
A declaração grid-column: 2 / span 3 dá ao painel uma extensão de três trilhas de coluna.

F

Flexbox
O flexbox é um método de layout que distribui espaço entre itens ao longo de uma linha ou coluna principal, com cada linha quebrada dimensionada independentemente.
O flexbox permite que controles curtos e longos de uma barra de ferramentas compartilhem uma linha antes de passar para outra quando o espaço é limitado.
Fluxo normal
O fluxo normal é a organização padrão das caixas pelo navegador na ordem do código-fonte, com blocos empilhados e conteúdo em linha dividido em linhas.
No fluxo normal, adicionar outro parágrafo move os parágrafos posteriores para baixo conforme seu texto cresce.
Função minmax()
A função minmax() dá a uma trilha de grade um tamanho mínimo e um máximo, combinando um limite inferior com espaço para crescer.
Minmax com mínimo zero permite que uma coluna igual às outras permaneça estreita enquanto seu texto longo é quebrado dentro dela.

G

Grade de formulário
Uma grade de formulário usa trilhas compartilhadas para conteúdo de formulário, como uma coluna para rótulos e outra para seus campos.
Uma grade de formulário alinha os campos mesmo quando um rótulo é muito mais longo que os das outras linhas.
Grade explícita
A grade explícita consiste nas trilhas e nos limites definidos pelo modelo de grade, incluindo suas áreas nomeadas.
A linha -1 marca o fim da grade explícita, mesmo quando o posicionamento cria mais trilhas além dela.
Grade implícita
A grade implícita consiste em trilhas adicionais geradas quando o posicionamento precisa de espaço além das trilhas definidas explicitamente.
A lista de produtos adiciona linhas de grade implícitas à medida que novos cartões chegam, sem alterar seu modelo de colunas.
Grupo de entrada
Um grupo de entrada combina um campo com controles relacionados, frequentemente usando um campo flexível e um botão de tamanho natural em uma linha.
O grupo de entrada de pesquisa permite que o campo encolha enquanto mantém seu botão de envio dentro do contêiner.

I

Isolamento
O isolamento é um controle CSS cujo valor isolate cria um contexto de empilhamento local sem alterar a opacidade ou a posição da caixa.
O isolamento mantém uma camada decorativa de nível negativo de um cartão acima de seu fundo e abaixo de seu texto.
Item de grade
Um item de grade é uma caixa filha direta no fluxo de um contêiner de grade, posicionada automática ou explicitamente em trilhas de grade.
Um cartão é um item de grade mesmo quando usa seu próprio layout flexível para organizar seu título e botão.
Item flexível
Um item flexível é uma caixa filha direta no fluxo que participa do layout flexível de seu elemento pai, com regras flexíveis de dimensionamento e alinhamento.
Cada cartão é um item flexível da linha externa e também pode organizar seu próprio conteúdo como uma coluna.

L

Layout aninhado
Um layout aninhado é uma organização interna cujo contêiner é um item em um layout externo, permitindo combinar métodos.
A grade da página e a coluna flexível de cada cartão formam um layout aninhado com funções externas e internas separadas.
Layout bidimensional
Um layout bidimensional controla linhas e colunas em conjunto para que os itens possam compartilhar limites nas duas direções, como na grade.
Um painel precisa de um layout bidimensional para alinhar quadros tanto entre linhas quanto ao longo de colunas.
Layout de múltiplas colunas
O layout de múltiplas colunas continua um fluxo de conteúdo por colunas de texto sucessivas, usando uma quantidade ou uma largura preferencial de coluna.
O layout de múltiplas colunas permite que um glossário longo continue pela primeira coluna antes de entrar na segunda.
Layout unidimensional
Um layout unidimensional organiza itens principalmente ao longo de um eixo, com linhas quebradas tratadas independentemente, como no flexbox.
Uma barra de ferramentas com quebra usa um layout unidimensional porque cada linha divide apenas sua própria largura disponível.
Linha de grade
Uma linha de grade é um limite entre ou ao redor de trilhas de grade, identificado por um número ou nome para posicionar itens.
A linha de grade 4 é o limite final quando um item ocupa as três primeiras colunas a partir da linha 1.
Linha nomeada
Uma linha nomeada é um limite de grade com um nome, declarado em uma lista de trilhas ou gerado a partir de uma área nomeada.
A linha nomeada main-start permite que outro painel compartilhe o limite inicial da área de conteúdo principal.

M

Margem automática
Uma margem automática absorve o espaço disponível em seu lado de um item, permitindo separação flexível ou centralização em um layout.
Uma margem automática depois do logotipo consome a largura disponível e mantém os links de navegação na outra extremidade.

O

Objeto de mídia
Um objeto de mídia é um padrão de componente com uma imagem ao lado de texto flexível, como em uma linha de perfil, comentário ou produto.
O objeto de mídia mantém um avatar de 64px ao lado de uma mensagem, enquanto a mensagem usa a largura restante.
Ordem de empilhamento
A ordem de empilhamento é a ordem em que caixas sobrepostas são desenhadas, determinando quais partes visíveis aparecem na frente.
A legenda posterior aparece acima da imagem até que uma regra de z-index altere sua ordem de empilhamento.

P

Padrão de rodapé no fim da página
Um padrão de rodapé no fim da página mantém o rodapé na parte inferior de uma página curta e permite que ele venha após conteúdo mais longo no fluxo normal.
O padrão de rodapé no fim da página usa uma linha principal flexível em vez de retirar o rodapé do fluxo.
Palavra-chave auto-fill
A palavra-chave auto-fill é uma palavra-chave de repetição automática que cria tantas trilhas quantas couberem e mantém as trilhas repetidas mesmo quando estão vazias.
Auto-fill deixa uma última coluna não usada ao lado de uma linha curta de cartões em vez de esticar os cartões para ocupá-la.
Palavra-chave auto-fit
A palavra-chave auto-fit é uma palavra-chave de repetição automática que recolhe trilhas repetidas vazias e seus espaçamentos depois que os itens são posicionados.
Auto-fit permite que três colunas flexíveis de cartões se expandam quando uma quarta coluna gerada não tem nenhum item.
Posicionamento absoluto
O posicionamento absoluto remove uma caixa do fluxo normal e a posiciona usando deslocamentos a partir de seu bloco de referência.
O posicionamento absoluto coloca o emblema a 10px das bordas superior e direita do preenchimento interno do cartão.
Posicionamento aderente
O posicionamento aderente mantém uma caixa no fluxo e depois a mantém em um limite de deslocamento enquanto ela se move dentro de seu bloco de referência.
O posicionamento aderente mantém os cabeçalhos de tabela visíveis até que a tabela alcance o fim de sua região de rolagem.
Posicionamento automático
O posicionamento automático atribui itens de grade sem posição definida a células disponíveis, normalmente na ordem do código-fonte ao longo das linhas, adicionando trilhas conforme necessário.
O posicionamento automático coloca o sétimo cartão em uma terceira linha quando a grade tem três colunas.
Posicionamento fixo
O posicionamento fixo remove uma caixa do fluxo e normalmente a posiciona em relação à área de visualização enquanto o documento rola.
O posicionamento fixo mantém o botão de ajuda no canto da janela, a menos que um ancestral adequado altere sua referência.
Posicionamento relativo
O posicionamento relativo desloca o local em que uma caixa é desenhada enquanto mantém seu espaço original no fluxo normal.
O posicionamento relativo move o rótulo para baixo sem mover o parágrafo seguinte.
Preenchimento denso
O preenchimento denso preenche lacunas anteriores em uma grade com itens menores que aparecem depois, podendo alterar sua sequência visível.
O preenchimento denso pode mover uma imagem pequena de galeria para uma lacuna acima de uma imagem grande anterior.
Propriedade abreviada flex
A propriedade abreviada flex combina grow, shrink e basis, nessa ordem, para descrever o dimensionamento flexível de um item no eixo principal.
A propriedade abreviada flex 0 0 180px dá a uma barra lateral uma base de 180px sem crescimento ou encolhimento.
Propriedade abreviada place-items
A propriedade abreviada place-items define align-items e justify-items em conjunto, tornando conciso o alinhamento de itens nos dois eixos da grade.
Place-items definido como center centraliza uma caixa curta de boas-vindas dentro da área de grade da seção de destaque.
Propriedade align-content
A propriedade align-content distribui linhas flexíveis no eixo transversal ou linhas de grade no eixo de bloco quando há espaço disponível.
Align-content pode centralizar uma linha flexível em um contêiner com quebra, mas não tem efeito quando o contêiner usa nowrap.
Propriedade align-items
A propriedade align-items define o alinhamento dos itens no eixo transversal do flexbox ou no eixo de bloco da grade dentro da área de cada item.
Align-items definido como baseline alinha um rótulo da barra de ferramentas com a primeira linha de texto de um título maior.
Propriedade align-self
A propriedade align-self substitui a escolha de alinhamento de itens do elemento pai para um item flexível ou de grade em seu eixo de alinhamento.
Align-self definido como start impede que uma barra lateral de grade se estique para preencher uma linha alta de artigo.
Propriedade clear
A propriedade clear move uma caixa no fluxo normal para baixo dos elementos flutuantes anteriores no lado selecionado ou nos dois lados.
Definir clear como both faz o título da próxima seção começar abaixo da imagem flutuante do artigo.
Propriedade flex-basis
A propriedade flex-basis fornece o tamanho inicial de um item flexível no eixo principal antes que o crescimento ou encolhimento distribua o espaço.
Um flex-basis de 180px fornece a largura inicial do cartão mesmo quando sua propriedade width é 140px.
Propriedade flex-grow
A propriedade flex-grow dá a um item uma parte relativa do espaço livre positivo depois que as bases flexíveis e os espaçamentos são considerados.
Um valor de flex-grow igual a 2 dá a um cartão o dobro do espaço adicionado a um cartão vizinho com valor 1.
Propriedade flex-shrink
A propriedade flex-shrink controla a perda de espaço usando um peso igual ao fator de encolhimento multiplicado pelo tamanho base do item.
Dois fatores flex-shrink iguais podem retirar quantidades diferentes de pixels quando os cartões têm bases diferentes.
Propriedade inset
A propriedade abreviada inset define os deslocamentos de posição top, right, bottom e left em uma única declaração.
Uma sobreposição absoluta de tamanho automático com inset definido como zero preenche seu bloco de referência.
Propriedade justify-content
A propriedade justify-content distribui o espaço restante no eixo principal no flexbox ou alinha colunas de grade ao longo do eixo em linha.
Justify-content centraliza um grupo flexível apenas quando o dimensionamento e as margens automáticas deixam espaço ao redor dele.
Propriedade justify-self
A propriedade justify-self alinha um item de grade no eixo em linha dentro de sua própria área; ela não alinha itens flexíveis individualmente.
Justify-self definido como end move um emblema de grade para o fim em linha de sua área sem afetar os itens vizinhos.
Propriedade scroll-padding-top
A propriedade scroll-padding-top reserva espaço superior na área de visualização dos destinos de uma caixa de rolagem, útil abaixo de cabeçalhos fixos.
Scroll-padding-top na página ajuda um link de seção a trazer seu título para uma posição visível abaixo da barra de navegação.
Propriedade z-index
A propriedade z-index define um nível de empilhamento para uma caixa posicionada ou um item flexível ou de grade dentro de seu contexto de empilhamento.
Um z-index alto em um menu suspenso ainda não consegue elevá-lo acima de um contexto irmão mais alto de seu contexto ancestral.

Q

Quebra de linha dos itens flexíveis
A quebra de linha dos itens flexíveis permite que os itens passem para outras linhas flexíveis quando a linha atual não comporta seus tamanhos iniciais.
A quebra de linha dos itens flexíveis permite que uma lista de etiquetas passe para uma segunda linha, enquanto cada linha divide seu próprio espaço.

R

Refluxo
Refluxo é a adaptação do conteúdo a uma largura de visualização menor para que ele permaneça utilizável sem rolagem desnecessária em duas direções.
A verificação de refluxo em 320 pixels CSS revela um painel de largura fixa que empurra a página para o lado.

S

Sobreposição
Uma sobreposição é uma caixa desenhada sobre outro elemento, criada com áreas de grade sobrepostas ou camadas posicionadas.
A legenda da imagem forma uma sobreposição ao compartilhar a célula da imagem e aparecer depois no HTML.
Sobreposição de inspeção do layout
Uma sobreposição de inspeção do layout é um desenho das ferramentas do desenvolvedor que revela as trilhas e linhas de uma grade ou a organização dos itens de um contêiner flexível.
A sobreposição de inspeção do layout revela um item flexível principal que ficou mais largo que sua parte do espaço ao lado de uma barra lateral.
Subgrade
Uma subgrade permite que uma grade aninhada adote as trilhas de seu elemento pai em um eixo para que partes internas possam se alinhar entre componentes vizinhos.
Uma subgrade de linhas dá a cartões vizinhos limites compartilhados para título, descrição e rodapé.

T

Tamanho mínimo automático
Um tamanho mínimo automático pode manter um item flexível ou uma trilha de grade grande o suficiente para conteúdo sem quebras, impedindo o encolhimento esperado.
O tamanho mínimo automático de uma linha de código longa e sem quebras pode fazer o item flexível que a contém ficar mais largo que a parte disponível para ele.
Técnica clearfix
A técnica clearfix é uma técnica antiga de contenção de elementos flutuantes que adiciona um pseudoelemento com clear após o conteúdo de um contêiner.
Uma folha de estilo antiga usa a técnica clearfix para que a próxima seção não suba para ficar ao lado de uma linha de caixas flutuantes.
Tipo de exibição externo
O tipo de exibição externo controla como uma caixa gerada participa do layout de seu elemento pai, por exemplo, com posicionamento de bloco ou em linha.
Um botão inline-flex tem tipo de exibição externo em linha, então pode ficar dentro de uma linha de texto.
Tipo de exibição interno
O tipo de exibição interno controla como uma caixa organiza seus próprios filhos, usando um método como fluxo normal, flexbox ou grade.
Mudar o tipo de exibição interno de um painel para grid organiza seus filhos diretos em trilhas.
Transbordamento
Transbordamento é o conteúdo que se estende além da área atribuída a uma caixa e que pode ficar visível, ser recortado ou permitir rolagem por meio de CSS.
A linha longa de código causa transbordamento horizontal que pode ser mantido dentro de um bloco de código com rolagem local.
Trilha de grade
Uma trilha de grade é uma linha ou coluna delimitada por duas linhas de grade vizinhas, com tamanho controlado pelas regras de dimensionamento da grade.
Uma trilha de grade fixa de 180px contém a barra lateral, enquanto a trilha fracionária adjacente ocupa o restante.

U

Unidade ch
A unidade ch mede a largura do dígito 0 na fonte atual, fornecendo um limite aproximado baseado em caracteres para larguras de texto.
Usar a unidade ch em uma coluna de texto de 65ch limita sua largura sem contar as letras reais.
Unidade fr
A unidade fr representa uma parte do espaço da grade restante após trilhas fixas e espaçamentos, sujeita às restrições de dimensionamento das trilhas.
Uma coluna que usa a unidade fr recebe espaço flexível depois que a barra lateral e os espaçamentos entre colunas são subtraídos.

V

Valor computado
Um valor computado é o valor CSS resolvido mostrado pelas ferramentas do desenvolvedor, útil para verificar as regras que realmente afetam um elemento.
O valor computado de display mostra que o elemento pai passou a ser flexível mesmo que uma regra anterior tenha declarado block.
Valor flow-root
O valor flow-root é um valor de display que cria uma caixa de bloco com sua própria região de fluxo independente, contendo filhos flutuantes.
Flow-root em um elemento que envolve o perfil e contém uma foto flutuante mantém a borda desse elemento ao redor dessa foto.
Visibilidade oculta
A visibilidade oculta é uma configuração de visibility que esconde uma caixa enquanto preserva o espaço que ela ocupa no layout.
Visibility hidden reserva espaço para a mensagem de status, então revelá-la não precisa mover o texto seguinte.

Sobre esta aula

Por StudeliRelatar um erro

Crie seus próprios Materiais de Estudo

Transforme suas anotações, slides e documentos em Guias de Estudo, Questões de Prática, Flashcards e mais 6 ferramentas.

Começar