为什么在HTML中不推荐使用<center>标签?


202

我只是好奇为什么<center>不赞成使用HTML中的标记。

<center>通过将容器封装在<center>标签中,这是一种快速居中对齐文本和图像块的简单方法,我现在真的找不到任何更简单的方法。

任何人都知道如何使“东西”居中(不是margin-left:auto; margin-right:auto;和宽度东西居中)的任何简单方法<center>吗?而且,为什么不推荐使用它?

Answers:


232

<center>元素已弃用,因为它定义了其内容的表示形式 —它未描述其内容。

居中的一种方法是将元素的margin-leftmargin-right属性设置为auto,然后将父元素的text-align属性设置为center。这保证了该元素将在所有现代浏览器中居中。


7
是的,CSS都是关于拆分表示和数据的。
伊万·内沃斯特鲁夫

3
Ivan,CSS完全是关于表示的。它与拆分无关-如此处某些答案中的内联样式属性所示!当然,使用明智的类而不是内联CSS是一个非常好的主意,但这是使用CSS进行表示的独特概念。
彼得·布顿

15
在某些情况下(我不记得atm),在IE中同时设置margin和都text-align没有将我的元素居中,但是用它包装起来<center>确实有效……我将尝试查找一个示例。
Mottie

12
自动边距技巧仅适用于块级元素。用于display: block;内联元素。
史蒂夫·格雷厄姆

88
我确定典型的WP或Drupal模板上的17个嵌套div确实有助于分离出演示文稿的详细信息:P </ troll>(<-外观,语义标记!)
显然

17

根据W3Schools.com

中心元素在HTML 4.01中已被弃用,XHTML 1.0 Strict DTD不支持该元素。

HTML 4.01规范给出了这样的理由弃用标签:

CENTER元素与将align属性设置为“ center”的DIV元素完全等效。


14
希望这是真的。
badp 2010年

61
实际上,这是事实,但DIV的align属性也已被弃用:D
Oleh Prypin 2010年

22
请注意,w3schools 不是 W3C。
showdev 2013年

4
“ CENTER元素完全等同于将align属性设置为“ center”来指定DIV元素。只是通过查看标签居中可以清楚地看到它。如果这是正当的原因,我们可以将<strong>,<b>,所有<h>和其他标签贬低,并说它们与<span>具有相同的CSS功能。此外,XHTML甚至无法识别HTML5标签,例如canvas。之所以弃用它,是因为它与纯粹是宗教性的选框,中心,桌子和框架展开了战争,因为它们都有自己的位置。
德米特里(Dmitry)

2
@Dmitry <strong>和<h>具有超越视觉样式的语义。我猜想<center>是否仍然可以使用CSS对其进行样式设置,例如,使其内容左对齐。
尼克·赖斯

16

我要做的是执行居中或浮动之类的常见任务,并从中制作CSS类。当我这样做时,我可以在所有页面中使用它们。我也可以在同一元素上调用任意多个。

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

现在,我可以在HTML代码中使用它们来执行简单的任务。

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

12

有时我仍然使用<center>标记,因为CSS中的任何内容都无法正常工作。尝试使用<div>技巧失败的示例:

<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>获得结果。要改为使用CSS,有时必须将CSS放在多个位置并弄乱它,以使其居中。为了回答您的问题,CSS已成为一种信徒和追随者的宗教,他们为自己的工作安全而避开<center> <b> <i> <u>亵渎,邪恶和过于简单。如果他们试图把您的<table>拿走,请问他们colspan或rowspan属性的CSS等效项是什么。

重要的不是抽象的或书呆子的真理,而是活泼的真理。
-禅


您也可以使用display:flex; justify-content:center; text-align:center
Justin Liu


8

标记(即HTML标记)旨在表示含义和结构,而不是外观。在早期的HTML版本中,它的使用方式非常混乱,但是现在人们正在努力清理这些标准。

让标签控制外观的一个问题是,您的页面在屏幕阅读器等残障人士设备上无法正常播放。这还会导致文本中有很多标签,这些标签无助于阐明含义,而是使它们混杂了不同级别的信息。

因此,人们认为CSS可以将格式设置/显示切换到另一种语言,该语言与文本不同,可以很容易地保持这种方式。除其他外,这允许切换样式表来更改网页的外观,而无需触摸其他标记。并能够一口气在很多页面上做到这一点。

CSS为您提供的工具并不总是那么优雅,我在您身边。例如,无法进行有效的垂直居中。而水平居中,如果不仅仅是文本适合的话text-align,也不会更好。

您可以选择轻松,有效,混乱或干净,优雅而繁琐的选择。我不明白为什么Web开发人员会忍受这种混乱,但是我想他们很高兴至少有机会完成他们的工作。


4
+1:作为一个甚至不是Web开发人员的人,我都知道使用CSS指定某些表示属性可能很麻烦。我仍然发现使用CSS比混淆结构标记更好,但是... WTF?谁负责定义CSS规范,它们是在偏远丛林中发现的随机猴子?说真的
Dan Molding

2
请不要在偏远的丛林中侮辱随机的猴子!
DaveWalley 2014年

7

HTML用于构造数据,而不是控制布局。CSS旨在控制布局。您还会发现,<table>出于同样的原因,许多设计师也不愿使用布局。



3

CSS具有text-align: center属性,并且由于这纯粹是视觉的东西,而不是语义的东西,因此应该将其降级为CSS,而不是HTML。


1
+1解释了为什么除了其他选项之外不推荐使用它。
moribvndvs

8
text-align会对齐容器的内容,而不是对齐容器本身
Andreas Grech

嗯,是的,如果它是一个块级元素,那么“自动”填充会做到这一点。如果是内联元素,请text-align: center在其父元素上使用。
keithjgrant

(糟糕,我的意思是自动保证金,而不是填充)
keithjgrant

@AndreasGrech - <center>两个。它令人讨厌。
昆汀


0

您可以将此添加到您的CSS并使用 <div class="center"></div>

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

或者如果您想保留<center></center>并准备好将其移除,请将其添加到CSS

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

-1

最不受欢迎的答案

  1. 弃用的标签不一定是不良标签;
  2. 一些标签处理表示逻辑,center是其中之一。
  3. 一个center标签是不一样的,与一个div text-align:center;
  4. 您有另一种方法可以做某事并不意味着它是无效的。

让我解释一下,因为这里有臭名昭著的反对者,他们会认为我在捍卫老式HTML4之类的东西。不,我不是。但是周围的争论center仅仅是一场趋势战争,没有真正的理由放弃一个可以很好地发挥作用的标签。

因此,让我们看看反对它的主要论点。

  • “它描述的是表达方式,而不是语义!”
    不,它描述了一个合乎逻辑的安排-是有一个默认的外观,就像其他标签,如<p><ul>做。但是重点是封闭部分与周围环境的关系。中心说:“这是我们通过视觉上不同的位置分开的东西”。

  • “无效”
    是的。它已被弃用,因为稍后可以将其删除。至今已有15年以上。显然,它没有任何进展。有很多主要的网站都使用此标签,因为它非常易读并且很重要。

  • “ HTML5不支持
    实际上是最广泛支持的标签之一。

  • “这是老式的”
    鞋带也是老式的。新方法不会使旧方法无效。您想感受到进步和现代感:很好。但是不要把它变成法律。

  • “这很愚蠢/尴尬/ la脚/讲述了一个关于你的故事”
    这些都不是。就像锤子一样:一种用于特定工作的工具。对于同一工作还有其他工具,对于同一工具还有其他工作。但是它是为解决某个问题而创建的,并且该问题仍然存在,因此我们不妨仅使用专用的解决方案。

  • “您不应该这样做,因为CSS。”
    居中绝对可以通过CSS来实现,但这只是一种方法,不是唯一的方法,更不用说唯一合适的方法了。任何支持,工作和可读的内容都应该可以使用。

TL; DR:

不使用的唯一原因<center>是因为人们会讨厌您。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.