Por que a tag <center> está obsoleta no HTML?

202

Estou curioso para saber por que a <center>tag em HTML foi descontinuada.

O <center>foi uma maneira simples de forma rápida centro-alinhar blocos de texto e imagens, encapsulando o recipiente em um<center> tag, e eu realmente não consigo encontrar nenhuma maneira mais simples sobre a forma de fazê-lo agora.

Alguém sabe alguma maneira simples de como centralizar "coisas" (não a margin-left:auto; margin-right:auto;coisa e largura), algo que substitui <center>? E também, por que foi preterido?

Andreas Grech
fonte

Respostas:

232

O <center>elemento foi descontinuado porque define a apresentação de seu conteúdo - não descreve seu conteúdo.

Um método de centralização é definir as propriedades margin-lefte margin-rightdo elemento e auto, em seguida, definir a text-alignpropriedade do elemento pai como center. Isso garante que o elemento seja centralizado em todos os navegadores modernos.

Jordan Ryan Moore
fonte
7
Sim, CSS tem tudo a ver com dividir apresentação e dados.
Ivan Nevostruev 25/11/2009
3
Ivan, CSS é tudo sobre apresentação; não se trata de divisão - como demonstram os atributos de estilo embutido em algumas respostas aqui! É claro que é uma idéia muito boa usar classes sensíveis e não CSS embutido, mas esse é um conceito distinto para usar CSS para apresentação.
22310 Peter Boughton
15
Eu tive alguns casos (dos quais não me lembro) em que definir o elemento margine text-alignnão centralizar meu elemento no IE, mas envolvê-lo com <center>o trabalho funcionou ... vou tentar encontrar um exemplo.
Mottie
12
o truque de margem automática funciona apenas para elementos no nível do bloco. use display: block;em um elemento embutido.
23410 Steve Graham
88
Tenho certeza de que as dezessete divs aninhadas em um modelo WP ou Drupal típico realmente ajudam a separar os detalhes da apresentação: P </troll> (<- olhe, tag semântica!)
detly
17

De acordo com o W3Schools.com ,

O elemento central foi descontinuado no HTML 4.01 e não é suportado no XHTML 1.0 Strict DTD.

A especificação do HTML 4.01 fornece esse motivo para descontinuar a tag:

O elemento CENTER é exatamente equivalente a especificar o elemento DIV com o atributo align definido como "center".

Conrad Meyer
fonte
14
I assim desejo que este era realmente verdade.
badp
61
Isso é realmente verdade, mas atribute align do DIV também está obsoleta: D
Oleh Prypin
22
Observe que o w3schools não é o W3C.
showdev 5/09/13
4
"O elemento CENTER é exatamente equivalente a especificar o elemento DIV com o atributo de alinhamento definido como" center "." exceto que é claro olhando para a tag que está centralizada. Se esse fosse um motivo válido, poderíamos privar <strong>, <b>, todas as <h> e outras tags e dizer que fazem a mesma coisa que <span> com alguns css. além disso, o XHTML nem reconhece tags HTML5, como canvas. Só é preterido por causa da guerra contra tendas, centros, mesas, molduras puramente religiosas, pois todos eles têm um lugar.
Dmitry
2
@Dmitry <strong> e <h> têm significado semântico que vai além do estilo visual. Eu acho que se o <center> ainda estivesse por perto, você poderia estilizá-lo com CSS, por exemplo, para tornar seu conteúdo justificado.
Nick Rice,
16

O que faço é executar tarefas comuns, como centralizar ou flutuar, e criar classes CSS a partir delas. Quando faço isso, posso usá-los em qualquer uma das páginas. Também posso chamar quantos quiser no mesmo elemento.

.text_center {text-align: center;}
.center {margin: auto 0px;}
.float_left {float: left;}

Agora eu posso usá-los no meu código HTML para executar tarefas simples.

<p class="text_center">Some Text</p>
Scott Radcliff
fonte
12

Eu ainda uso a tag <center> algumas vezes porque nada no CSS funciona tão bem. Exemplos de tentativa de usar um truque <div> e falha:

<div style="text-align: center;">This div is centered, but it's a simple example.</div>
<br />
<div style="text-align: center;"><table border="1"><tr><td>&lt;div style="text-align: center;"&gt; didn't center correctly.</td></tr></table></div>
<br />
<div style="text-align: center;margin-left:auto;margin-right:auto"><table border="1"><tr><td>&lt;div style="text-align: center;margin-left:auto;margin-right:auto"&gt; still didn't center either</td></tr></table></div>
<br />
<center><table border="1"><tr><td>Actually Centered with &lt;center&gt; tag</td></tr></table></center>

<center> obtém resultados. Para usar CSS, às vezes é necessário colocar o CSS em vários lugares e mexer com ele para que ele fique no centro. Para responder à sua pergunta, o CSS se tornou uma religião com crentes e seguidores que evitavam o <center> <b> <i> <u> como blasfêmia, profano e muito simples para garantir sua própria segurança no emprego. E se eles tentarem tirar sua <tabela> de você, pergunte a eles qual é o equivalente em CSS do atributo colspan ou linhaspan.

Não é a verdade abstrata ou livresca, mas a verdade vivida que conta.
- Zen

Russell Hankins
fonte
Você também pode usardisplay:flex; justify-content:center; text-align:center
Justin Liu
11

Você ainda pode usar isso com XHTML 1.0 Transitional e HTML 4.01 Transitional, se quiser. A única outra maneira (melhor, na minha opinião) é com margens:

<div style="width:200px;margin:auto;">
  <p>Hello World</p>
</div>

Seu HTML deve definir o elemento, não governar sua apresentação.

Sampson
fonte
8

Pretende-se que a marcação, ou seja, as tags HTML, represente significado e estrutura, não aparência. Ele estava muito misturado nas versões anteriores do HTML, mas os padrões que as pessoas estão tentando limpar agora.

Um problema ao permitir que as tags controlem a aparência é que suas páginas não funcionam bem com dispositivos para deficientes, como leitores de tela. Isso também leva a ter muitas e muitas tags em seu texto que não ajudam a esclarecer o significado, mas a confundem com informações de um nível diferente.

Assim, o CSS foi pensado para mover a formatação / exibição para um idioma diferente, que é separado do texto e pode ser facilmente mantido dessa maneira. Entre outras coisas, isso permite alternar folhas de estilo para alterar a aparência de uma página da Web sem tocar na outra marcação. E ser capaz de fazer isso por muitas páginas de uma só vez.

As ferramentas que o CSS fornece para você fazer isso nem sempre são elegantes, estou do seu lado. Por exemplo, não há como fazer uma centralização vertical eficaz. E centralização horizontal, se não for apenas texto passível detext-align , não é muito melhor.

Você tem a opção de agir de maneira fácil, eficaz e confusa ou limpa, elegante e pesada. Não entendo por que os desenvolvedores da Web suportam essa bagunça, mas acho que estão felizes por ter pelo menos uma chance de fazer suas coisas.

Carl Smotricz
fonte
4
+1: Como alguém que nem é desenvolvedor da Web, reconheço o quão complicado pode ser especificar determinados atributos de apresentação usando CSS. Ainda acho melhor usar CSS do que atrapalhar a marcação estrutural, mas ... WTF? Quem está encarregado de definir essas especificações CSS, macacos aleatórios que encontraram em alguma selva remota? Seriamente.
30559 Dan Molding
2
Por favor, não insulte macacos aleatórios em selvas remotas!
precisa saber é o seguinte
7

O HTML é destinado à estruturação de dados, não ao controle do layout. CSS destina-se a controlar o layout. Você também verá que muitos designers desaprovam o uso <table>de layouts pelo mesmo motivo.

jkndrkn
fonte
5

Para texto e imagens, você pode usar text-align:

<div style="text-align: center;">
    I'm centered.
</div>
Tomas Markauskas
fonte
1
Estes são chamados de elementos embutidos.
Christoph Bühler
3

O CSS tem uma text-align: centerpropriedade e, como isso é puramente visual, não semântico, deve ser relegado ao CSS, não ao HTML.

keithjgrant
fonte
1
+1 por explicar por que foi preterido, além de uma alternativa.
23449 moribvndvs
8
mas text-alignvai alinhar o conteúdo do recipiente, e não o próprio recipiente
Andreas Grech
Ah, sim, se for um elemento no nível do bloco, o preenchimento "automático" fará isso. Se for um elemento embutido, use text-align: centerno elemento pai.
25110 keithjgrant
(oops, eu quis dizer margem de auto, não estofamento)
keithjgrant
@AndreasGrech - <center>faz as duas coisas . É irritantemente amplo.
Quentin
3

Alimento para o pensamento: com o que um sintetizador de conversão de texto em fala faria <center>?

Jörg W Mittag
fonte
1
Provavelmente fale "centro" ou "centralizado".
precisa saber é o seguinte
O mesmo que faria com o texto-align: center do css; Eu suponho.
MSpreij 6/04/2016
0

Você pode adicionar isso ao seu css e usar <div class="center"></div>

.center{
  text-align: center;
  margin: auto;
  justify-content: center;
  display: flex;
}

ou se você quiser se manter <center></center>e estar preparado caso seja removido, adicione-o ao seu css

center{
  text-align: center;
  margin: auto;
  justify-content: center;
  display: flex;
}
SwiftNinjaPro
fonte
-1

A resposta menos popular

  1. Uma tag obsoleta não é necessariamente uma tag ruim ;
  2. Não são tags que lidam com a lógica de apresentação,center é um deles;
  3. Uma centertag não é igual a uma div com text-align:center;
  4. O fato de você ter outra maneira de fazer algo não o torna inválido.

Deixe-me explicar, porque existem downvotors notórios aqui que pensam que estou defendendo o HTML4 da velha escola ou algo assim. Não, eu não sou. Mas o debate em torno centeré simplesmente uma guerra de tendências, não há razão real para abandonar uma etiqueta que serve bem a um propósito válido.

Então, vamos ver os principais argumentos contra isso.

  • "Descreve apresentação, não semântica!"
    Não. Ele descreve um arranjo lógico - e sim tem uma aparência padrão, assim como outras tags gostam<p>ou<ul>fazem. Mas o ponto é a relação da parte fechada com o ambiente. Center diz que "isso é algo que separamos por um posicionamento visualmente diferente".

  • "Não é válido"
    Sim, é. Ele está obsoleto, pois pode ser removido mais tarde . Há mais de 15 anos. E não vai a lugar nenhum, aparentemente. Existem sites importantes que usam essa tag porque é muito legível e objetiva.

  • "Não é compatível com HTML5"
    Naverdade,é uma dastagsmais amplamente suportadas .

  • "É oldschool" Os
    cadarços também são oldschool. Novos métodos não invalidam os antigos. Você quer se sentir progressivo e moderno: ótimo. Mas não faça disso a lei.

  • "É estúpido / estranho / coxo / conta uma história sobre você"
    Nada disso. É como um martelo: uma ferramenta para um trabalho específico. Existem outras ferramentas para o mesmo trabalho e outros trabalhos para a mesma ferramenta; mas foi criado para resolver um determinado problema e esse problema ainda existe, portanto, podemos usar apenas uma solução dedicada.

  • "Você não deveria fazer isso, porque, CSS"
    Centering absolutamente pode ser alcançado através da CSS, mas isso é apenas uma maneira, não o único, muito menos a única apropriada . Tudo o que for suportado, funcional e legível deve ser aprovado.

TL; DR:

A única razão para não usar <center>é porque as pessoas vão te odiar.

dkellner
fonte