問題描述
我只是好奇為什麼不推薦使用 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。