问题描述
我只是好奇为什么不推荐使用 HTML 中的<center>
标记。
<center>
是通过将容器封装在<center>
标签中的一种快速 center-aligning 文本和图像块的简单方法,我现在无法找到更简单的方法。
任何人都知道如何将”stuff”(不是 margin-left:auto; margin-right:auto;
和宽度的东西) 置于中心位置,这取代了<center>
?而且为什么不弃用?
最佳解决方案
<center>
元素已被弃用,因为它定义了其内容的呈现 – 它没有描述其内容。
一种居中的方法是将元素的 margin-left
和 margin-right
属性设置为 auto
,然后将父元素的 text-align
属性设置为 center
。这将保证元素将集中在所有现代浏览器中。
次佳解决方案
HTML 是关于为内容提供结构和意义的,这应该是其唯一的功能。
不过,过去由愚蠢的浏览器开发人员添加了各种标签,这些标签违反了这一基本原则。
在某些时候,人们至少感觉到 (部分是至少) 的感觉,并开始 (试图) 同意编写正确的 HTML 的规范,所以他们不赞成使用这些标签。
然而,损害已经完成了 – 太多的人已经学习 HTML 作为 「放置标签围绕东西和东西发生」,而不是理解 (重要和有用的) 语义和表达之间的区别,而那些人已经写了书和教程,教其他人错误的方式来编写 HTML,他们自己做的一样,我们结束了一个正确的旧混乱。
理想情况下,center
标签应该永远不存在,因为人们应该指出它不是’real’ HTML,并告诉浏览器制造商回去做正确的事情。
并且为了正确地进行… 对齐当然是一个演示文稿问题 – 将布局和格式化应用于 (结构化) 内容,而使用的语言是 CSS 。
然而,再次,愚蠢的浏览器开发人员搞砸了早期的 CSS – 在许多情况下,创建网页的人必须使用不正确的 HTML,因为 CSS 根本没有起作用。
这些天,我们开始获得一些有用的功能添加到 CSS,但仍然有很多还没有实现,而且有一些可以以非常优秀的方式实现的东西,但现在已经被标准化了,所以我们坚持用旧的方式。
如果样式表已由合理的人员实施,您将拥有任何体面的办公软件中的所有控件 – 对齐块和文本,它可以水平,垂直地工作,upside-down,旋转等等 – 以愚蠢的方式将左/右边距设置为自动。
为了完整,我将快速添加第三个用于网页的’level’,它用于将另外的静态页面添加到互动页面,这当然是 (mis-named)JavaScript 。
再次,那些愚蠢的浏览器开发者不知道他们在做什么。他们选择了一个完全不正确/无效的名称 (出于营销的原因),并再次夸大了一个潜在的伟大和强大的语言,缺陷,缺乏功能,并创造了 (直到最近) 被许多人讨厌的东西。
过去几年,我们当然看到了 JavaScript Library 的大起潮,这些 Library 帮助显示了 JS 已经有能力多年的优秀资料,隐藏了浏览器中仍然存在的许多浏览器漏洞,并且部分帮助修补了 CSS 支持,所以这有点更有用 (仍然有很多东西丢失) 。
所以,总而言之,最终的答案是因为浏览器制造商是愚蠢的。 🙂
第三种解决方案
根据 W3Schools.com,
The center element was deprecated in HTML 4.01, and is not supported in XHTML 1.0 Strict DTD.
HTML 4.01 spec 给出了弃用标签的原因:
The CENTER element is exactly equivalent to specifying the DIV element with the align attribute set to “center”.
第四种方案
我所做的是采取常见的任务,如定心或浮动,并使 CSS 类脱离出来。当我这样做时,我可以在任何页面上使用它们。我也可以在同一个元素上调用我想要的数量。
.text_center {text-align: center;}
.center {margin: auto 0px;}
.float_left {float: left;}
现在我可以用 HTML 代码来执行简单的任务。
<p class="text_center">Some Text</p>
第五种方案
如果您愿意,还可以使用 XHTML 1.0 Transitional 和 HTML 4.01 Transitional 。唯一的其他方式 (在我看来最好的方法) 是利润率:
<div style="width:200px;margin:auto;">
<p>Hello World</p>
</div>
您的 HTML 应该定义元素,而不管其表示。
第六种方案
意图是标记,即 HTML 标签,代表意义和结构,而不是外观。在 HTML 的早期版本中,它是非常混杂的,但是现在人们正在尝试清理这些标准。
让标签控制外观的一个问题是,您的页面与残疾人设备 (如屏幕阅读器) 播放不佳。它也导致在您的文本中有很多很多标签,这些标签无助于澄清意义,而是将其与不同级别的信息混在一起。
所以 CSS 被认为是将格式化/显示移动到与文本分离的不同语言,并且可以很容易地保持这种方式。除此之外,这允许切换样式表来更改网页的外观,而不会触及其他标记。并且能够在一个膨胀的 foop 中为许多页面做到这一点。
工具 CSS 给你这样做并不总是优雅,我在你身边。例如,没有办法做有效的垂直居中。而水平居中,如果不仅仅是适合 text-align
的文字,情况并不好。
你可以选择做得容易,有效和混乱或干净,优雅和繁琐。我不明白为什么 Web 开发人员忍受这个混乱,但我猜他们很高兴有至少一个机会来完成他们的工作。
第七种方案
HTML 用于构造数据,而不是控制布局。 CSS 旨在控制布局。您也会发现许多设计师因为这个原因而使用<table>
进行布局。
第八种方案
CSS 有一个 text-align: center
属性,因为这纯粹是一个可视化的东西,而不是语义,它应该被降级到 CSS,而不是 HTML 。
第九种方案
食物的想法:text-to-speech 合成器将与<center>
做什么?
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。