Perché il tag <center> è deprecato in HTML?


202

Sono solo curioso di sapere perché il <center>tag in HTML è stato deprecato.

Il <center>è stato un modo semplice per breve tempo il centro-allineando blocchi di testo e le immagini incapsulando il contenitore in un <center>tag, e davvero non riesco a trovare un modo più semplice su come farlo ora.

Qualcuno sa in qualche modo semplice come centrare "roba" (non la margin-left:auto; margin-right:auto;cosa e larghezza), qualcosa che sostituisce <center>? E inoltre, perché è stato deprecato?

Risposte:


232

L' <center>elemento è stato deprecato perché definisce la presentazione del suo contenuto - non descrive il suo contenuto.

Un metodo di centraggio è impostare le proprietà margin-lefte margin-rightdell'elemento su auto, quindi impostare la text-alignproprietà dell'elemento padre su center. Ciò garantisce che l'elemento sarà centrato in tutti i browser moderni.


7
Sì, CSS si basa sulla suddivisione di presentazione e dati.
Ivan Nevostruev,

3
Ivan, CSS riguarda la presentazione; non si tratta di dividere - come dimostrano gli attributi di stile inline in alcune risposte qui! Naturalmente è una buona idea usare classi sensibili e non inline CSS, ma questo è un concetto distinto nell'uso dei CSS per la presentazione.
Peter Boughton,

15
Ho avuto alcuni casi (che non riesco a ricordare atm) in cui l'impostazione di entrambi margine text-alignnon ha centrato il mio elemento in IE, ma avvolgendolo con <center>ha funzionato ... Proverò a trovare un esempio.
Mottie,

12
il trucco del margine automatico funziona solo per elementi a livello di blocco. utilizzare display: block;su un elemento inline.
Steve Graham,

88
Sono sicuro che i diciassette div annidati su un tipico modello WP o Drupal aiutano davvero a separare i dettagli della presentazione: P </troll> (<- guarda, tag semantico!)
detly

17

Secondo W3Schools.com ,

L'elemento centrale è stato deprecato in HTML 4.01 e non è supportato in DTD rigoroso XHTML 1.0.

Le specifiche HTML 4.01 forniscono questo motivo per deprecare il tag:

L'elemento CENTER equivale esattamente a specificare l'elemento DIV con l'attributo align impostato su "center".


14
Vorrei tanto che questo fosse effettivamente vero.
badp,

61
Questo in realtà è vero, ma anche l'attributo align di DIV è deprecato: D
Oleh Prypin,

22
Nota che w3schools non è W3C.
showdev,

4
"L'elemento CENTER è esattamente equivalente a specificare l'elemento DIV con l'attributo align impostato su" center "." tranne che è chiaro guardando il tag che è centrato. Se questo fosse un motivo valido, potremmo privare <strong>, <b>, tutti i <h> e altri tag e dire che fanno la stessa cosa di <span> con alcuni css. inoltre, XHTML non riconosce nemmeno tag HTML5 come canvas. È deprecato solo a causa della guerra contro tendoni, centri, tavoli, cornice che è puramente religiosa, poiché tutti hanno un posto.
Dmitry,

2
@Dmitry <strong> e <h> hanno un significato semantico che va oltre lo stile visivo. Immagino che se <center> fosse ancora in giro, potresti modellarlo con CSS, ad esempio per rendere giustificato il suo contenuto.
Nick Rice,

16

Quello che faccio è svolgere attività comuni come centrare o fluttuare e ricavarne classi CSS. Quando lo faccio, posso usarli in tutte le pagine. Posso anche chiamare quanti ne desidero sullo stesso elemento.

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

Ora posso usarli nel mio codice HTML per eseguire attività semplici.

<p class="text_center">Some Text</p>

12

A volte uso ancora il tag <center> perché non funziona anche nulla nei CSS. Esempi di come provare a usare un trucco <div> e fallire:

<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> ottiene risultati. Per utilizzare invece i CSS, a volte è necessario inserire i CSS in più punti e confonderli per centrarli correttamente. Per rispondere alla tua domanda, CSS è diventato una religione con credenti e seguaci che hanno evitato <center> <b> <i> <u> come blasfemia, empia e fin troppo semplice per motivi di sicurezza del proprio lavoro. E se provano a portarti via <table>, chiedi loro qual è l'equivalente CSS dell'attributo colspan o rowpan.

Non è la verità astratta o libresca, ma la verità vissuta che conta.
- Zen


Puoi anche usaredisplay:flex; justify-content:center; text-align:center
Justin Liu

11

Puoi ancora usarlo con XHTML 1.0 Transitional e HTML 4.01 Transitional se vuoi. L'unico altro modo (il modo migliore, secondo me) è con i margini:

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

Il tuo HTML dovrebbe definire l'elemento, non governarne la presentazione.


8

È previsto che il markup, ovvero i tag HTML, rappresenti significato e struttura, non aspetto. È stato mischiato male nelle prime versioni di HTML, ma gli standard che la gente sta cercando di ripulire ora.

Un problema che consente ai tag di controllare l'aspetto è che le tue pagine non funzionano bene con i dispositivi per portatori di handicap, come gli screen reader. Porta anche ad avere un sacco di tag nel tuo testo che non aiutano a chiarire il significato, ma piuttosto ingombrano con informazioni di livello diverso.

Quindi CSS è stato pensato per spostare la formattazione / visualizzazione in una lingua diversa, che è separata dal testo e può essere facilmente mantenuta in questo modo. Tra le altre cose, ciò consente di cambiare i fogli di stile per modificare l'aspetto di una pagina Web senza toccare l'altro markup. E per poterlo fare per molte pagine in un colpo solo.

Gli strumenti che CSS ti offre non sono sempre eleganti, sono dalla tua parte. Ad esempio, non è possibile eseguire un centraggio verticale efficace. E la centratura orizzontale, se non è solo testo text-align, non è molto meglio.

Hai la scelta di fare facile, efficace e confuso o pulito, elegante e ingombrante. Non capisco perché gli sviluppatori Web tollerino questo casino, ma credo che siano felici di avere almeno la possibilità di fare le loro cose.


4
+1: Come qualcuno che non è nemmeno uno sviluppatore web, riconosco quanto possa essere complicato specificare determinati attributi di presentazione usando CSS. Trovo ancora meglio usare CSS che confondere il markup strutturale, ma ... WTF? Chi è incaricato di definire quella specifica CSS, scimmie casuali che hanno trovato in qualche giungla remota? Sul serio.
Dan Molding,

2
Per favore, non insultare scimmie casuali in giungle remote!
DaveWalley,

7

HTML è destinato alla strutturazione dei dati, non al controllo del layout. CSS ha lo scopo di controllare il layout. Scoprirai anche che molti designer non vedono l'ora di utilizzare i <table>layout per lo stesso motivo.



3

Il CSS ha una text-align: centerproprietà, e poiché si tratta di una cosa puramente visiva, non semantica, dovrebbe essere relegato in CSS, non in HTML.


1
+1 per spiegare perché è stato deprecato oltre a un'alternativa.
moribvndvs,

8
ma text-alignallineerà il contenuto del contenitore, non il contenitore stesso
Andreas Grech,

Ah, sì, se si tratta di un elemento a livello di blocco, il padding "auto" lo farà. Se si tratta di un elemento inline, utilizzare text-align: centersul suo elemento padre.
keithjgrant,

(oops, intendevo margine automatico, non riempimento)
keithjgrant

@AndreasGrech - <center>fa entrambe le cose . È fastidiosamente ampio.
Quentin,

3

Spunti di riflessione: cosa farebbe un sintetizzatore di sintesi vocale <center>?


1
Probabilmente parla di "centro" o "centrato".
DaveWalley,

Lo stesso che farebbe con css 'text-align: center; Credo.
MSpreij,

0

È possibile aggiungere questo al tuo CSS e utilizzare <div class="center"></div>

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

o se vuoi conservare <center></center>ed essere preparato nel caso in cui venga mai rimosso, aggiungi questo al tuo CSS

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

0

La risposta meno popolare

  1. Un tag deprecato non è necessariamente una cattiva etichetta;
  2. Ci sono i tag che si occupano di logica di presentazione,center è uno di questi;
  3. Un centertag non è lo stesso di un div con text-align:center;
  4. Il fatto che tu abbia un altro modo di fare qualcosa non lo rende invalido.

Lasciami spiegare perché qui ci sono famigerati downvoter che penseranno che sto difendendo HTML4 oldschool o qualcosa del genere. No non sono. Ma il dibattito intorno centerè semplicemente una guerra di tendenza, non esiste una vera ragione per abbandonare un tag che serve bene a uno scopo valido.

Vediamo quindi i principali argomenti contrari.

  • "Descrive la presentazione, non la semantica!"
    No. Descrive una disposizione logica - e sì ha un aspetto predefinito, proprio come altri tag gradiscono<p>o<ul>fanno. Ma il punto è la relazione della parte chiusa con l'ambiente circostante. Center dice "questo è qualcosa che separiamo dal posizionamento visivamente diverso".

  • "Non è valido"
    Sì, lo è. È solo deprecato, come in, potrebbe essere rimosso in seguito . Da oltre 15 anni. E non sta andando da nessuna parte, a quanto pare. Ci sono siti importanti che usano questo tag perché è molto leggibile e preciso.

  • "Non è supportato in HTML5"
    Inrealtàè uno deitagpiù ampiamente supportati .

  • "It's oldschool" Anche i
    lacci delle scarpe sono oldschool. I nuovi metodi non invalidano il vecchio. Vuoi sentirti progressista e moderno: bene. Ma non renderlo la legge.

  • "È stupido / imbarazzante / zoppo / racconta una storia su di te"
    Nessuna di queste. È come un martello: uno strumento per un lavoro specifico. Esistono altri strumenti per lo stesso lavoro e altri lavori per lo stesso strumento; ma è stato creato per risolvere un certo problema e quel problema è ancora presente, quindi potremmo anche usare una soluzione dedicata.

  • "Non dovresti farlo, perché, CSS" Il
    centraggio può essere assolutamente raggiunto dai CSS, ma questo è solo un modo, non l'unico, e tanto meno l'unico appropriato . Tutto ciò che è supportato, funzionante e leggibile dovrebbe essere ok da usare.

TL; DR:

L'unico motivo per non usarlo <center>è perché le persone ti odieranno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.