2009-07-13 21 views
17

W3 specifies कि टेबल कॉलम के लिए केवल चार सीएसएस नियमों की अनुमति है (<col> तत्व के साथ) - सीमा, पृष्ठभूमि, चौड़ाई और दृश्यता।स्टाइलिंग टेबल कॉलम की अनुमति क्यों नहीं है?

किसी को भी इस निर्णय के पीछे के कारणों पता है? यदि आपके पास सीमाएं और पृष्ठभूमि हो सकती है, तो फोंट और रंग क्यों नहीं?

उत्तर

10

इयान हिक्सी यहां विस्तार से बताते हैं: The mystery of why only four properties apply to table columns। प्रासंगिक उद्धरण:

टेक्स्ट का रंग इसके तत्व की 'रंग' संपत्ति पर निर्भर है। निर्दिष्ट किए बिना, 'रंग' संपत्ति (मूल रूप से) 'उत्तराधिकारी' के लिए डिफ़ॉल्ट होती है, जिसका अर्थ है "मूल तत्व का मान लें"।

तो सेल में कुछ पाठ के लिए, रंग को सेल की 'रंग' संपत्ति द्वारा निर्धारित किया जाता है, जिसे पंक्ति से लिया जाता है, जो टेबल के माता-पिता से लिया जाता है, और इसलिए पर।

क्या स्तंभ के बारे में? खैर, कॉलम सेल के पूर्वजों में से एक नहीं है, इसलिए यह कभी भी देखने में नहीं आता है! और उसी में समस्या है।

+0

दिलचस्प पोस्ट। इसमें से बहुत कुछ समझ में आता है, लेकिन यह समझा नहीं जाता कि उन 4 सीएसएस नियमों की अनुमति क्यों है, लेकिन अन्य नहीं। निश्चित रूप से पार्सिंग मॉडल को पृष्ठभूमि लागू करने के लिए संशोधित करने की आवश्यकता है, तो पृष्ठभूमि क्यों नहीं बल्कि टेक्स्ट रंग क्यों? – DisgruntledGoat

+2

कॉलम में पृष्ठभूमि रंग है। यदि सेल और पंक्ति में पारदर्शी पृष्ठभूमि का रंग होता है, तो आप कॉलम रंग के बावजूद देख सकते हैं। यह सिर्फ एक दूसरे के शीर्ष पर लेयरिंग तत्व है। फ़ॉन्ट रंग इस तरह काम नहीं करता है। – Quentin

0

संभवतः क्योंकि तालिका में प्रत्येक पंक्ति को आपके कॉलम के लिए एक सेल प्रदर्शित करना आवश्यक नहीं है (उदा। कोल्स्पैन के कारण)। उस सेल को किस सेल को अपनी शैली का उत्तराधिकारी होना चाहिए? केवल अनुमान है।

+0

एक पूरी तरह गलत अनुमान है। अन्य उत्तरों देखें। – Quentin

8

बस अंधेरा मेरी समझ सीमित पर आधारित में एक जंगली वार:

मुझे लगता है कि स्तंभ संबंधित तत्वों के माध्यम से स्टाइल प्रतिबंधित है क्योंकि हालांकि <col> और <colgroup> कोशिकाओं के स्तंभों का प्रतिनिधित्व करते हैं, यह वास्तव में उन्हें शामिल नहीं है (वे कर रहे हैं वास्तव में <tr> एस द्वारा निहित)। इसके साथ प्राथमिकता और विशिष्टता और कैस्केडिंग के मुद्दे आते हैं (चूंकि कैस्केडिंग केवल निहित/कंटेनर तत्वों के बीच ही किया जा सकता है) - जब विरोधाभासी शैली <tr> और <col> (जो एकाधिक विरासत पदानुक्रम में समान स्तर होगी) होती है - जो कि चाहिए सेल वास्तव में उपयोग करते हैं?

क्यों विशेष रूप से स्टाइल विशेषताओं के उस विशेष मुट्ठी भर की अनुमति है: कोई विचार नहीं।

+1

विवादों के लिए, जो पृष्ठ मैंने लिंक किया है, वह कहता है कि कोशिकाएं पंक्तियों, फिर कॉलम पर प्राथमिकता लेती हैं। तो कॉलम पर किसी भी शैली को तब तक लागू किया जाता है जब तक कि पंक्ति या सेल स्तर पर ओवरराइड न हो जाए। – DisgruntledGoat

3

एक शब्द: अस्पष्टता। कोशिकाओं को पंक्तियों के बच्चे होना चाहिए; यह अन्यथा एक टेबल नहीं होगा। लेकिन से उतरने के लिए कोई स्तंभ नहीं है। colspan का उपयोग करना मतलब है कि एक सेल दो कॉलम में हो सकता है। कुछ भ्रमित तरीके से आने की कोशिश करने के बजाय, डेवलपर को प्रत्येक एनएच सेल पर class क्यों न दें?

यदि आप जिस लिंक को लिंक करते हैं उस पर आप बारीकी से देखते हैं, तो आप अस्पष्टता संकल्प पर प्रयास देखेंगे। width संपत्ति न्यूनतम निर्दिष्ट करती है; background पंक्ति और सेल में बैकसीट लेता है; और border एक "संघर्ष समाधान एल्गोरिदम" का संदर्भ देता है। एकमात्र कारण border के लिए भी एक एल्गोरिथ्म है क्योंकि यह काफी समझा जाता है, जो "जीत" चाहिए (विवरण के लिए एल्गोरिथ्म देखें)। लेकिन आप जो color या font "जीत" चाहिए पता लगाने की कोशिश की कल्पना कर सकता है?

+0

एह, @colspan और @rowspan के बीच क्या अंतर होगा? – Ms2ger

+0

@ ms2ger: एक colspan के साथ, एकाधिक पंक्तियों में फैला सेल हमेशा एक विशिष्ट '' तत्व का वंशज है। – DisgruntledGoat

+0

@ जॉर्ज: अच्छा जवाब लेकिन एक प्रश्न ... यदि मैं सही जगह पर देख रहा हूं, तो "संघर्ष समाधान एल्गोरिदम" बस प्राथमिकता के क्रम को सूचीबद्ध करता है: सेल (उच्चतम), पंक्ति, पंक्ति समूह, कॉलम, कॉलम समूह, तालिका। रंग या फ़ॉन्ट के लिए इसे क्यों लागू नहीं किया जा सकता है? – DisgruntledGoat

संबंधित मुद्दे

 संबंधित मुद्दे