0

I wonder how I can have the following ordered list in html

1 Item 1
1A Item 2
1B Item 3
2 Item 4
2A Item 5
2B Item 6
2C Item 7
3 Item 8
Kevin
  • 2,813
  • 3
  • 20
  • 30
Reza
  • 203
  • 1
  • 8
  • 1
    What you show is not an ordered list. Show the code you have, and you will have a better chance of getting a helpful answer – joel goldstick Jun 19 '15 at 00:10

1 Answers1

2

Like this:

ol.number, .letter > ol {
  list-style-type: none;
}  

ol.number {
  counter-reset: number;
}

.letter > ol {
  counter-reset: letter;
}

ol.number > li:not(.letter):before {
  content: counter(number, decimal) " ";
  counter-increment: number;
}

.letter > ol > li:before {
  content: counter(number, decimal) counter(letter, upper-alpha) " ";
  counter-increment: letter;
}
<ol class="number">
  <li>Item 1</li>
  <li class="letter">
    <ol>
      <li>Item 2</li>
      <li>Item 3</li>
    </ol>
  </li>
  <li>Item 4</li>
  <li class="letter">
    <ol>
      <li>Item 5</li>
      <li>Item 6</li>
      <li>Item 7</li>
    </ol>
  </li>
  <li>Item 8</li>
</ol>

Or if you'd prefer to automate counting the index as well:

ol.number, .letter > ol {
  list-style-type: none;
}  

ol.number {
  counter-reset: number index;
}

.letter > ol {
  counter-reset: letter;
}

ol.number > li:not(.letter):before {
  content: counter(number, decimal) " ";
  counter-increment: number;
}

.letter > ol > li:before {
  content: counter(number, decimal) counter(letter, upper-alpha) " ";
  counter-increment: letter;
}

ol.number li:not(.letter):after {
  content: " " counter(index, decimal);
  counter-increment: index;
}
<ol class="number">
  <li>Item</li>
  <li class="letter">
    <ol>
      <li>Item</li>
      <li>Item</li>
    </ol>
  </li>
  <li>Item</li>
  <li class="letter">
    <ol>
      <li>Item</li>
      <li>Item</li>
      <li>Item</li>
    </ol>
  </li>
  <li>Item</li>
</ol>
Patrick Roberts
  • 49,224
  • 10
  • 102
  • 153