जवाबों:
दोनों संस्करण सही हैं। उनके बीच सबसे बड़ा अंतर यह है कि <h1><a>..</a></h1>
शीर्षक में केवल पाठ के मामले में क्लिक करने योग्य होगा।
यदि आप <a>
चारों ओर डालते हैं <h1>
और सीएसएस display
संपत्ति है block
(जो कि डिफ़ॉल्ट रूप से है) पूरे ब्लॉक ( <h1>
और कंटेनर की चौड़ाई की 100% की चौड़ाई <h1>
) में क्लिक करने योग्य होगा।
ऐतिहासिक रूप से आप एक इनलाइन तत्व के अंदर एक ब्लॉक एलिमेंट नहीं डाल सकते हैं, लेकिन HTML5 के साथ ऐसा नहीं है। मुझे लगता है कि <h1><a>..</a></h1>
दृष्टिकोण अधिक पारंपरिक है।
इस मामले में जहां आप शीर्षक पर एक लंगर डालना चाहते में, तुलना में एक बेहतर दृष्टिकोण <a id="my-anchor"><h1>..</h1></a>
का उपयोग या तो होगा id
या name
इस तरह विशेषता: <h1 id="my-anchor">..</h1>
या<h1 name="my-anchor">..</h1>
<a>
ताकि वे एक मंडराना स्थिति साझा करें: jsfiddle.net/jjyLemq2
<a><h1></h1></a>
W3C मान्य नहीं है ... मूल रूप से, आप इनलाइन तत्वों के अंदर ब्लॉक तत्व नहीं डाल सकते हैं
<h1><a>..</a></h1>
और <a><h1>..</h1></a>
हमेशा लगभग एक ही व्यवहार किया है, जब शैली की चादरें प्रतिपादन को प्रभावित नहीं करती हैं। लगभग, लेकिन काफी नहीं। यदि आप टैब कुंजी का उपयोग करके नेविगेट करते हैं या किसी लिंक पर ध्यान केंद्रित करते हैं, तो अधिकांश ब्राउज़र में लिंक के चारों ओर "फोकस आयत" दिखाई देता है। इसके लिए <h1><a>..</a></h1>
, यह आयत केवल लिंक पाठ के आसपास है। के लिए <a><h1>..</h1></a>
, आयत उपलब्ध क्षैतिज स्थान में फैली हुई है, क्योंकि मार्कअप a
तत्व को रेंडर करने में एक ब्लॉक तत्व बनाता है , जो डिफ़ॉल्ट रूप से 100% चौड़ाई पर कब्जा कर लेता है ।
निम्नलिखित दिखाता है कि <a href=foo><h1>link</h1></a>
क्रोम द्वारा कैसे ध्यान केंद्रित किया गया है:
इसका तात्पर्य यह है कि यदि आप लिंक के लिए पृष्ठभूमि रंग सेट करके तत्वों को शैली देते हैं, तो प्रभाव समान तरीके से भिन्न होते हैं।
ऐतिहासिक रूप से, <a><h1>..</h1></a>
HTML 2.0 में अमान्य घोषित किया गया था, और बाद में HTML विनिर्देशों के अनुरूप था, लेकिन HTML5 इसे बदल देता है और इसे वैध घोषित करता है। औपचारिक परिभाषा ने ब्राउज़र को प्रभावित नहीं किया है, केवल सत्यापनकर्ता। हालांकि, यह दूरस्थ रूप से संभव है कि कुछ उपयोगकर्ता एजेंट (शायद सामान्य ब्राउज़र नहीं हैं, लेकिन उदाहरण के लिए विशेष HTML रेंडरर्स, डेटा एक्सट्रैक्टर्स, कन्वर्टर्स, आदि) <a><h1>..</h1></a>
ठीक से संभालने में विफल हैं , क्योंकि विनिर्देशों में इसकी अनुमति नहीं दी गई है।
एक शीर्षक में एक शीर्षक या पाठ बनाने के लिए एक अच्छा कारण है। (यह प्रयोज्यता के लिए अधिकांशतः अतार्किक और बुरा है।) लेकिन एक ऐसा ही सवाल अक्सर उठता रहा है जब किसी शीर्षक के लिए एक संभावित गंतव्य शीर्षक (या शीर्षक में पाठ) का उपयोग करते हुए, उदाहरण के लिए <h2><a name=foo>...</a></h2>
बनाम <a name=foo><h2>...</h2></a>
। इसी तरह के विचार इस पर लागू होते हैं (दोनों काम करते हैं, अंतर हो सकता है क्योंकि उत्तरार्द्ध a
तत्व को एक ब्लॉक बनाता है , और एचटीएमएल 5 से पहले, केवल पूर्व को औपचारिक रूप से अनुमति दी जाती है)। लेकिन इसके अलावा, दोनों तरीके पुराने हैं, और id
शीर्षक तत्व पर सीधे विशेषता का उपयोग करना अब अनुशंसित है <h2 id=foo>...</h2>
:।
"There is seldom a good reason to make a heading or text in a heading a link"
-> मुझे उस पर असहमत होना चाहिए। हेडिंग को लिंक बनाने के वास्तव में बहुत अच्छे कारण हैं। उदाहरण दिया गया: ब्लॉग पोस्ट की एक सूची, जहाँ प्रत्येक शीर्षक एक लिंक भी है। या स्वयं SOUT चेकआउट करें: फ्रंटपेज पर सभी प्रश्न h3
तत्व हैं, और एक लिंक भी। वैसे भी, अच्छी व्याख्या;)
एच 1 तत्व ब्लॉक स्तर के तत्व हैं, और एंकर इनलाइन तत्व हैं। आपको एक ब्लॉक स्तर तत्व के भीतर एक इनलाइन तत्व रखने की अनुमति है, लेकिन दूसरे तरीके के आसपास नहीं। जब आप बॉक्स मॉडल और HTML कल्पना पर विचार करते हैं तो यह समझ में आता है।
तो निष्कर्ष में सबसे अच्छा तरीका है:
<h1><a href="#">Link</a></h1>
क्या आप हाइपरलिंक का उपयोग करना चाहते हैं <a href="…">
/ a:link
या क्या आप अपने शीर्षक में एक एंकर जोड़ना चाहते हैं? यदि आप एक लंगर जोड़ना चाहते हैं, तो आप बस एक आईडी असाइन कर सकते हैं <h1 id="heading">
। आप तब इसे लिंक कर सकते हैं page.htm#heading
।
आप शीर्षक क्लिक करने योग्य (एक लिंक) करना चाहते हैं, का उपयोग करें <h1><a></a></h1>
/ h1 > a
- पहली blocklevel तत्वों, और इनलाइन तत्वों के अंदर
इसके अलावा, शैली पदानुक्रम अंतर है। यदि आपके पास यह है <h1><a href="#">Heading here</a></h1>
, तो एंकर की शैली एच 1 तत्व की शैलियों को खत्म कर देगी। उदाहरण:
a {color:red;font-size:30px;line-height:30px;}
कभी भी मिल जाएगा
h1 {color:blue;font-size:40px;line-height:40px;}