2012-06-04 25 views
39

मेरी इच्छा है कि HTML कुछ अर्थात् इसके बराबर कुछ कर सके;क्या एचटीएमएल तत्व के साथ डीटी और डीडी को लपेटने का कोई वैध तरीका है?

<dl class="main-list"> 
    <definitionitem> 
     <dt>Some Thing</dt> 
      <dd>You know it!</dd> 
     <dt>Another Thing</dt> 
      <dd>Word.</dd> 
    </definitionitem> 
    <definitionitem> 
     <dt>Stuff</dt> 
      <dd>Alright!</dd> 
    </definitionitem> 
</dl> 

हालांकि, निकटतम होने के बाद से मैं कुछ अर्थशास्त्र से 100% संतुष्ट नहीं हूं;

<div class="redundant-wrapper"> 
    <dl class="main-list"> 
     <dt>Some Thing</dt> 
      <dd>You know it!</dd> 
     <dt>Another Thing</dt> 
      <dd>Word.</dd> 
    </dl> 
    <dl class="another-main-list"> 
     <dt>Stuff!</dt> 
      <dd>Alright!</dd> 
    </dl> 
</div> 

मैं सोच रहा था कि किसी के पास कोई अन्य विचार है कि आप यह कैसे कर सकते हैं?

इसके अलावा, वस्तुओं को समूहीकृत करने का कारण यह है क्योंकि वे चिह्नित सामग्री में दृष्टि से समूहित हैं। एक परिभाषा पृष्ठ की कल्पना करें, एक परिभाषा सूची के साथ, जहां प्रत्येक परिभाषा एक इन्सेट बॉक्स में है जो बाईं ओर तैरती है। मैं हर समय इस स्थिति में भागता हूं।

+7

'dt' और' dd' को एक साथ लपेटने के लिए 'सिंथैक्टिक रूप से मान्य' या यहां तक ​​कि 'मान्य' बिल्कुल भी नहीं है; 'डीएल' के केवल वैध * बच्चे' dt' और 'dd' हैं। –

+0

मैं समझता हूं कि यह मान्य नहीं है। मैं क्या सोच रहा हूं, लोग एक "डीटी/डीडी जोड़ी को एक" परिभाषा वस्तु "के रूप में कैसे जोड़ते हैं, अर्थात्, आप एक तर्क दे सकते हैं कि परिभाषा एक" परिभाषा सूची "का एक अर्थपूर्ण बच्चा है, स्वयं डीटी/डीडी के बच्चे होने –

+2

@ जोसियासप्रग - आप

'तत्व के बाद' 'तत्व के बाद '
' तत्व डाल देंगे और किसी अन्य '
' तत्वों से पहले। – Quentin

उत्तर

54

नहीं, इयान हिक्सन (एचटीएमएल कल्पना संपादक) convinced है कि यह एक सीएसएस समस्या, न कि कोई HTML एक है:

यह आवश्यक नहीं होना चाहिए। यह सीएसएस की एक सीमा है।

सीएसएस के लिए कुछ छद्म-तत्व या अन्य तंत्र प्रदान करने का सही समाधान है जो एक अज्ञात कंटेनर को पेड़ में प्रस्तुत करता है जो उन तत्वों को लपेटता है जिन्हें आप लपेटना चाहते हैं।

एक ही समय, fantasai (सीएसएस कल्पना संपादक) पर contrary में आश्वस्त है:

मुझे नहीं लगता कि यह एक सीएसएस समस्या है। मुझे लगता है कि यह एक HTML समस्या है। छद्म-तत्व spec के लिए एक गैर-तुच्छ बात है, और एक गैर-तुच्छ लागू करने के लिए चीज, और तुलनात्मक रूप से भ्रमित करने वाली चीज़ का उपयोग करने के लिए।

फिर भी, इयान स्पष्ट रूप से अनदेखा करता है और वास्तविकता से अलग रहता है।

LEGEND में वही समस्याएं (जो HTML कल्पना के अनुसार FIELDSET के पहले प्रत्यक्ष बच्चे होना चाहिए), FIGCAPTION (कि FIGURE की प्रथम/अंतिम प्रत्यक्ष बच्चे होना चाहिए), और LI (UL/OL के प्रत्यक्ष बच्चे) कर रहे हैं।

विशेष रूप से DT/DD का सवाल है, मैं व्यक्तिगत रूप से UL सूची DL साथ LI में से प्रत्येक के अंदर का उपयोग करें:

<ul> 
    <li><dl> 
     <dt>Lorem</dt> 
     <dd>Lorem definition</dd> 
    </dl></li> 

    <li><dl> 
     <dt>Ipsum</dt> 
     <dd>Ipsum definition</dd> 
    </dl></li> 
</ul> 

तो हम DL है DT और DD, और UL सूची के बीच संबंध बनाने के लिए उन सब को बनाने के लिए एक सूची से संबंधित है।

अद्यतन (2016/11/14): HTML मानक (अब के लिए WHATWG version) अब (2016/10/31 के बाद से) allowsDIV तत्व (वैकल्पिक तथाकथित स्क्रिप्ट का समर्थन तत्वों SCRIPT, TEMPLATE के साथ intermixed) DL तत्वों के प्रत्यक्ष बच्चे होने के लिए।W3C का HTML validator इस परिवर्तन के लिए अभी तक खाता नहीं है, लेकिन प्रयोगात्मक HTML5.org validator करता है।

अद्यतन (2017/01/18): बाहर कर देता है कल्पना not के लिए DT/DD एक से अधिक नेस्टेड DIV आवरण अनुमति नहीं है, इसलिए व्यवहार में सुविधा की उपयोगिता वास्तव में बहुत सीमित है और ULLI → यहां वर्णित DL दृष्टिकोण अभी भी प्रासंगिक है।

+3

मुझे इस विचार से प्यार है। यह अर्थपूर्ण रूप से सही नहीं है, लेकिन जैसा कि आपने कहा है, spec वास्तव में इसके लिए अनुमति नहीं देता है। यह अब तक का सबसे अर्थपूर्ण विचार है जो मैंने सुना है। आपके विचारों के लिए धन्यवाद! –

+1

एचटीएमएल स्पेक अब बदल गया है और 'डीएल' में 'div' की अनुमति देता है। https://html.spec.whatwg.org/multipage/semantics.html#the-dl-element – zcorpan

+0

@zcorpan वाह, धन्यवाद, साइमन। यह HTML दुनिया में एक तरह का प्रतिमान बदलाव है। बहुत बुरा परिवर्तन बहुत संकीर्ण है और पूरी तरह से 'डीटी'/'डीडी' तत्वों को समूहित करने के बारे में है, जबकि जेनेरिक कंटेनर अभी भी _not_ की अनुमति नहीं है _everywhere_ - उदा। 'लीजेंड' और 'फिगैप्टन' को लपेटने के लिए। मैं इसे सीएसएस पक्ष पर हल करने के लिए पसंद करूंगा, क्योंकि इससे समूहबद्ध तत्वों के अलग-अलग सेट होने की अनुमति मिल जाएगी। मीडिया प्रश्नों पर, लेकिन कम से कम एचटीएमएल में और कम से कम 'डीटी'/'डीडी' के लिए यह कुछ भी नहीं है। –