2012-03-01 8 views
18

में एकाधिक वर्ग विशेषताओं का क्या होता है जब किसी तत्व के पास class विशेषताएँ होती हैं?एचटीएमएल

<div id="test" class="one two three" class="four"> 

मैं एक WordPress प्लग में post_class(); के उत्पादन के एक वर्ग को जोड़ने के लिए कोशिश कर रहा हूँ, लेकिन समारोह में ही पूरे हिस्सा class="one two three"

पैदा कर रही है यह class="one two three four" के बराबर है? या पहली या दूसरी जीत करता है? या यह अनिर्धारित व्यवहार है, इस मामले में प्रमुख ब्राउज़र क्या करते हैं?

यदि आप इस स्निपेट (वर्डप्रेस प्लगइन) में कक्षा जोड़ने का सही तरीका जानते हैं, तो इसकी भी सराहना की जाएगी!

<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> 

उत्तर

25

क्या होता है एक तत्व एकाधिक वर्ग गुण होते हैं जब?

जब एक विशेषता एक भी तत्व (जो अमान्य HTML है, वैसे) के लिए कई बार घोषित किया जाता है, व्यवहार के लिहाज से पहले मान ही विशेषता के लिए बाद के सभी मूल्यों को पार कर जाएगी। तो इस मामले में, आपके तत्व में केवल कक्षाएं होंगी।

यह व्यवहार the HTML5 spec, 8.2.4.35 Attribute name state में समझाया गया है, "... यदि पहले से ही उसी तत्व के साथ [तत्व] पर एक विशेषता है, तो यह एक पार्स त्रुटि है और नई विशेषता को हटा दिया जाना चाहिए ..."

यदि आप इस स्निपेट (वर्डप्रेस प्लगइन) में कक्षा जोड़ने का सही तरीका जानते हैं, तो इसकी भी सराहना की जाएगी!

आमतौर पर, यदि आप अपने WordPress पदों के लिए गतिशील रूप से कस्टम वर्गों को जोड़ने की आवश्यकता है, तो आप post_class फिल्टर पर हुक और आवश्यक के रूप में $classes सरणी में हेरफेर। यहाँ यह मोटे तौर पर मेरी विषयों में कैसा दिखता है:

function nv_post_class($classes) { 
    // Most recent post on the front page 
    global $count; 
    if (is_home() && 1 == $count) 
     $classes[] = 'latest-post'; 

    return $classes; 
} 

add_filter('post_class', 'nv_post_class'); 

आप केवल उन्हें एक अंतरिक्ष-सीमांकित स्ट्रिंग के रूप में post_class() को सीधे पारित एक या अधिक स्थिर कक्षाओं को जोड़ने के लिए की जरूरत है: अधिक पर

<div id="post-<?php the_ID(); ?>" <?php post_class('myclass1 myclass2'); ?>> 

यह WordPress Codex में है।

6

तब दस्तावेज़ अमान्य होगा और ब्राउज़र त्रुटि पुनर्प्राप्ति करने का प्रयास करेगा।

HTML 5 specification से:

तो विशेषता का नाम विशेषता सूची में पहले से ही है, तो कदम लेबल विशेषताओं पर वापस जाएँ।

तो, यदि कोई HTML 5 पार्सर उपयोग किया जा रहा है, तो पहली विशेषता लागू होनी चाहिए।

+1

कम से कम वेबकिट और फ़ायरफ़ॉक्स में, यह सही है, पहले वर्गों को सम्मानित किया जाता है, बाद में गिरा दिया जाता है। [फिडल] (http://jsfiddle.net/sBp5Z/) – steveax