1
resposta

Motivação para definir como melhor técnica

Olá a todos. Minhas dúvida é em cima da atividade de escolha única. No ponto 8 do capítulo 3 do curso, é requisitado que assinale a opção correta com a seguinte colocação: "Qual a melhor técnica para alinhar uma div ao centro?"

Está sendo colocado que a opção de cálculo automático de margem é a melhor técnica, entendo que é um curso 'inicial' e foi a técnica apresentada, porém a rotulação como a melhor técnica pode fazer com que o desenvolvedor guarde esse conceito por muito tempo em sua carreira. Então estou dividindo meu questionamento em duas partes:

  1. Caso realmente seja considerada como a melhor técnica dentre as várias existentes, eu queria saber o porque.
  2. Caso não seja considerada como a melhor dentre todas, faz sentido a minha preocupação com o termo a melhor? Neste caso eu aceitaria indicações de leitura sobre quais técnicas usar dependendo do que se deseja fazer e se existe de fato a melhor técnica.
1 resposta

Olá, Elmar! Tudo bem?

Entendo sua preocupação, e é complicado afirmar sem sombra de dúvidas ser a melhor porque depende do contexto.

Mas, eu diria que há três maneiras de alinhar algo em CSS de forma "limpa":

  • Usando margin como auto;
  • Usando Flexbox;
  • Usar o text-align: center.

Logo de cara, temos o Flexbox, que é algo que o curso não cobriu. Mas basicamente, usando o Flexbox em algum container, seu layout pode ficar mais fluído, e você pode inclusive escolher como organizar seu espaçamento entre itens de um Flexbox.

Você vai ver muito o uso dessa solução em front-end, e ela é excelente. Porém, ela pode ser muito exagerada quando se quer uma solução simples. Isso porque precisamos definir como flex o display e depois definir o comportamento. Quando é necessária uma solução mais refinada, sem sombra de dúvidas Flexbox é a única resposta certa para a melhor maneira de centralizar.

O text-align: center é muito bom, mas o próprio o nome pode confundir, além das suas limitações. Ele é menos usado, e mais específico.

No fim das contas, o margin: auto é a forma rápida de centralizar uma div com CSS. Veja que é apenas uma linha, e de total responsabilidade do navegador (é ele que irá calcular a margem necessária). Talvez a legibilidade dele não seja ideal (pois não diz explicitamente que é uma centralização), mas o mercado já é muito acostumado com essa solução.

Resumindo, eu diria que margin: auto é a melhor solução por convenção. É como os desenvolvedores se acostumaram a fazer.

A outra maneira muito utilizada é com o Flexbox, como eu disse, mas geralmente nesses casos a motivação é maior do que centralizar um item horizontalmente, justamente porque o Flexbox é muito mais poderoso. Você pode ver mais sobre no nosso curso de Flexbox.

Infelizmente não encontrei muito conteúdo sobre como tomar essa decisão, mas tem esses dois artigos em inglês:

Espero ter ajudado, e bons estudos! Qualquer coisa, estamos por aqui!