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 จะแทนที่ความหมายเริ่มต้นสำหรับองค์ประกอบใด ๆ