0

Currently styling a react application where I need to create styling for the following elements but can't seem to figure out a selector which does it properly.

    .FORM__field--50:nth-of-type(even) {
     background-color: red;
    }
<div class='SECTION'>
 <div class='SECTION__title'>Some title</div>
 <div class="FORM__field FORM__field--50">Content</div>
 <div class="FORM__field FORM__field--50">Select this</div>
 <div class="FORM__field FORM__field--50">Content</div>
 <div class="FORM__field FORM__field--50">Select this</div>
 <!-- can go on forever -->
</div>

<div class='SECTION'>
 <div class="FORM__field FORM__field--50">Content</div>
 <div class="FORM__field FORM__field--50">Select this</div>
 <!-- can go on forever -->
</div>

<div class="SECTION">
    <div class='SECTION__title'>some subtitle</div>
 <div class="FORM__field">
  <div class="FORM__field--50">Content</div>
  <div class="FORM__field--50">Select this</div>
  <div class="FORM__field--50">Content</div>
  <div class="FORM__field--50">Select this</div>
  <div class="FORM__field--50">Content</div>
  <div class="FORM__field--50">Select this</div>
  <!-- can go on forever -->
 </div>
</div>

Tried the following css however in the first case for some reason it selects the wrong (odd) of the FORM__field--50 class.

NealVDV
  • 2,302
  • 3
  • 26
  • 51

1 Answers1

1

x:nth-of-type(n) Selects every <x> element that is the nth <x> element of its parent. So with the title present, the first FORM__field FORM__field--50 becomes the 2nd thus the even child. You can just wrap the FORM__field FORM__field--50 inside another div to fix that, if you just want a css fix.

.FORM__field--50:nth-of-type(even) {
  background-color: red;
}
<div class='SECTION'>
  <div class='SECTION__title'>Some title</div>
  <div class="container">
    <div class="FORM__field FORM__field--50">Content</div>
    <div class="FORM__field FORM__field--50">Select this</div>
    <div class="FORM__field FORM__field--50">Content</div>
    <div class="FORM__field FORM__field--50">Select this</div>
  </div>
  <!-- can go on forever -->
</div>

<div class='SECTION'>
  <div class="container">
    <div class="FORM__field FORM__field--50">Content</div>
    <div class="FORM__field FORM__field--50">Select this</div>
  </div>
  <!-- can go on forever -->
</div>

<div class="SECTION">
  <div class='SECTION__title'>some subtitle</div>
  <div class="FORM__field">
    <div class="FORM__field--50">Content</div>
    <div class="FORM__field--50">Select this</div>
    <div class="FORM__field--50">Content</div>
    <div class="FORM__field--50">Select this</div>
    <div class="FORM__field--50">Content</div>
    <div class="FORM__field--50">Select this</div>
    <!-- can go on forever -->
  </div>
</div>

Note: Since your third group has a FORM__field div, you could use the same for all of the above, if it doesn't introduce additional styles.

.FORM__field--50:nth-of-type(even) {
  background-color: red;
}
<div class='SECTION'>
  <div class='SECTION__title'>Some title</div>
  <div class="FORM__field">
    <div class="FORM__field FORM__field--50">Content</div>
    <div class="FORM__field FORM__field--50">Select this</div>
    <div class="FORM__field FORM__field--50">Content</div>
    <div class="FORM__field FORM__field--50">Select this</div>
  </div>
  <!-- can go on forever -->
</div>

<div class='SECTION'>
  <div class="FORM__field">
    <div class="FORM__field FORM__field--50">Content</div>
    <div class="FORM__field FORM__field--50">Select this</div>
  </div>
  <!-- can go on forever -->
</div>

<div class="SECTION">
  <div class='SECTION__title'>some subtitle</div>
  <div class="FORM__field">
    <div class="FORM__field--50">Content</div>
    <div class="FORM__field--50">Select this</div>
    <div class="FORM__field--50">Content</div>
    <div class="FORM__field--50">Select this</div>
    <div class="FORM__field--50">Content</div>
    <div class="FORM__field--50">Select this</div>
    <!-- can go on forever -->
  </div>
</div>