¿Por qué la etiqueta <center> está en desuso en HTML?

202

Tengo curiosidad por saber por qué la <center>etiqueta en HTML ha quedado en desuso.

El <center>era una manera sencilla de forma rápida centro-alineación de bloques de texto e imágenes encapsulando el recipiente en una <center>etiqueta, y realmente no se puede encontrar ninguna manera más simple de cómo hacerlo ahora.

Alguien sabe de alguna manera simple sobre cómo centrar "cosas" (no lo margin-left:auto; margin-right:auto;y ancho), algo que reemplaza <center>? Y también, ¿por qué fue desaprobado?

Andreas Grech
fuente

Respuestas:

232

El <center>elemento quedó en desuso porque define la presentación de su contenido, no describe su contenido.

Un método de centrado es establecer las propiedades margin-lefty margin-rightdel elemento en auto, y luego establecer la text-alignpropiedad del elemento principal en center. Esto garantiza que el elemento se centrará en todos los navegadores modernos.

Jordan Ryan Moore
fuente
77
Sí, CSS se trata de dividir presentaciones y datos.
Ivan Nevostruev el
3
Ivan, CSS tiene que ver con la presentación; no se trata de dividir, como lo demuestran los atributos de estilo en línea en algunas respuestas. Por supuesto, es una muy buena idea usar clases sensatas y no CSS en línea, pero ese es un concepto distinto al uso de CSS para la presentación.
Peter Boughton el
15
He tenido algunos casos (que no puedo recordar atm) en los que configurar tanto el elemento margincomo text-alignno centrarlo en IE, pero envolverlo <center>funcionó ... Trataré de encontrar un ejemplo.
Mottie el
12
el truco de margen automático solo funciona para elementos de nivel de bloque. utilizar display: block;en un elemento en línea.
Steve Graham
88
Estoy seguro de que los diecisiete divisiones anidadas en una plantilla típica de WP o Drupal realmente ayudan a separar los detalles de la presentación: P </troll> (<- ¡mira, etiqueta semántica!)
detly
17

De acuerdo con W3Schools.com ,

El elemento central quedó en desuso en HTML 4.01 y no es compatible con XHTML 1.0 Strict DTD.

La especificación HTML 4.01 da esta razón para despreciar la etiqueta:

El elemento CENTER es exactamente equivalente a especificar el elemento DIV con el atributo de alineación establecido en "centro".

Conrad Meyer
fuente
14
Yo lo que deseo que esto era cierto.
badp
61
Esto es realmente cierto, pero el atributo de alineación de DIV también está en desuso: D
Oleh Prypin
22
Tenga en cuenta que w3schools no es W3C.
showdev
44
"El elemento CENTER es exactamente equivalente a especificar el elemento DIV con el atributo de alineación establecido en" centro ". excepto que es claro al mirar la etiqueta que está centrado. Si este fuera un motivo válido, podríamos depurar <strong>, <b>, todas <h> y otras etiquetas y decir que hacen lo mismo que <span> con algunos css. Además, XHTML ni siquiera reconoce etiquetas HTML5 como el lienzo. Solo está en desuso debido a la guerra contra las carpas, centros, mesas, marcos que son puramente religiosos, ya que todos tienen un lugar.
Dmitry
2
@Dmitry <strong> y <h> tienen un significado semántico que va más allá del estilo visual. Supongo que si <center> todavía existiera, podría darle estilo con CSS, por ejemplo, para que su contenido se justifique.
Nick Rice
16

Lo que hago es tomar tareas comunes como centrar o flotar y hacer clases CSS de ellas. Cuando hago eso, puedo usarlos en cualquiera de las páginas. También puedo llamar tantos como quiera en el mismo elemento.

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

Ahora puedo usarlos en mi código HTML para realizar tareas simples.

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

Todavía uso la etiqueta <center> a veces porque nada en CSS funciona tan bien. Ejemplos de intentar usar un truco <div> y fallar:

<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> obtiene resultados. Para usar CSS en su lugar, a veces tienes que poner CSS en varios lugares y jugar con él para que se centre bien. Para responder a su pregunta, CSS se ha convertido en una religión con creyentes y seguidores que rechazaron <center> <b> <i> <u> como blasfemia, impía y demasiado simple por el bien de su propia seguridad laboral. Y si intentan quitarle su <table>, pregúnteles cuál es el equivalente CSS del atributo colspan o rowspan.

No es la verdad abstracta o de libro, sino la verdad vivida lo que cuenta.
- Zen

Russell Hankins
fuente
También podría usardisplay:flex; justify-content:center; text-align:center
Justin Liu
11

Todavía puede usar esto con XHTML 1.0 Transitional y HTML 4.01 Transitional si lo desea. La única otra manera (la mejor manera, en mi opinión) es con márgenes:

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

Su HTML debe definir el elemento, no gobernar su presentación.

Sampson
fuente
8

Se pretende que el marcado, es decir, las etiquetas HTML, represente el significado y la estructura, no la apariencia. Estaba mal mezclado en las primeras versiones de HTML, pero las personas estándar están tratando de limpiar eso ahora.

Un problema al permitir que las etiquetas controlen la apariencia es que sus páginas no funcionan bien con dispositivos para discapacitados, como lectores de pantalla. También conduce a tener muchas etiquetas en su texto que no ayudan a aclarar el significado, sino que lo saturan con información de un nivel diferente.

Por lo tanto, CSS fue pensado para mover el formato / visualización a un idioma diferente, que es independiente del texto y se puede mantener fácilmente de esa manera. Entre otras cosas, esto permite cambiar las hojas de estilo para cambiar la apariencia de una página web sin tocar el otro marcado. Y para poder hacer eso por muchas páginas en un tonto.

Las herramientas que CSS le brinda para hacer esto no siempre son elegantes, estoy de su lado allí. Por ejemplo, no hay forma de hacer un centrado vertical efectivo. Y el centrado horizontal, si no se trata solo de texto text-align, no es mucho mejor.

Tiene la opción de hacerlo de manera fácil, efectiva y confusa o limpia, elegante y engorrosa. No entiendo por qué los desarrolladores web soportan este desastre, pero creo que están contentos de tener al menos la oportunidad de hacer sus cosas.

Carl Smotricz
fuente
44
+1: Como alguien que ni siquiera es desarrollador web, reconozco lo engorroso que puede ser especificar ciertos atributos de presentación usando CSS. Todavía me parece mejor usar CSS que confundir el marcado estructural, pero ... ¿WTF? ¿Quién está a cargo de definir esa especificación CSS, monos al azar que encontraron en una jungla remota? Seriamente.
Dan Molding el
2
¡Por favor, no insultes a los monos al azar en selvas remotas!
DaveWalley
7

HTML está destinado a estructurar datos, no a controlar el diseño. CSS está destinado a controlar el diseño. También encontrará que muchos diseñadores desaprueban el uso <table>de diseños por esta misma razón.

jkndrkn
fuente
5

Para texto e imágenes puede usar text-align:

<div style="text-align: center;">
    I'm centered.
</div>
Tomás Markauskas
fuente
1
Estos se llaman elementos en línea.
Christoph Bühler
3

CSS tiene una text-align: centerpropiedad, y dado que esto es puramente visual, no semántico, debe relegarse a CSS, no a HTML.

keithjgrant
fuente
1
+1 para explicar por qué se desaprobó además de una alternativa.
moribvndvs
8
pero text-alignva a alinear el contenido del envase, no el propio contenedor
Andreas Grech
Ah, sí, si es un elemento de nivel de bloque, el relleno "automático" lo hará. Si es un elemento en línea, úselo text-align: centeren su elemento padre.
keithjgrant el
(perdón, quería decir el margen de automóviles, no relleno)
keithjgrant
@AndreasGrech: <center>hace ambas cosas . Es molestamente amplio.
Quentin
3

Alimento para el pensamiento: ¿con qué haría un sintetizador de texto a voz <center>?

Jörg W Mittag
fuente
1
Probablemente hable "centro" o "centrado".
DaveWalley
Lo mismo que haría con css 'text-align: center; Supongo.
MSpreij
0

Puede agregar esto a su CSS y usar <div class="center"></div>

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

o si desea conservar <center></center>y estar preparado en caso de que alguna vez se elimine, agregue esto a su CSS

center{
  text-align: center;
  margin: auto;
  justify-content: center;
  display: flex;
}
SwiftNinjaPro
fuente
0

La respuesta menos popular

  1. Una etiqueta obsoleta no es necesariamente mala etiqueta ;
  2. No son las etiquetas que tienen que ver con la lógica de presentación,center es uno de ellos;
  3. Una centeretiqueta no es lo mismo que un div con text-align:center;
  4. El hecho de que tenga otra forma de hacer algo no lo invalida.

Permítanme explicarlo porque hay notorios downvoters aquí que pensarán que estoy defendiendo HTML4 de la vieja escuela o algo así. No no soy. Pero el debate centeres simplemente una guerra de tendencias, no hay una razón real para deshacerse de una etiqueta que sirva bien a un propósito válido.

Así que veamos los principales argumentos en contra.

  • "¡Describe la presentación, no la semántica!"
    No. Describe una disposición lógica, y sí tiene una apariencia predeterminada, al igual que otras etiquetas les gusta<p>o lo<ul>hacen. Pero el punto es la relación de la parte cerrada con su entorno. Center dice "esto es algo que separamos por posicionamiento visualmente diferente".

  • "No es válido"
    Sí lo es. Simplemente está en desuso, como en, podría eliminarse más tarde . Por más de 15 años ahora. Y aparentemente no va a ninguna parte. Hay sitios importantes que usan esta etiqueta porque es muy legible y va al grano.

  • "No es compatible con HTML5"
    Enrealidad,es una de lasetiquetasmás compatibles .

  • "Es vieja escuela" Los
    cordones también son viejos. Los nuevos métodos no invalidan los viejos. Quieres sentirte progresivo y moderno: bien. Pero no lo conviertas en ley.

  • "Es estúpido / incómodo / cojo / cuenta una historia sobre ti"
    Ninguno de estos. Es como un martillo: una herramienta para un trabajo específico. Hay otras herramientas para el mismo trabajo y otros trabajos para la misma herramienta; pero fue creado para resolver un problema determinado y ese problema aún existe, por lo que podríamos usar una solución dedicada.

  • "No deberías hacer esto, porque CSS" El CSS
    puede lograr absolutamente el centrado, pero esa es solo una forma, no la única, y mucho menos la única adecuada . Cualquier cosa que sea compatible, que funcione y sea legible debería estar bien para usar.

TL; DR:

La única razón para no usarlo <center>es porque la gente te odiará.

dkellner
fuente