วิธีปิดแท็ก <img> อย่างถูกต้อง?


123
<img src='stackoverflow.png'>
<img src='stackoverflow.png'></img>
<img src='stackoverflow.png' />

ข้อใดถูกต้อง


6
คำถามคือ "จะปิดแท็ก <img> อย่างถูกต้องได้อย่างไร" ซึ่งเป็นคำถามจริงและคำตอบมีประโยชน์ คำถามนี้ไม่ควรถูกปิด

3
คำถามตอนนี้สบายดี มันเป็นความไม่ชัดเจนคลุมเครือไม่สมบูรณ์มากเกินไปในวงกว้างหรือ rhetorial มีคำตอบที่ดีด้านล่างเช่นกัน
David J.

ฉันไม่รู้ว่าคำตอบใดต่อไปนี้ถูกต้อง แต่ที่น่าสนใจคือ Code Inspector ของ Firefox จะเพิ่ม </img> ที่ท้ายแท็กหากคุณไม่ได้ใส่ไว้ที่นั่น และ IE ไม่ นี่เป็นสิ่งสำคัญในจักรวาลของฉัน
Chiwda

ปล. Dreamweaver ใส่แท็ก /> XHTML
Chiwda

คำตอบ:


50
<img src='stackoverflow.png' />

ทำงานได้ดีและปิดแท็กอย่างถูกต้อง ควรเพิ่มaltแอตทริบิวต์สำหรับผู้ที่มีความบกพร่องทางสายตา


4
ถูกต้องและ<img />ใช้ได้ใน [X] HTML / XML แม้ว่าปัจจุบันการใช้ XHTML จะหายากมากและหากเซิร์ฟเวอร์ของคุณให้บริการหน้าเว็บเพราะtext/htmlสิ่งที่คุณต้องกังวลคือการเขียน HTML ที่ถูกต้อง โอกาสที่จะต้องย้ายแอป HTML ไปยัง XHTML นั้นใกล้เคียงกับศูนย์
FabrícioMatté

1
คำตอบข้างต้นจะไม่สามารถตรวจสอบความถูกต้องด้วยตัวตรวจสอบ HTML ของ W3C หากกำหนดเป้าหมาย 4.01 Transitional ขึ้นไป ดูบริการตรวจสอบความถูกต้องมาร์กอัป W3Cด้วย ฉันเชื่อว่าคำตอบข้างต้นต้องใช้ HTML5 หรือ XHTML เพื่อหลีกเลี่ยงความล้มเหลวในการตรวจสอบความถูกต้องคุณต้องใช้สิ่งนี้<img src='stackoverflow.png'>(ถ้ามันสำคัญกับคุณ)
jww

1
@ FabrícioMattéคุณประมาท xhtml อย่างมากในการใช้งานจริง ยิ่ง บริษัท มีขนาดใหญ่ก็ยิ่งมีโอกาสทำงานกับ xhtml มากกว่า html หรือ html5 ที่มีรูปแบบเช่น xhtml (เพื่อการแยกวิเคราะห์ที่ง่าย / เร็วขึ้น) หรือคุณทำงานกับสิ่งอื่น ๆ เช่น microdata หรือมาร์กอัปขั้นสูงเช่น ixbrl
Robert McKee

มีความแตกต่างอย่างมากระหว่าง "ใช้งานได้ดี" และ "ระบุ" และคุณจะไม่พบข้อกำหนด HTML ใด ๆ ที่เรียกใช้การใช้เครื่องหมายทับบนแท็กนั้น ดังที่คนอื่น ๆ กล่าวไว้อนุญาตให้ไม่ทำลายเว็บไซต์เดิมที่เขียนขึ้นเพื่อใช้ XHTML / XML แต่คุณจะไม่พบถ้อยคำหรือตัวอย่างใด ๆ ที่ระบุว่าจำเป็นต้องใช้งาน ในความเป็นจริงคุณจะพบว่าถ้อยคำที่ระบุว่าไม่มีความหมายและเบราว์เซอร์จะได้รับคำสั่งให้เพิกเฉย!
Rob

Rob - เมื่อ 6 ปีก่อนมีปัญหา สิ่งนี้แก้ไขได้ เดาว่าตอนนี้เบราว์เซอร์ดีขึ้น
Ed Heal

164

อันนี้เป็นHTML5 ที่ถูกต้องและใช้ได้ดีโดยไม่ต้องปิด มันเป็นองค์ประกอบที่เรียกว่าโมฆะ:

<img src='stackoverflow.png'>

ต่อไปนี้เป็นแท็ก XHTML ที่ถูกต้อง พวกเขาจะต้องปิด อันหลังก็ใช้ได้เช่นกันใน HTML 5:

<img src='stackoverflow.png'></img>
<img src='stackoverflow.png' />

5
ไม่เพียง แต่เป็น HTML5 ที่ถูกต้องเท่านั้น แต่ยังใช้ได้ใน HTML4 ด้วย HTML ไม่ต้องการองค์ประกอบ "โมฆะ" ที่ปิดตัวเองอย่างที่คุณกล่าว +1 สำหรับคำตอบที่สอดคล้องกัน
FabrícioMatté

2
HTML5 หรือ XHTML จะไม่สามารถตรวจสอบความถูกต้องกับตัวตรวจสอบ HTML ของ W3C หากกำหนดเป้าหมาย 4.01 Transitional ขึ้นไป ดูบริการตรวจสอบความถูกต้องมาร์กอัป W3Cด้วย คุณต้องใช้อันนี้<img src='stackoverflow.png'>(ถ้ามันสำคัญกับคุณ)
jww

แสดงความคิดเห็นหลังจากผ่านไปหลายปี ... รู้สึกสับสนเมื่อเห็น<img src="about:logo" alt="about:logo">แท็กในabout:logoหน้าของ Firefox 76 ! แม้ว่าจะdocument.body.innerHTMLแสดง<img src=\"about:logo\" alt=\"about:logo\">... คำตอบที่ดีมาก ...
S. Goswami

4

อันที่จริงมีเพียงอันแรกเท่านั้นที่ใช้ได้ใน HTML5

<img src='stackoverflow.png'>  

เฉพาะสองรายการสุดท้ายเท่านั้นที่ใช้ได้ใน XHTML

<img src='stackoverflow.png'></img>  
<img src='stackoverflow.png' />

(แม้ว่าจะไม่จำเป็นต้องaltเข้มงวด แต่ก็ควรรวมแอตทริบิวต์ _usually_ ไว้ด้วย)

ที่กล่าวว่าหน้า HTML5 ของคุณอาจจะแสดงตามที่ตั้งใจไว้เนื่องจากเบราว์เซอร์จะเขียนใหม่หรือตีความ html ของคุณตามที่คุณคิด นั่นอาจหมายความว่ามันจะเปลี่ยนแท็กตัวอย่างเช่นจากเข้า
<div /> หรืออาจจะเป็นเพียงแค่ละเว้นเฉือนสุดท้ายใน<div></div> ดู 2016: แสดง HTML5 เป็น XHTML 5.0 สำหรับการตรวจสอบความถูกต้องเดิม ดู: การอภิปรายปี 2011 และลิงก์เพิ่มเติมที่นี่แม้ว่าเมื่อเวลาผ่านไปบิตบางส่วนอาจมีการเปลี่ยนแปลง<img ... />

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

ดังนั้นแม้ว่าคุณจะสามารถหลีกเลี่ยงตัวเลือกใดก็ได้จากสามตัวเลือก
แต่ตัวเลือกแรกเท่านั้นที่ปฏิบัติตามมาตรฐาน HTML5 และรับประกันว่าจะผ่านโปรแกรมตรวจสอบ HTML5

กลยุทธ์ที่ดีอาจจะ:

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

นี่คือรายการแท็กที่ไม่ควรปิดใน HTML5 :

 <br>    <hr>    <input>       
 <img>  <link>   <source>  
 <col>  <area>   <base>
 <meta> <embed>  <param>  
<track>  <wbr>   <keygen> (HTML 5.2 Draft removed)

1
สิ่งนี้ไม่ถูกต้องทางเทคนิค องค์ประกอบโมฆะปิดตัวเองใช้ได้อย่างสมบูรณ์ใน html 5 ดูhtml.spec.whatwg.org/#start-tagsซึ่งจะทำให้<img src='stackoverflow.png' />ถูกต้องใน XHTML และ HTML 5 ทุกเวอร์ชัน
Robert McKee

1
@RobertMcKee ไม่ถูกต้องในทางเทคนิค แม้ว่าจะอนุญาตให้ใช้เครื่องหมายทับปิดได้และจะไม่ถูกตั้งค่าสถานะว่าเป็นข้อผิดพลาด แต่จะไม่มีที่ใดในข้อกำหนด HTML ใด ๆ ที่คุณจะเห็นว่ามีการระบุว่าจะใช้ อนุญาตให้ไม่ทำลายเว็บไซต์รุ่นเก่าที่ใช้ XHTML / XML แต่ไม่มีที่ไหนเลยที่คุณจะพบข้อกำหนด HTML ใด ๆ ที่แสดงโดยคำหรือตัวอย่างการใช้เครื่องหมายทับบนแท็กเหล่านั้นที่ W3C ระบุไว้ หรือ WHATWG
Rob

@Rob ตามเอกสาร WHATWG ที่ฉันเชื่อมโยงข้างต้นในหัวข้อ 12.1.2.1.6 - Then, if the element is one of the void elements, or if the element is a foreign element, then there may be a single U+002F SOLIDUS character (/). This character has no effect on void elements, but on foreign elements it marks the start tag as self-closing.img เป็นองค์ประกอบโมฆะต่อส่วน 12.1.2
Robert McKee

1
@RobertMcKee ค่ะ นั่นคือ (ส่วนหนึ่ง) ข้อกำหนดที่ระบุสาเหตุที่อนุญาตให้ใช้เครื่องหมายทับ (ด้วยเหตุผลที่ฉันให้ไว้ในความคิดเห็นก่อนหน้านี้) อย่างไรก็ตามคุณควรดูข้อกำหนดที่แท้จริงสำหรับองค์ประกอบนั้น - img ในกรณีนี้ซึ่งแสดงให้เห็นอย่างชัดเจนโดยใช้คำและตัวอย่างว่าไม่จำเป็นต้องมีหรือระบุเครื่องหมายทับปิด ในความเป็นจริงโดยไม่ต้องค้นหาการอ่านเพิ่มเติมในส่วนนั้นจะระบุว่าเครื่องหมายทับไม่มีความหมายไม่ต้องทำอะไรเลยและเบราว์เซอร์จะต้องละเว้น ดังนั้นจึงไม่มีประโยชน์และไม่มีจุดหมายและนำเรากลับไปที่ความคิดเห็นเดิมของฉัน: ไม่ได้ใช้เครื่องหมายสแลชปิด
Rob

1
@Rob ใช่มันเป็นทางเลือก แต่ใช้ได้อย่างสมบูรณ์ที่จะทำเช่นนั้น ซึ่งทำให้คำสั่งActually, only the first one is valid in HTML5ไม่ถูกต้องทางเทคนิค อันที่สองใช้ได้ใน HTML5 เช่นกัน ไม่จำเป็น แต่ถูกต้อง ไม่มีใครเถียงว่าจำเป็น เฉพาะตามข้อกำหนดเท่านั้นการใช้รูปแบบการปิดด้วยตนเองของแท็กจะใช้ได้กับ XHTML และ HTML ในปัจจุบันทุกรูปแบบ
Robert McKee

2

การใช้แท็กที่ดีที่สุดที่คุณควรใช้:

<img src="" alt=""/>

นอกจากนี้คุณสามารถใช้ใน HTML5:

<img src="" alt="">

สองสิ่งนี้ใช้ได้อย่างสมบูรณ์ใน HTML5 เลือกหนึ่งในนั้นและยึดติดกับสิ่งนั้น


ประการแรกไม่ใช่สิ่งที่ดีที่สุดเนื่องจากไม่ได้ระบุไว้ในมาตรฐาน HTML ใด ๆในขณะที่อย่างที่สองคือ ครั้งแรกได้รับอนุญาตด้วยเหตุผลทางประวัติศาสตร์เท่านั้น! (ความเข้ากันได้กับการใช้งาน XHTML / XML ในเว็บไซต์รุ่นเก่าที่จะพังหากเบราว์เซอร์ไม่อนุญาต)
Rob

ไม่แน่ใจว่า Rob กำลังพยายามพูดอะไรที่นี่ แต่ข้อมูลจำเพาะของ html ระบุว่าครั้งแรกถูกต้อง
Robert McKee

2

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

<img src='stackoverflow.png'>
<img src='stackoverflow.png' />

คุณสมบัติที่สองเหมาะสมกว่า


ไม่ถูกต้อง อย่างแรกคือสิ่งเดียวที่ระบุในข้อกำหนด HTML ใด ๆ ข้อที่สองได้รับอนุญาตด้วยเหตุผลทางประวัติศาสตร์เท่านั้น แต่ไม่ได้ระบุอีกครั้งตามที่ต้องการ
Rob

1

- แท็กว่างเปล่าและมีแอตทริบิวต์เท่านั้น - แท็กไม่มีแท็ก 'ปิด'

ดังนั้น,

<img src='stackoverflow.png'>
<img src='stackoverflow.png' />

ทั้งสองอย่างถูกต้องใน HTML5 ด้วย


ข้อแรกถูกต้อง! ประการที่สองได้รับอนุญาตจากเหตุผลทางประวัติศาสตร์เท่านั้น (ความเข้ากันได้กับการใช้งาน XHTML / XML ในเว็บไซต์รุ่นเก่าที่จะพังหากเบราว์เซอร์ไม่อนุญาต)
Rob

1

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

หากคุณไม่เคยพยายามที่จะแยกวิเคราะห์เนื้อหาให้ละเว้นการปิด

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