2009-09-13 7 views
8

मैं समझता हूं कि jQuery में, चयनकर्ताओं का उपयोग करते समय अधिक विशिष्ट होना फायदेमंद है ताकि jQuery को आप जो खोज रहे हैं उसे ढूंढने के लिए पूरे डोम को पार करने की आवश्यकता नहीं है। उदाहरण के लिए, $('span.description') सिर्फ $('.description') से बेहतर है यदि मुझे पता है कि description कक्षा केवल <span> तत्वों पर लागू होती है।क्या सीएसएस में बहुत विशिष्ट चयनकर्ताओं का उपयोग करने का कोई फायदा है?

क्या यह सीएसएस के साथ भी मामला है? क्या .description { } के बजाय span.description { } का उपयोग करने के लिए मेरे लिए कोई विशिष्ट लाभ है? मैं गति, अनुकूलन इत्यादि के मामले में सोच रहा हूं। क्या मैं ब्राउज़र को यह कहकर किसी भी काम को सहेज रहा हूं कि यह कहां देखना है?

उत्तर

7

यह सीएसएस में सही है -

एक अच्छा शासन निकटतम आईडी से पतित करने के लिए है। आईडी अनुक्रमित हैं इसलिए उन्हें ढूंढना बेहद तेज़ है। आपके चयनकर्ता में एक से अधिक का उपयोग करने का कोई कारण नहीं है।

Google Code- Optimize browser rendering

यह मैं इस एक- मुझे आशा है कि आप इसे उपयोगी पाते सहित विषय पर था ढेर सारे प्रश्न का उत्तर दिया।

+1

मैं ध्यान दूंगा कि आपके सीएसएस को अनुकूलित करने के लिए शायद आपके जेएस को अनुकूलित करने के समान प्रदर्शन लाभ प्राप्त करने वाला नहीं है। फिर भी मुझे लगता है कि इन चीजों को ध्यान में रखना एक बहुत अच्छा विचार है। –

+0

जानकारी/लिंक के लिए धन्यवाद और न केवल मुझे बता रहा है कि विशिष्टता क्या है। :) –

+2

"एक अच्छा नियम निकटतम आईडी से उतरना है"। एक बेहतर नियम यह है कि वंशज चयनकर्ताओं का उपयोग न करें बल्कि इसके बजाय वर्गों का उपयोग करें। यह समझना महत्वपूर्ण है कि ब्राउज़र चयनकर्ताओं को दाएं से बाएं से मूल्यांकन करते हैं, जिसका अर्थ है कि '# foo img' प्रत्येक 'आईएमजी' को डोम में ढूंढकर शुरू करेगा और फिर डीओएम पेड़ में आगे बढ़ेगा ताकि यह देखने के लिए कि शेष चयनकर्ता संतुष्ट है या नहीं। – KaptajnKold

0

जहां तक ​​मुझे पता है, आपके चयनकर्ता प्रदर्शन पर बहुत कम अंतर कैसे बनाते हैं।

दो क्षेत्रों जहां अधिक विशिष्ट चयनकर्ता सबसे उपयोगी हैं, जोखिम को कम करना है, जहां यह लागू नहीं है, जहां आप इसे नहीं चाहते हैं, और एक चयनकर्ता को दूसरे पर प्राथमिकता लेना है।

+0

@Rich: क्षेत्रों। इस पर ध्यान दिलाने के लिए धन्यवाद। – Guffa

1

यह हमेशा आपकी एचटीएमएल कोड और संरचना पर निर्भर करता है। विशेष रूप से आईडी और उचित चयनकर्ताओं का उपयोग करना निश्चित रूप से एक अच्छा विचार है। (यानी li.nav के बजाय #nav li)। चूंकि ब्राउजर पहले एचटीएमएल लोड करता है और फिर उस सीएसएस को लागू करता है जिसे आप बहुत मदद कर रहे हैं।

यह कहा गया है, जब शुद्ध सीएसएस (कोई jquery) की बात आती है तो गति में अंतर आजकल अंतर नहीं करना आसान है, क्योंकि प्रतिपादन इंजन अत्यधिक अनुकूलित होते हैं - खासकर जब यह सीएसएस लागू करने की बात आती है। तो आम तौर पर इससे कोई फर्क नहीं पड़ता।

-1

एक अधिक विशिष्ट नियम एक कम विशिष्ट नियम पर पूर्वता है, तो:

span.myclass {} 

पर पूर्वता है:

.myclass {} 

(कोई बात नहीं क्या आदेश है, जिसमें नियम घोषित किया गया)

+0

मुझे इसके बारे में पता है। मुझे इसमें क्या रूचि है कि यहां एक गति तर्क है या नहीं। –

+0

मुझे आश्चर्य होगा कि अगर यह –

2

सीएसएस विशिष्टता पर पढ़ें - जो आपके सीएसएस के साथ कम या ज्यादा विशिष्ट होने का सबसे महत्वपूर्ण कारण है।

http://www.w3.org/TR/CSS2/cascade.html#specificity

ब्राउज़र प्रदर्शन के रूप में काफी एक गैर मुद्दा (jQuery में के अलावा, जैसा कि आप उल्लेख किया है) है, मेरे दिशानिर्देश जब आप पूर्वता को नियंत्रित कर रहे हैं विशिष्ट होना है, या आप बनाना चाहते जब कुछ आपके सीएसएस में कुछ और पठनीय है। निर्दिष्ट करने से सीएसएस चयनकर्ताओं का पुन: उपयोग करना मुश्किल हो सकता है और चीजों को अत्यधिक जटिल बना दिया जा सकता है।

संपादित

यह कोई डुप्लिकेट का एक सा दिखाई देता है:

CSS Performance Question

+0

पर कोई फर्क पड़ता है तो मुझे यह सब कुछ पता है। मुझे क्या दिलचस्पी है गति है। –

+0

मेरी पढ़ाई में गति लाभ इतने सीमांत हैं कि विचार करने के समय के लायक नहीं है। – ScottE

+0

@ स्कॉट वे ** ** सामान्य नहीं हैं यदि आप बड़े HTML दस्तावेज़ों से निपट रहे हैं, खासकर धीमे/पुराने उपकरणों पर। कोड अनुकूलन हमेशा स्वागत है। – tomasz86

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

  • कोई संबंधित समस्या नहीं^_^