CSS में हर Nth एलिमेंट को सेलेक्ट करें


242

क्या तत्वों के एक समूह में प्रत्येक चौथे तत्व का चयन करना, कहना संभव है?

Ex: मेरे पास 16 <div>तत्व हैं ... मैं ऐसा कुछ लिख सकता था।

div:nth-child(4),
div:nth-child(8),
div:nth-child(12),
div:nth-child(16)

क्या ऐसा करने के लिए इससे अच्छा तरीका है?


1
आशा है कि हर कोई अभी भी जीवित है, सिर्फ नए-नए और इतने नए
शौक के

जवाबों:


419

जैसा कि नाम का अर्थ है, आपको निरंतर संख्याओं के अलावा चर का उपयोग करके एक अंकगणितीय अभिव्यक्ति का निर्माण करने की अनुमति देता है । आप जोड़ ( ), घटाव ( ) और गुणांक गुणन ( जहां एक पूर्णांक है, जिसमें सकारात्मक संख्याएं, ऋणात्मक संख्याएं और शून्य शामिल हैं) कर सकते हैं।:nth-child()n+-ana

यहां बताया गया है कि आप उपरोक्त चयनकर्ता सूची कैसे लिखेंगे:

div:nth-child(4n)

ये अंकगणित कैसे काम करते हैं, इस बारे में स्पष्टीकरण के लिए, इस प्रश्न के साथ-साथ कल्पना के बारे में मेरा उत्तर देखें ।

, ध्यान दें कि इस सवाल का जवाब यह मानता है कि कि एक ही माता पिता के तत्व के भीतर बच्चे सभी तत्वों का एक ही तत्व प्रकार के होते हैं div। यदि आपके पास विभिन्न प्रकार के कोई अन्य तत्व हैं जैसे कि h1या p, आपको केवल तत्वों को गिनने के लिए उपयोग :nth-of-type()करने की आवश्यकता होगी ::nth-child()div

<body>
  <h1></h1>
  <div>1</div>  <div>2</div>
  <div>3</div>  <div>4</div>
  <h2></h2>
  <div>5</div>  <div>6</div>
  <div>7</div>  <div>8</div>
  <h2></h2>
  <div>9</div>  <div>10</div>
  <div>11</div> <div>12</div>
  <h2></h2>
  <div>13</div> <div>14</div>
  <div>15</div> <div>16</div>
</body>

बाकी सब चीज़ों के लिए (कक्षाएं, विशेषताएँ, या इनमें से कोई भी संयोजन), जहाँ आप उस nth बच्चे की तलाश कर रहे हैं जो एक मनमाने चयनकर्ता से मेल खाता है, आप शुद्ध CSS चयनकर्ता के साथ ऐसा नहीं कर पाएंगे। मेरे इस सवाल का जवाब देखिए ।


वैसे, इस संबंध में 4n और 4n + 4 के बीच बहुत अंतर नहीं है :nth-child()। यदि आप nवैरिएबल का उपयोग करते हैं, तो यह 0. पर गिनना शुरू कर देता है। यह वह है जो प्रत्येक चयनकर्ता से मेल खाता है:

:nth-child(4n)

4(0) = 0
4(1) = 4
4(2) = 8
4(3) = 12
4(4) = 16
...

:nth-child(4n+4)

4(0) + 4 = 0  + 4 = 4
4(1) + 4 = 4  + 4 = 8
4(2) + 4 = 8  + 4 = 12
4(3) + 4 = 12 + 4 = 16
4(4) + 4 = 16 + 4 = 20
...

जैसा कि आप देख सकते हैं, दोनों चयनकर्ता ऊपर के समान तत्वों से मेल खाएंगे। इस मामले में, कोई अंतर नहीं है।


मैंने सोचा था कि मैं जोड़ दूंगा, अगर आप केवल चौथे के रूप में कुछ कर रहे हैं तो आपको कुछ इस तरह की आवश्यकता होगी tr td:nth-child(4)कोष्ठक के भीतर किसी भी n की कमी पर ध्यान दें
WORMSS

2
कृपया ध्यान दें: यह केवल तत्व चयनकर्ताओं (div, td, img आदि) पर काम करता है, क्लास चयनकर्ता की तरह नहीं ।this
Sliq

1
मैंने नेत्रहीन को समझाने के लिए एक इंटरेक्टिव डेमो बनाया कि nth-child (n) कैसे काम करता है: xengravity.com/demo/nth-child । मैंने पाया कि डब्ल्यू 3 कल्पना विशेष रूप से शुरुआती के लिए चुनौतीपूर्ण है जिस पर वाक्य रचना की अनुमति है; विशेष रूप से उनके 'लेक्सिकल स्कैनर' अनुभाग।
६:१५ बजे

1
@xengravity: साझा करने के लिए धन्यवाद! मैं मानता हूं, व्याकरण शुरुआती-अनुकूल नहीं है क्योंकि यह कार्यान्वयनकर्ताओं के दिमाग में लिखा गया था न कि लेखकों के साथ। युक्ति वाक्यविन्यास लिखने के लिए कई उदाहरण प्रदान करता है, लेकिन दृश्य के साथ बिना।
BoltClock

1
मैंने nth-child अभिव्यक्तियों के साथ खेलने के लिए समान उपकरण बनाया है: salman-w.googlecode.com/svn/trunk/css/…
Salman A



10

आपको nth-childछद्म वर्ग के लिए सही तर्क की आवश्यकता है ।

  • तर्क बी से शुरू an + bहोने वाले प्रत्येक वें बच्चे के मिलान के रूप में होना चाहिए ।

  • दोनों aऔर bवैकल्पिक पूर्णांक हैं और दोनों शून्य या नकारात्मक हो सकता है।

    • तो aशून्य है तो कोई है "हर एक वें बच्चे" खंड।
    • अगर aनेगेटिव है तो मैचिंग बैकवर्ड से शुरू की जाती है b
    • यदि bशून्य या नकारात्मक है तो सकारात्मक bउदाहरण 4n+0का उपयोग करते हुए समतुल्य अभिव्यक्ति लिखना संभव है जैसा कि है 4n+4। वैसे 4n-1ही जैसा है 4n+3

उदाहरण:

हर चौथे बच्चे का चयन करें (4, 8, 12, ...)

li:nth-child(4n) {
  background: yellow;
}
<ol>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
</ol>

1 (1, 5, 9, ...) से शुरू होने वाले हर चौथे बच्चे का चयन करें

4 (3 और 4, 7 और 8, 11 और 12, ...) के समूहों से प्रत्येक 3 जी और 4 वें बच्चे का चयन करें ...

पहले 4 आइटम (4, 3, 2, 1) चुनें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.