Search code examples
htmlcsshtml-listssprite

Can you style ordered list numbers?


I'm trying to style the numbers in a ordered list, I'd like to add background-color, border-radius and color so they match the design I'm working from:

enter image description here

I guess it's not possible and I'll have to use different images for each number i.e.

ol li:first-child {list-style-image:url('1.png')};
ol li:nth-child(2) {list-style-image:url('2.png');} 
etc...

Is there a simpler solution?


Solution

  • You can do this using CSS counters, in conjunction with the :before pseudo element:

     ol {
       list-style: none;
       counter-reset: item;
     }
     li {
       counter-increment: item;
       margin-bottom: 5px;
     }
     li:before {
       margin-right: 10px;
       content: counter(item);
       background: lightblue;
       border-radius: 100%;
       color: white;
       width: 1.2em;
       text-align: center;
       display: inline-block;
     }
    <ol>
      <li>item</li>
      <li>item</li>
      <li>item</li>
      <li>item</li>
    </ol>