सीएसएस में छद्म वर्ग और छद्म तत्व के बीच अंतर क्या है?


93

जैसी चीजें a:linkया div::after...

अंतर की जानकारी दुर्लभ लगती है।


1
@ @ImeVidas किस पद पर? संपर्क?
tybro0103 18

1
मुझे लगता है कि कल्पना बहुत स्पष्ट है ...
zzzzBov

1
@ tybro0103 मुझे कोई नहीं मिला। मुझे लगता है कि यह वास्तव में यहां कभी नहीं पूछा गया है ... मुझे यह हालांकि मिला: stackoverflow.com/questions/7757943/what-is-a-pseudo-element
Vidime Vidas

@zzzzBov मुझे लगता है कि मुझे समझने के लिए एक अनुवादक की आवश्यकता है :)
tybro0103

इस प्रश्न को पोस्ट करने के लिए धन्यवाद। मुझे यकीन है कि क्यों मैं अपने के बाद इसे अपने आप को पोस्ट करने से नहीं सोचा था नहीं कर रहा हूँ [छद्म चयनकर्ता] टैग के साथ सवाल पर हाल ही में बमवर्षा ...
BoltClock

जवाबों:


79

सीएसएस 3 चयनकर्ता सिफारिश दोनों के बारे में बहुत स्पष्ट है, लेकिन मैं वैसे भी अंतर दिखाने की कोशिश करेंगे।

छद्म कक्षाएं

आधिकारिक विवरण

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

एक छद्म वर्ग में हमेशा एक "बृहदान्त्र" ( :) होता है, जिसके बाद छद्म वर्ग का नाम आता है और वैकल्पिक रूप से कोष्ठक के बीच एक मान होता है।

एक चयनकर्ता में निहित सरल चयनकर्ताओं के सभी अनुक्रमों में छद्म वर्गों की अनुमति है। प्रमुख प्रकार के चयनकर्ता या सार्वभौमिक चयनकर्ता (संभवतः छोड़ा गया) के बाद, सरल चयनकर्ताओं के अनुक्रमों में कहीं भी छद्म वर्गों की अनुमति है। छद्म श्रेणी के नाम केस-असंवेदनशील हैं। कुछ छद्म वर्ग पारस्परिक रूप से अनन्य हैं, जबकि अन्य को एक ही तत्व में एक साथ लागू किया जा सकता है। छद्म वर्ग गतिशील हो सकता है, इस अर्थ में कि कोई तत्व छद्म वर्ग प्राप्त कर सकता है या खो सकता है, जबकि उपयोगकर्ता दस्तावेज़ के साथ बातचीत करता है।

स्रोत

इसका क्या मतलब है?

छद्म वर्गों की महत्वपूर्ण प्रकृति को पहले वाक्य में कहा गया है: "छद्म वर्ग अवधारणा [...] अनुमति चयन " । यह एक स्टाइलशीट के लेखक को जानकारी के आधार पर तत्वों के बीच अंतर करने में सक्षम बनाता है जो "दस्तावेज़ के पेड़ के बाहर स्थित है" , उदाहरण के लिए लिंक की वर्तमान स्थिति ( :active, :visited)। वे डोम में कहीं भी सहेजे नहीं गए हैं, और इन विकल्पों तक पहुंचने के लिए कोई डोम इंटरफ़ेस मौजूद नहीं है।

दूसरी ओर, :targetडोम हेरफेर के माध्यम से पहुँचा जा सकता है (आप window.location.hashजावास्क्रिप्ट के साथ ऑब्जेक्ट को खोजने के लिए उपयोग कर सकते हैं ), लेकिन यह "अन्य सरल चयनकर्ताओं का उपयोग करके व्यक्त नहीं किया जा सकता है"

तो मूल रूप से एक छद्म वर्ग चयनित तत्वों के सेट को सरल चयनकर्ताओं के अनुक्रम में किसी अन्य सरल चयनकर्ता के रूप में परिष्कृत करेगा । ध्यान दें कि सरल चयनकर्ताओं के अनुक्रम में सभी सरल चयनकर्ताओं का मूल्यांकन उसी समय किया जाएगा। छद्म श्रेणी की पूरी सूची के लिए CSS3 चयनकर्ता की सिफारिश की जाँच करें।

उदाहरण

निम्न उदाहरण सभी पंक्तियों को ग्रे ( #ccc), सभी असमान पंक्तियों को रंग देगा जो 5 सफेद और हर दूसरी पंक्ति मैजंटा द्वारा विभाजित नहीं हैं।

table tr:nth-child(2n) td{
   background-color: #ccc;
}

table tr:nth-child(2n+1) td{
   background-color: #fff;
}

table tr:nth-child(2n+1):nth-child(5n) td{
   background-color: #f0f;
}

छद्म तत्वों

आधिकारिक विवरण

छद्म तत्व दस्तावेज़ के पेड़ के बारे में दस्तावेज़ भाषा द्वारा निर्दिष्ट से परे सार बनाते हैं। उदाहरण के लिए, दस्तावेज़ भाषाएं किसी तत्व के पहले अक्षर या पहली पंक्ति तक पहुंचने के लिए तंत्र की पेशकश नहीं करती हैं। छद्म तत्व लेखकों को इसे अन्यथा दुर्गम जानकारी को संदर्भित करने की अनुमति देते हैं। छद्म तत्व लेखकों को सामग्री को संदर्भित करने का एक तरीका भी प्रदान कर सकते हैं जो स्रोत दस्तावेज़ में मौजूद नहीं है (उदाहरण के लिए, ::beforeऔर ::afterछद्म तत्व उत्पन्न सामग्री तक पहुंच प्रदान करते हैं)।

एक छद्म तत्व दो कॉलोनों ( ::) से बना है, इसके बाद छद्म तत्व का नाम आता है।

::छद्म-वर्गों और छद्म तत्वों के बीच भेदभाव स्थापित करने के लिए वर्तमान दस्तावेज़ द्वारा इस अंकन को प्रस्तुत किया गया है। मौजूदा स्टाइल शीट के साथ संगतता के लिए, उपयोगकर्ता एजेंटों को सीएसएस स्तर 1 और 2 में पेश किए गए छद्म तत्वों के लिए पिछले एक-कोलन नोटेशन को भी स्वीकार करना होगा (अर्थात्: पहली पंक्ति: पहला अक्षर: पहले और बाद में)। इस विनिर्देश में पेश किए गए नए छद्म तत्वों के लिए इस संगतता की अनुमति नहीं है।

चयनकर्ता के अनुसार केवल एक छद्म तत्व दिखाई दे सकता है, और यदि मौजूद है तो चयनकर्ता के विषयों का प्रतिनिधित्व करने वाले सरल चयनकर्ताओं के अनुक्रम के बाद प्रकट होना चाहिए।

नोट: इस विनिर्देश के भविष्य के संस्करण में प्रति चयनकर्ता के लिए कई छद्म तत्व हो सकते हैं।

स्रोत

इसका क्या मतलब है?

यहाँ सबसे महत्वपूर्ण हिस्सा यह है कि "छद्म तत्व लेखकों को [..] अन्यथा दुर्गम सूचनाओं को संदर्भित करने की अनुमति देते हैं " और वे "लेखकों को स्रोत सामग्री में मौजूद सामग्री को संदर्भित करने का एक तरीका भी प्रदान कर सकते हैं (उदाहरण के लिए, ::beforeऔर ::afterछद्म तत्व उत्पन्न सामग्री तक पहुँच देते हैं) "। सबसे बड़ा अंतर यह है कि वे वास्तव में एक नया आभासी तत्व बनाते हैं जिस पर नियम और यहां तक ​​कि छद्म श्रेणी के चयनकर्ताओं को भी लागू किया जा सकता है। वे तत्वों को फ़िल्टर नहीं करते हैं, वे मूल रूप से सामग्री ( ::first-line, ::first-letter) को फ़िल्टर करते हैं और इसे एक आभासी कंटेनर में लपेटते हैं, जिसे लेखक स्टाइल कर सकता है लेकिन वह (अच्छी तरह से, लगभग) चाहता है।

उदाहरण के लिए, ::first-lineछद्म तत्व को जावास्क्रिप्ट के साथ फिर से जोड़ा नहीं जा सकता है, क्योंकि यह वर्तमान में उपयोग किए गए फ़ॉन्ट, फोंट के आकार, तत्वों की चौड़ाई, अस्थायी तत्वों (और शायद दिन के समय) पर निर्भर करता है। खैर, यह पूरी तरह से सच नहीं है: एक अभी भी उन सभी मूल्यों की गणना कर सकता है और पहली पंक्ति को निकाल सकता है, हालांकि ऐसा करना एक बहुत ही बोझिल गतिविधि है।

मुझे लगता है कि सबसे बड़ा अंतर यह है कि "प्रति चयनकर्ता केवल एक छद्म तत्व दिखाई दे सकता है" । नोट में कहा गया है कि यह परिवर्तन के अधीन हो सकता है, लेकिन 2012 के अनुसार मुझे विश्वास नहीं है कि हम भविष्य में किसी भी अलग व्यवहार को देखते हैं ( यह अभी भी सीएसएस में है )।

उदाहरण

निम्नलिखित उदाहरण छद्म वर्ग :langऔर छद्म तत्व का उपयोग करके किसी दिए गए पृष्ठ पर प्रत्येक उद्धरण में एक भाषा-टैग जोड़ देगा ::after:

q:lang(de)::after{
    content: " (German) ";
}

q:lang(en)::after{
    content: " (English) ";
}

q:lang(fr)::after{
    content: " (French) ";
}

q:not(:lang(fr)):not(:lang(de)):not(:lang(en))::after{
    content: " (Unrecognized language) ";
}

टी एल; डॉ

छद्म वर्ग चयनकर्ताओं के अनुक्रम में सरल चयनकर्ताओं के रूप में कार्य करते हैं और इस तरह गैर-वर्तमान विशेषताओं पर तत्वों को वर्गीकृत करते हैं, छद्म तत्व नए आभासी तत्व बनाते हैं।

संदर्भ

W3C


4
मैं दान के एसएलएक्स पर उस छद्म वर्ग के उत्तर पर टिप्पणी से सहमत हूं जो वास्तव में "फ़िल्टर" के रूप में कार्य नहीं करता है, लेकिन "वर्णनकर्ता" के रूप में अधिक है। उदाहरण के लिए, उन :not(.someclass):nth-child(even)तत्वों को फ़िल्टर करने का मतलब नहीं है .someclass, जिनके पास नहीं है , और शेष तत्वों के बीच समान घटनाओं को फ़िल्टर करते हैं। इसके बजाय यह किसी भी तत्व का प्रतिनिधित्व करता है जो एक ही समय में अपने माता-पिता दोनों :not(.someclass) का :nth-child(even) है। इस उत्तर और इस उत्तर में अधिक गहराई से स्पष्टीकरण पाया जा सकता है ।
BoltClock

2
@ बॉलकॉक: मेरा मानना ​​है कि मुझे "विशेषता-वर्गीकरणकर्ता" शब्द सबसे ज्यादा पसंद है, क्योंकि सीएसएस 2 में उन्हें मूल रूप से कुछ इस तरह वर्णित किया गया था: "छद्म वर्ग अपने नाम के अलावा अन्य विशेषताओं पर तत्वों को वर्गीकृत करते हैं" । हालांकि, मुझे अभी भी सटीक शब्द नहीं मिला है जिससे मैं खुश हूं।
ज़ीटा

42

एक छद्म वर्ग मौजूदा तत्वों को फ़िल्टर करता है।
a:linkसभी का मतलब है <a>कि कर रहे हैं :link

एक छद्म तत्व एक नया नकली तत्व है। एस के
div::afterबाद गैर-मौजूदा तत्वों का मतलब है <div>

::selectionएक छद्म तत्व का एक और उदाहरण है।
इसका मतलब यह नहीं है कि चुने गए सभी तत्व; इसका मतलब है कि चयनित सामग्री की श्रेणी, जो कई तत्वों के अंशों को फैला सकती है।


12
+1 हालांकि तकनीकी रूप div::afterसे एक बच्चा है div, जो तत्व के बजाय इसकी सामग्री के बाद होता है।
बोल्टब्लॉक

1
"फिल्टर" के बजाय मैं कहूंगा "आगे वर्णन करता है"।
डैनमैन

17

संक्षिप्त विवरण जिसने मुझे अंतर समझने में मदद की:

  • छद्म वर्ग एक विशेष राज्य का वर्णन करते हैं।
  • छद्म तत्व आभासी तत्वों से मेल खाते हैं।

10

साइट पॉइंट डॉक्स से:

एक छद्म वर्ग HTML में एक वर्ग के समान है, लेकिन यह मार्कअप में स्पष्ट रूप से निर्दिष्ट नहीं है। कुछ छद्म वर्ग गतिशील हैं - वे दस्तावेज़ के साथ उपयोगकर्ता बातचीत के परिणामस्वरूप लागू होते हैं। - http://reference.sitepoint.com/css/pseudoclasses । ये ऐसी चीजें होंगी :hover, :active, :visited

छद्म तत्व आभासी तत्वों से मेल खाते हैं जो दस्तावेज़ के पेड़ में स्पष्ट रूप से मौजूद नहीं हैं। छद्म तत्व गतिशील हो सकते हैं, जब वे प्रतिनिधित्व करते हैं आभासी तत्व बदल सकते हैं, उदाहरण के लिए, जब ब्राउज़र विंडो की चौड़ाई बदल जाती है। वे सीएसएस नियमों द्वारा उत्पन्न सामग्री का भी प्रतिनिधित्व कर सकते हैं। - http://reference.sitepoint.com/css/pseudoelements । ये ऐसी चीजें होंगी before, :after, :first-letter


6

एक वैचारिक उत्तर:

  • एक छद्म तत्व उन चीजों को संदर्भित करता है जो दस्तावेज़ का हिस्सा हैं, लेकिन आप अभी तक इसे नहीं जानते हैं। उदाहरण के लिए पहला अक्षर। आपके पहले केवल पाठ था। अब आपके पास पहला पत्र है जिसे आप लक्षित कर सकते हैं। यह एक नई अवधारणा है, लेकिन हमेशा दस्तावेज़ का हिस्सा था। इसमें चीजें भी शामिल हैं ::before; जब वहां वास्तविक सामग्री नहीं है, तो कुछ के पहले कुछ की अवधारणा हमेशा वहां थी - अब आप इसे निर्दिष्ट कर रहे हैं।

  • एक छद्म वर्ग डोम में कुछ की स्थिति है। जैसे एक वर्ग एक टैग है जिसे आप एक तत्व के साथ जोड़ते हैं, एक छद्म वर्ग एक ऐसा वर्ग है जो ब्राउज़र या DOM या जो भी हो, आमतौर पर राज्य में बदलाव के जवाब के रूप में जुड़ा होता है। जब कोई उपयोगकर्ता किसी लिंक पर जाता है - तो वह लिंक 'विज़िट' की स्थिति पर ले जा सकता है। आप एंकर तत्व को 'विजिट' क्लास लगाने वाले ब्राउज़र की कल्पना कर सकते हैं। :visitedफिर आप उस छद्म वर्ग के लिए कैसे चयन करेंगे।


6

नीचे सरल उत्तर है:

जब हम किसी तत्व की स्थिति के आधार पर सीएसएस लागू करने की आवश्यकता होती है तो हम छद्म वर्ग का उपयोग करते हैं । जैसे कि:

  1. लंगर तत्व के होवर पर सीएसएस लागू करें ( :hover)
  2. HTML तत्व पर ध्यान केंद्रित करने पर css लागू करें ( :focus)। आदि।

हम छद्म तत्व का उपयोग करते हैं जब हमें तत्वों के विशिष्ट भागों या एक नई सम्मिलित सामग्री के लिए सीएसएस लागू करने की आवश्यकता होती है । जैसे कि:

  1. पहले अक्षर या किसी तत्व की पहली पंक्ति के लिए सीएसएस लागू करें ( ::first-letter)
  2. किसी तत्व ( ::before, ::after) की सामग्री से पहले या बाद में सामग्री डालें

नीचे दोनों का उदाहरण दिया गया है:

<html>

 <head>
   <style>
   p::first-letter {  /* pseudo-element */
     color: #ff0000;
   }

   a:hover {          /* pseudo-class */
     color: red;      
   }
   </style>
 </head>

 <body>
   <a href="#" >This is a link</a>
   <p>This is a paragraph.</p>
 </body>

</html>

4

छद्म क्लास

एक छद्म वर्ग एक HTML दस्तावेज़ के कुछ हिस्सों को चुनने का एक तरीका है, जो सिद्धांत रूप में HTML दस्तावेज़ के पेड़ और उसके तत्वों पर या नाम, गुण या सामग्री जैसी विशेषताओं पर आधारित नहीं है, लेकिन भाषा एन्कोडिंग या गतिशील राज्य जैसी अन्य प्रेत स्थितियों पर आधारित है एक तत्व का।

मूल छद्म वर्ग एक तत्व की गतिशील अवस्थाओं को परिभाषित करता है जो समय के साथ या उपयोगकर्ता हस्तक्षेप के माध्यम से दर्ज और बाहर हो जाते हैं। CSS2 ने इस अवधारणा पर विस्तार किया जिसमें आभासी वैचारिक दस्तावेज घटक या दस्तावेज़ पेड़ के अनुमानित हिस्से शामिल हैं जैसे कि पहले बच्चे। छद्म वर्ग संचालित होते हैं जैसे कि विभिन्न वर्गों में प्रेत वर्ग जोड़े गए।

निष्कर्ष: छद्म तत्वों के विपरीत, छद्म कक्षाएं चयनकर्ता श्रृंखला में कहीं भी दिखाई दे सकती हैं।

उदाहरण छद्म श्रेणी कोड:

a:link /* This selects any "a" element whose target has not been visited.*/
{
padding : 4px;
text-decoration : none;
width : 10%;
color : #000000; /* black text color */
background-color : #99FF99; /* set to a pastel green */
border-top : 2px solid #ccffcc; /* highlight color */
border-left : 2px solid #ccffcc; /* highlight color */
border-bottom : 2px solid #003300; /* shadow color */
border-right : 2px solid #003300; /* shadow color */
}

a:visited /* This selects any "a" element whose target has been visited.*/
{ padding : 4px;
text-decoration : none;
color : #000000; /* black text color */
background-color : #ccccff; /* set to a lavender */
border-top : 2px solid #ffffff; /* highlight color */
border-left : 2px solid #ffffff; /* highlight color */
border-bottom : 2px solid #333366; /* shadow color *
border-right : 2px solid #333366; /* shadow color */
}

a:hover /* This selects any "a" element which is in a hover state. This is a state during pointer movement within the rendering region of an element. The user designates an element but does not activate it. */
{
color : #000000; /* black text color */
background-color : #99cc99; /* desaturated color */
border-top : 2px solid #003300; /* shadow color */
border-left : 2px solid #003300; /* shadow color */
border-bottom : 2px solid #ccffcc; /* highlight color */
border-right : 2px solid #ccffcc; /* highlight color */
}

a:focus /* This selects any "a" element which currently has focus. Focus is a state during which an element accepts keyboard input or other forms of text input. */
{
padding : 4px;
text-decoration : none;
width : 10%;
color : #000000; /* black text color */
background-color : #ffff99; /* set to a pastel yellow */
border-top : 2px solid #ffffcc; /* highlight color */
border-left : 2px solid #ffffcc; /* highlight color */
border-bottom : 2px solid #666633; /* shadow color */
border-right : 2px solid #666633; /* shadow color */
}

a:active /* This selects any "a" element which is in a state of activation. Active is a state during pointer activation (eg: press and release of a mouse) within the rendering region of an element.*/
{
padding : 4px;
text-decoration : none;
width : 10%;
color : #000000; /* black text color */
background-color : #ff99ff; /* set to a pink */
border-top : 2px solid #ffccff; /* highlight color */
border-left : 2px solid #ffccff; /* highlight color */
border-bottom : 2px solid #663366; /* shadow color */
border-right : 2px solid #663366; /* shadow color */
}

एक पृष्ठ जो उपरोक्त छद्म श्रेणी कोड के प्रतिपादन को प्रदर्शित करता है

छद्म तत्वों

PSEUDO- तत्व तत्वों के उप-भागों को संबोधित करने के लिए उपयोग किया जाता है। वे आपको दस्तावेज़ में निर्दिष्ट किसी तत्व की सामग्री के एक हिस्से पर शैली सेट करने की अनुमति देते हैं। दूसरे शब्दों में वे तार्किक तत्वों को परिभाषित करने की अनुमति देते हैं जो वास्तव में दस्तावेज़ तत्व के पेड़ में नहीं हैं। तार्किक तत्व निहित अर्थ संरचना को सीएसएस चयनकर्ताओं में संबोधित करने की अनुमति देते हैं।

निष्कर्ष: छद्म तत्व केवल बाहरी और दस्तावेज़-स्तरीय संदर्भों पर लागू हो सकते हैं - इन-लाइन शैलियों के लिए नहीं। छद्म तत्व प्रतिबंधित हैं जहां वे एक नियम में दिखाई दे सकते हैं। वे केवल एक चयनकर्ता श्रृंखला (चयनकर्ता के विषय के बाद) के अंत में दिखाई दे सकते हैं। उन्हें चयनकर्ता में पाए गए किसी भी वर्ग या आईडी के नाम के बाद आना चाहिए। चयनकर्ता के अनुसार केवल एक छद्म तत्व निर्दिष्ट किया जा सकता है। एक ही संरचना संरचना पर कई छद्म तत्वों को संबोधित करने के लिए, कई शैली चयनकर्ता / घोषणा विवरण बनाए जाने चाहिए।

छद्म तत्वों का उपयोग सामान्य टाइपोग्राफिक प्रभावों जैसे कि प्रारंभिक कैप और ड्रॉप कैप के लिए किया जा सकता है। वे उत्पन्न सामग्री को भी संबोधित कर सकते हैं जो स्रोत दस्तावेज़ में नहीं है ("पहले" और "बाद में" के साथ) गुणों और मूल्यों के साथ कुछ छद्म तत्वों की एक उदाहरण शैली शीट इस प्रकार है।

/ * निम्नलिखित नियम शीर्ष 1 के पहले अक्षर का चयन करता है और फ़ॉन्ट को हरे रंग की पृष्ठभूमि के साथ 2em, कर्सिव में सेट करता है। प्रथम-पत्र एक ब्लॉक-स्तरीय तत्व के लिए पहले प्रदान किए गए अक्षर / चरित्र का चयन करता है। * /

h1:first-letter {
font-size : 2em;
font-family : "Lucida Handwriting", "Lucida Sans", "Lucida Console", cursive;
background-color : #ccffcc;
}

/* The following rule selects the first displayed line in a paragraph and makes it bold. First-line selects the first rendered line on the output device of a block-level element. */

p:first-line {
font-weight : bold;
}

/* The following rule selects any content placed before a blockquote and inserts the phrase "Quote of the day:" in bold small caps with a green background. */

blockquote:before {
content : "Quote of the day:";
background-color : #ccffcc;
font-weight : bold;
font-variant : small-caps;
}

/* The following rule selects any content placed before a "q" element and inserts the smart open quote. */

q:before {
content : open-quote;
}

/* The following rule selects any content placed after a "q" element and inserts the smart close quote. */

q:after{
content : close-quote;
}

स्रोत: लिंक


0

संक्षेप में, एमडीएन पर छद्म वर्गों से:

CSS pseudo-class एक कीवर्ड है जो चयनकर्ता में जोड़ा जाता है जो चयनित तत्व (एस) की एक विशेष स्थिति को निर्दिष्ट करता है। उदाहरण के लिए, :hover एक शैली लागू करने के लिए उपयोग किया जा सकता है जब उपयोगकर्ता एक बटन पर होवर करता है।

div: होवर {
  पृष्ठभूमि-रंग: # F89B4D;
}

और, एमडीएन पर छद्म तत्वों से:

एक सीएसएस pseudo-element एक कीवर्ड है जो चयनकर्ता को जोड़ा जाता है जो आपको चयनित तत्व (एस) के एक विशिष्ट भाग को स्टाइल करने देता है। उदाहरण के लिए, ::first-lineपैराग्राफ की पहली पंक्ति को स्टाइल करने के लिए इस्तेमाल किया जा सकता है।

/ * प्रत्येक <p> तत्व की पहली पंक्ति। * /
पी :: पहली पंक्ति {
 नीला रंग;
 पाठ-परिवर्तन: अपरकेस;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.