W3Schools.com และฉันค่อนข้างแน่ใจว่าฉันจำได้ว่าเห็นสถานะ W3C.org ที่<menu>
ควรใช้สำหรับเมนู Toolbar และแสดงรายการคำสั่งควบคุมฟอร์ม
ฉันควรใช้เมนูใดในเมนูหลัก Nav
, หรือMenu
? มันสำคัญหรือไม่?
W3Schools.com และฉันค่อนข้างแน่ใจว่าฉันจำได้ว่าเห็นสถานะ W3C.org ที่<menu>
ควรใช้สำหรับเมนู Toolbar และแสดงรายการคำสั่งควบคุมฟอร์ม
ฉันควรใช้เมนูใดในเมนูหลัก Nav
, หรือMenu
? มันสำคัญหรือไม่?
คำตอบ:
nav
ใช้สำหรับกลุ่มของลิงก์ภายใน ( a
องค์ประกอบ) โดยทั่วไปหมายความว่าลิงก์ควรเดินทางไปยังเพจแยกกันหรือเปลี่ยนเนื้อหาในกรณีของเพจ AJAX คาดว่าเนื้อหาบางอย่างจะเปลี่ยนไปเมื่อคลิกที่nav
รายการ
menu
ถูกนำมาใช้สำหรับกลุ่มของการควบคุม ( a
, input
, button
) โดยทั่วไปหมายความว่าอินพุตควรทำหน้าที่ภายในเพจ คาดว่าจะมีการโต้ตอบกับจาวาสคริปต์บางประเภทเมื่อคลิกที่menu
รายการ
nav
: การนำทางสำหรับไซต์
menu
: เมนูสำหรับเว็บแอปพลิเคชัน
<li>
องค์ประกอบได้โดยตรงภายใต้<menu>
แท็กโดยไม่จำเป็นต้องมี<ul>
รายการ ความต้องการคือว่า<menu>
's แอตทริบิวต์ที่ถูกมองข้ามหรือตั้งค่าtype
"toolbar"
ดูข้อกำหนดสำหรับองค์ประกอบและองค์ประกอบ <li>
<menu>
<menu>
ในข้อกำหนด W3C HTML5 อย่างใดอย่างหนึ่งได้ไหม ฉันพบในเวอร์ชัน WHAT WGแต่ไม่ใช่ในร่าง W3C HTML 5.3ล่าสุด
นี่คือโพสต์ HTML5Doctor ที่nav
มีส่วนเกี่ยวกับความแตกต่างจากmenu
(โดยทั่วไปใช้ในแอปจริง) nav
ดูเหมือนว่าคุณต้องการ
โดย<menu>
ปกติจะใช้สำหรับเมนูบริบท
MDN มีเอกสารประกอบที่ดี: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu
สถานที่ที่ดีที่สุดในการรับคำตอบคือ HTML 5 มาตรฐานที่พวกเขากำหนดเอง
เมนูที่กำหนดไว้ในHTML 5.1 ฉบับที่
มัน "... แสดงถึงกลุ่มคำสั่ง"
Navถูกกำหนดไว้ในHTML 5
มันคือ "... ส่วนของเพจที่เชื่อมโยงไปยังเพจอื่น ๆ หรือไปยังส่วนต่างๆภายในเพจ: ส่วนที่มีลิงก์การนำทาง"
มีบันทึกสำหรับการนำทางที่ฉันไม่ได้รวมไว้ แต่คิดว่ามีความสำคัญ แต่ฉันคิดว่าดีที่สุดสำหรับคุณที่จะได้รับคำจำกัดความจากมาตรฐาน
คำจำกัดความที่ทำเครื่องหมายในโพสต์นี้เนื่องจากคำตอบใกล้จะถูกต้อง แต่มีข้อความที่ไม่เกี่ยวข้องอยู่ในคำจำกัดความที่ทำให้คำตอบนั้นผิด
<nav>
เป็นส่วน (เช่น<section>
หรือ<article>
) ดังนั้นจึงจะปรากฏในโครงร่างเอกสาร HTML ของคุณ ด้วยเหตุนี้ฉันจะใช้<menu>
99% ของเวลา สำหรับฉันแล้ว<nav>
เป็นการผสมผสานระหว่าง<section>
และ<menu>
กับการหดตัวที่เพิ่มเข้ามาซึ่ง<nav>
ควรใช้สำหรับการนำทางโดยเฉพาะในขณะที่<menu>
สามารถใช้กับอะไรก็ได้ที่อาจเรียกว่าเมนู (รวมถึงแถบนำทาง) ดังนั้นแถบนำทางส่วนใหญ่แม้ว่าจะเป็นแถบนำทาง แต่ก็ไม่เป็นไปตามข้อกำหนดที่เข้มงวด<nav>
และ<menu>
เหมาะสมกว่า
ฉันไม่เคยในอาชีพการพัฒนาเว็บไซต์ของฉันพบสถานการณ์ที่ฉันต้องการให้แถบนำทางเป็นส่วนหนึ่งของโครงร่างเอกสาร
<menu>
ในเว็บไซต์ที่ไม่ได้เป็น app เว็บ - 99% ของเวลาที่นำทางของคุณ 'เมนู' จะมีการเชื่อมโยงแบบคงที่ไปยังหน้าอื่นหรือส่วนอื่น ๆ บนหน้าซึ่งเป็นสิ่งที่<nav>
เป็นไปตาม ตามข้อกำหนด
nav
ไม่ใช่ตัวเลือกแท็กที่ดีเนื่องจากnav
เป็นองค์ประกอบของส่วนดังนั้นจึงจะกลายเป็นส่วนหนึ่งของโครงร่างเอกสารราวกับว่าเป็นส่วนที่มีส่วนหัวและเนื้อหา อันที่จริงนี่เป็นสถานการณ์ที่เกิดขึ้นได้ยากที่คุณต้องการให้คุณnav
ทำเหมือนส่วนหนึ่ง menu
เป็นเพียงข้อเสนอแนะเพื่อทดแทนความหมาย ไม่เห็นมีอะไรใน spec บอกว่าใช้แบบนี้ไม่ได้ ดูเหมือนจะพอดี แต่ถ้าคุณเชื่อด้วยเหตุผลบางประการว่าเมนูนั้นมีไว้สำหรับสิ่งที่คุณกำหนดเป็นเว็บแอปเท่านั้นฉันขอแนะนำol
หรือul
เปลี่ยนแทน
<menu>
ยังคงได้รับการสนับสนุนที่ไม่ดีในขณะนี้ (เป็นความจริงหรือไม่ที่ Chrome ไม่มีการสนับสนุน) นอกจากนี้คุณสามารถบรรลุความหมายเดียวกันโดยrole="menu"
ระบุแอตทริบิวต์ให้กับองค์ประกอบอื่น (เช่น div หรือ nav) แอ็ตทริบิวต์ role จะแทนที่ความหมายเริ่มต้นสำหรับองค์ประกอบใด ๆ