ทำไมแท็ก <center> เลิกใช้ใน HTML


202

ฉันแค่อยากรู้ว่าทำไม<center>แท็กใน HTML จึงเลิกใช้แล้ว

นี่<center>เป็นวิธีที่ง่ายในการจัดบล็อกของข้อความและรูปภาพที่กึ่งกลางอย่างรวดเร็วโดยใส่ในภาชนะใน<center>แท็กและฉันไม่สามารถหาวิธีที่ง่ายกว่านี้ได้ในตอนนี้

ใครรู้วิธีง่าย ๆ ในการจัดกึ่งกลาง "สิ่งของ" (ไม่ใช่สิ่งmargin-left:auto; margin-right:auto;และความกว้าง) สิ่งที่มาแทนที่<center>? และทำไมมันเลิก?

คำตอบ:


232

<center>องค์ประกอบถูกเลิกใช้เพราะมันกำหนดการนำเสนอของเนื้อหา - มันไม่ได้อธิบายเนื้อหาของมัน

วิธีการหนึ่งของตรงกลางคือการตั้งค่าmargin-leftและmargin-rightคุณสมบัติขององค์ประกอบการautoและตั้งค่าแล้วองค์ประกอบหลักของคุณสมบัติการtext-align centerสิ่งนี้รับประกันว่าองค์ประกอบจะอยู่กึ่งกลางในเบราว์เซอร์สมัยใหม่ทั้งหมด


7
ใช่ CSS คือทั้งหมดที่เกี่ยวกับการแยกงานนำเสนอและข้อมูล
Ivan Nevostruev

3
อีวาน CSS คือทั้งหมดที่เกี่ยวกับการนำเสนอ มันไม่ได้เกี่ยวกับการแยก - เนื่องจากคุณลักษณะสไตล์อินไลน์ในคำตอบบางอย่างที่นี่แสดงให้เห็น! แน่นอนว่าเป็นความคิดที่ดีมากที่จะใช้คลาสที่มีเหตุผลและไม่ใช่ CSS แบบอินไลน์ แต่เป็นแนวคิดที่แตกต่างในการใช้ CSS สำหรับงานนำเสนอ
Peter Boughton

15
ฉันมีบางกรณี (ซึ่งฉันจำไม่ได้ atm) ที่ตั้งค่าทั้งสองmarginและtext-alignไม่ได้จัดวางองค์ประกอบของฉันไว้ใน IE แต่การปิดด้วยมันใช้<center>งานได้ ... ฉันจะลองหาตัวอย่าง
Mottie

12
เคล็ดลับมาร์จิ้นอัตโนมัติใช้ได้กับองค์ประกอบระดับบล็อกเท่านั้น ใช้display: block;กับองค์ประกอบแบบอินไลน์
Steve Graham

88
ฉันแน่ใจว่า divs ที่สิบเจ็ดซ้อนกันบน WP ทั่วไปหรือเทมเพลต Drupal ช่วยแยกรายละเอียดงานนำเสนอออกได้อย่างชัดเจน: P </troll> (<- มอง, semantic tag!)
detly

17

ตามW3Schools.com ,

องค์ประกอบกลางเลิกใช้แล้วใน HTML 4.01 และไม่รองรับใน XHTML 1.0 Strict DTD

ข้อกำหนดHTML 4.01ให้เหตุผลนี้สำหรับการเลิกใช้แท็ก:

องค์ประกอบ CENTER นั้นเทียบเท่ากับการระบุองค์ประกอบ DIV ด้วยแอตทริบิวต์ align ที่ตั้งไว้ที่ "center"


14
ผมจึงหวังว่าเรื่องนี้เป็นจริงจริง
badp

61
นี่เป็นความจริง แต่การจัดตำแหน่งของ DIV ก็เลิกใช้เช่นกัน: D
Oleh Prypin

22
โปรดทราบว่า w3schools ไม่ใช่ W3C
showdev

4
"องค์ประกอบ CENTER นั้นเทียบเท่ากับการระบุองค์ประกอบ DIV ด้วยแอตทริบิวต์ align ที่ตั้งค่าไว้ที่" center " ยกเว้นจะชัดเจนโดยดูที่แท็กที่อยู่กึ่งกลาง หากนี่เป็นเหตุผลที่ถูกต้องเราสามารถแยกแยะ <strong>, <b>, <h> ทั้งหมดและแท็กอื่น ๆ และบอกว่าพวกเขาทำสิ่งเดียวกันกับ <span> ด้วย css นอกจากนี้ XHTML ยังไม่รู้จักแท็ก HTML5 เช่น canvas มันถูกปฏิเสธเพียงเพราะสงครามต่อต้าน marquees, ศูนย์, ตาราง, กรอบซึ่งเป็นศาสนาที่บริสุทธิ์อย่างที่พวกเขาทั้งหมดมีสถานที่
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> ของคุณออกไปจากคุณให้ถามพวกเขาว่า CSS มีอะไรเทียบเท่ากับแอตทริบิวต์ colspan หรือ rowspan

มันไม่ได้เป็นความจริงที่เป็นนามธรรมหรือเป็นหนอนหนังสือ แต่เป็นความจริงที่มีชีวิตที่มีค่า
- เซน


คุณสามารถใช้display:flex; justify-content:center; text-align:center
Justin Liu

11

คุณยังสามารถใช้กับXHTML 1.0 TransitionalและHTML 4.01 Transitional ได้หากต้องการ วิธีอื่น ๆ (วิธีที่ดีที่สุดในความคิดของฉัน) อยู่ที่ระยะขอบ:

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

HTML ของคุณควรกำหนดองค์ประกอบไม่ใช่ควบคุมการนำเสนอ


8

มันตั้งใจที่มาร์กอัปเช่นแท็ก HTML แสดงถึงความหมายและโครงสร้างไม่ใช่ลักษณะที่ปรากฏ มันผสมกันไม่ดีใน HTML เวอร์ชันแรก แต่คนทั่วไปพยายามที่จะทำความสะอาด

ปัญหาอย่างหนึ่งของการให้แท็กควบคุมลักษณะที่ปรากฏคือหน้าเว็บของคุณเล่นได้ไม่ดีกับอุปกรณ์สำหรับคนพิการเช่นโปรแกรมอ่านหน้าจอ นอกจากนี้ยังนำไปสู่การมีแท็กจำนวนมากในข้อความของคุณที่ไม่ได้ช่วยอธิบายความหมาย แต่ให้ถ่วงด้วยข้อมูลในระดับที่แตกต่างกัน

ดังนั้น CSS จึงคิดที่จะย้ายการจัดรูปแบบ / การแสดงผลเป็นภาษาอื่นซึ่งแยกจากข้อความและสามารถเก็บไว้ได้อย่างง่ายดาย เหนือสิ่งอื่นใดสิ่งนี้ช่วยให้การสลับสไตล์เพื่อเปลี่ยนลักษณะที่ปรากฏของเว็บเพจโดยไม่ต้องสัมผัสมาร์กอัพอื่น และเพื่อให้สามารถทำเช่นนั้นได้สำหรับหลาย ๆ เพจในหนึ่งบวม

เครื่องมือ CSS ช่วยให้คุณทำสิ่งนี้ไม่ได้สวยงามเสมอไปฉันอยู่เคียงข้างคุณ ตัวอย่างเช่นไม่มีวิธีการจัดกึ่งกลางแนวตั้งที่มีประสิทธิภาพ และการจัดกึ่งกลางแนวนอนถ้ามันไม่ใช่แค่การคล้อยตามข้อความtext-alignไม่ได้ดีมาก

คุณมีทางเลือกของการทำง่ายมีประสิทธิภาพและยุ่งเหยิงหรือสะอาดหรูหราและยุ่งยาก ฉันไม่เข้าใจว่าทำไมนักพัฒนาเว็บถึงมีความยุ่งเหยิงนี้ แต่ฉันคิดว่าพวกเขามีความสุขที่ได้มีโอกาสทำสิ่งต่างๆ


4
+1: ในฐานะคนที่ไม่ได้เป็นนักพัฒนาเว็บฉันตระหนักดีว่ามันยุ่งยากแค่ไหนในการระบุคุณลักษณะการนำเสนอบางอย่างด้วย CSS ฉันยังคงพบว่าการใช้ CSS ดีกว่าการทำมาร์กอัปโครงสร้าง แต่ก็ดีกว่า ... WTF? ใครเป็นผู้รับผิดชอบในการกำหนดสเป็ค CSS ลิงสุ่มที่พบในป่าห่างไกลบ้าง? อย่างจริงจัง.
Dan Molding

2
กรุณาอย่าดูถูกลิงสุ่มในป่าที่ห่างไกล!
DaveWalley

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>ทำทั้งสองอย่าง มันกว้างน่ารำคาญ
เควนติน

3

อาหารสำหรับความคิด: ซินธิไซเซอร์ข้อความเป็นคำพูดทำ<center>อะไรได้บ้าง


1
อาจพูดว่า "กึ่งกลาง" หรือ "กึ่งกลาง"
DaveWalley

เช่นเดียวกับที่ทำกับ css 'text-align: center; ฉันคิดว่า
MSpreij

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. ความจริงที่ว่าคุณมีวิธีอื่นที่จะทำบางสิ่งบางอย่างไม่ได้ทำให้มันไม่ถูกต้อง

ให้ฉันอธิบายเพราะมี downvoters ฉาวโฉ่ที่นี่ที่จะคิดว่าฉันปกป้อง HTML5 Oldschool หรืออะไร ไม่ฉันไม่ใช่. แต่การถกเถียงรอบตัวcenterนั้นเป็นเพียงแค่สงครามเทรนด์ไม่มีเหตุผลที่แท้จริงที่จะทิ้งแท็กที่ทำหน้าที่ได้อย่างถูกต้อง

ดังนั้นเรามาดูข้อโต้แย้งที่สำคัญกับมัน

  • "มันอธิบายการนำเสนอไม่ใช่ซีแมนติกส์!"
    ไม่มันอธิบายถึงการจัดเรียงเชิงตรรกะ - และใช่มีลักษณะเริ่มต้นเช่นเดียวกับแท็กอื่น ๆ เช่น<p>หรือ<ul>ทำ แต่ประเด็นก็คือความสัมพันธ์ส่วนที่ล้อมรอบกับสภาพแวดล้อม Center บอกว่า "นี่คือสิ่งที่เราแยกจากกันโดยการวางตำแหน่งที่แตกต่างกัน"

  • "มันไม่ถูกต้อง"
    ใช่มันเป็น มันเลิกเพียงในขณะที่จะถูกลบออกในภายหลัง มากกว่า 15 ปีแล้ว และมันจะไม่ไปไหนทั้งนั้น มีเว็บไซต์หลักที่ใช้แท็กนี้เพราะสามารถอ่านได้และตรงประเด็น

  • "ไม่รองรับ HTML5"
    เป็นหนึ่งในแท็กที่ได้รับการสนับสนุนอย่างกว้างขวางที่สุด

  • "มันคือ oldschool"
    Shoelaces ก็เป็น oldschool ด้วยเช่นกัน วิธีการใหม่ไม่ทำให้เก่าใช้ไม่ได้ คุณต้องการที่จะรู้สึกก้าวหน้าและทันสมัย: ดี แต่อย่าทำให้เป็นกฎหมาย

  • "มันโง่ / งุ่มง่าม / อ่อนแอ / เล่าเรื่องเกี่ยวกับคุณ"
    ไม่มีสิ่งเหล่านี้ มันเหมือนค้อน: เครื่องมือหนึ่งสำหรับงานเฉพาะ มีเครื่องมืออื่น ๆ สำหรับงานเดียวกันและงานอื่น ๆ สำหรับเครื่องมือเดียวกัน แต่มันถูกสร้างขึ้นเพื่อแก้ไขปัญหาบางอย่างและปัญหานั้นยังคงอยู่ดังนั้นเราอาจใช้วิธีแก้ปัญหาเฉพาะ

  • "คุณไม่ควรทำเช่นนี้เพราะ CSS"
    Centering สามารถอย่างทำได้โดย CSS แต่นั่นเป็นเพียงวิธีหนึ่งที่ไม่เพียงคนเดียวให้คนเดียวเท่านั้นที่เหมาะสมหนึ่ง สิ่งที่ได้รับการสนับสนุนการทำงานและสามารถอ่านได้ควรจะใช้ได้

TL; DR:

เหตุผลเดียวที่จะไม่ใช้<center>เพราะคนจะเกลียดคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.