W3Schools.com और मुझे पूरा यकीन है कि मुझे W3C.org की स्थिति याद है जो <menu>
टूलबार मेनू और लिस्टिंग फॉर्म कंट्रोल कमांड के लिए उपयोग की जानी चाहिए।
तो, मुझे अपने मुख्य मेनू के लिए किसका उपयोग करना चाहिए? Nav
, या Menu
? फर्क पड़ता है क्या?
W3Schools.com और मुझे पूरा यकीन है कि मुझे W3C.org की स्थिति याद है जो <menu>
टूलबार मेनू और लिस्टिंग फॉर्म कंट्रोल कमांड के लिए उपयोग की जानी चाहिए।
तो, मुझे अपने मुख्य मेनू के लिए किसका उपयोग करना चाहिए? Nav
, या Menu
? फर्क पड़ता है क्या?
जवाबों:
nav
आंतरिक लिंक ( a
तत्वों) के समूहों के लिए उपयोग किया जाता है । आम तौर पर इसका मतलब यह है कि लिंक को अलग पृष्ठों की यात्रा करनी चाहिए, या AJAX पृष्ठ के मामले में सामग्री को बदलना चाहिए। किसी nav
आइटम पर क्लिक करते समय किसी प्रकार की सामग्री परिवर्तन की अपेक्षा करें ।
menu
(नियंत्रणों के समूहों के लिए प्रयोग किया जाता है a
, input
, button
)। आम तौर पर इसका मतलब है कि इनपुट को पृष्ठ के भीतर एक फ़ंक्शन करना चाहिए। किसी menu
आइटम पर क्लिक करते समय किसी प्रकार की जावास्क्रिप्ट इंटरैक्शन की अपेक्षा करें ।
nav
: साइट के लिए नेविगेशन ।
menu
: वेब एप्लिकेशन के लिए मेनू ।
<li>
तत्व सीधे एक <menu>
टैग के तहत घोंसले के तत्वों को अनुमति देता है <ul>
। आवश्यकता है कि है <menu>
की type
विशेषता के लिए छोड़े गए या सेट है "toolbar"
। के लिए विनिर्देशन देखें तत्व और तत्व । <li>
<menu>
<menu>
W3C एचटीएमएल 5 स्पेक्स में से एक में इंगित कर सकता है ? मैं इसे WHAT WG संस्करण में पा रहा हूं , लेकिन नवीनतम W3C HTML 5.3 ड्राफ्ट में नहीं ।
यहां एक HTML5Doctor पोस्ट है,nav
जो इस से अलग है menu
(मूल रूप से, वास्तविक एप्लिकेशन में इसका उपयोग करने के तरीके)। जैसा चाहो वैसा दिखता है nav
।
इसके साथ <menu>
यह आमतौर पर संदर्भ मेनू के लिए उपयोग किया जाता है।
MDN के पास इस पर अच्छे दस्तावेज हैं: https://developer.mozilla.org/en-US/docs/Web/HTML/Elementment-menu
इस उत्तर को प्राप्त करने के लिए सबसे अच्छी जगह HTML 5 मानक हैं जो उन्हें स्व।
मेनू HTML 5.1 2 संस्करण में परिभाषित किया गया है ।
यह, "... आदेशों के एक समूह का प्रतिनिधित्व करता है।"
HTML 5 में Nav परिभाषित किया गया है ।
यह ", ... एक पृष्ठ का एक भाग है जो अन्य पृष्ठों या पृष्ठ के कुछ हिस्सों से जोड़ता है: नेविगेशन लिंक के साथ एक अनुभाग।"
नौसेना के लिए ऐसे नोट्स हैं जिन्हें मैंने शामिल नहीं किया है, लेकिन लगता है कि महत्वपूर्ण हैं, लेकिन मुझे लगता है कि आपके लिए यह सर्वोत्तम है कि आप मानकों से खुद को परिभाषा दें।
इस पोस्ट में उत्तर के रूप में चिह्नित परिभाषाएँ सही के करीब हैं, लेकिन उनमें असंगत कथन हैं जो उत्तर को ही गलत बनाते हैं।
<nav>
एक अनुभाग है (जैसे <section>
या <article>
) तो यह आपके HTML दस्तावेज़ की रूपरेखा में दिखाई देगा। इसके कारण, मैं <menu>
99% समय का उपयोग करूंगा । मेरे लिए, के <nav>
बीच एक मिश्रण है <section>
और <menu>
, अतिरिक्त बाधा के लिए जिसे <nav>
विशेष रूप से नेविगेशन के लिए उपयोग किया जाना चाहिए, जबकि <menu>
ऐसा कुछ भी हो सकता है जिसे मेनू कहा जा सकता है (नेविगेशन बार सहित)। इसलिए अधिकांश नेविगेशन बार, इस तथ्य के बावजूद कि वे नेविगेशन बार हैं, और की सख्त आवश्यकताओं के अनुरूप नहीं हैं <nav>
, और<menu>
अधिक उपयुक्त है।
मैंने अपने वेब डेवलपमेंट करियर में कभी भी ऐसी स्थिति नहीं पाई जहां मैं चाहता था कि मेरा नेविगेशन बार दस्तावेज़ की रूपरेखा का हिस्सा हो।
<menu>
एक ऐसी वेबसाइट पर उपयोग करना चाहिए जो वेब ऐप नहीं है - 99% समय, आपका नेविगेशन 'मेनू' पृष्ठ पर अन्य पृष्ठों या अन्य अनुभागों के लिए स्थिर लिंक होगा, जो कि <nav>
, के अनुसार है कल्पना करने के लिए।
nav
तो यह एक अच्छा टैग विकल्प नहीं nav
है क्योंकि यह एक खंड तत्व है इसलिए यह दस्तावेज़ की रूपरेखा का हिस्सा बन जाएगा जैसे कि यह एक हेडर और सामग्री के साथ एक खंड है। यह वास्तव में एक दुर्लभ परिदृश्य है, जहाँ आप चाहते हैं कि आप nav
एक अनुभाग की तरह काम करें। menu
सिमेंटिक रिप्लेसमेंट के रूप में सिर्फ एक सुझाव था। मुझे यह कहते हुए युक्ति में कुछ भी दिखाई नहीं दे रहा है कि इसका उपयोग इस तरह से नहीं किया जा सकता है। फिट करने के लिए लगता है। लेकिन अगर आप किसी कारण से मानते हैं कि मेनू केवल उसी चीज़ के लिए है जिसे आप वेब ऐप के रूप में परिभाषित करते हैं, तो मैं सलाह देता हूं ol
या ul
प्रतिस्थापन के रूप में।
<menu>
इस समय अब तक गरीब समर्थन हासिल है। (क्या यह वास्तव में सच है कि क्रोम के पास इसके लिए कोई समर्थन नहीं है?) इसके अलावा, आप role="menu"
किसी अन्य तत्व (जैसे डिव या नेवी) को विशेषता प्रदान करके सटीक समान शब्दार्थ प्राप्त कर सकते हैं । भूमिका विशेषता किसी भी तत्व के लिए डिफ़ॉल्ट शब्दार्थ को ओवरराइड करती है।