Puoi modellare i numeri degli elenchi ordinati?


91

Sto cercando di modellare i numeri in un elenco ordinato, vorrei aggiungere il colore di sfondo, il raggio del bordo e il colore in modo che corrispondano al design da cui sto lavorando:

inserisci qui la descrizione dell'immagine

Immagino non sia possibile e dovrò usare immagini diverse per ogni numero, ad es

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

C'è una soluzione più semplice?


3
Puoi cercare una soluzione dalla mia demo qui jsfiddle.net/viphalongpro/Hj8Nn BTW, non penso che sia impossibile cercare, cercare prima potrebbe darti molti risultati , proprio in SO, questo tipo di domanda è stata chiesto molte volte.
King King

1
alcuni link per le informazioni 1. codeitdown.com/ordered-list-css-styles 2. css-tricks.com/numbering-in-style È un buon qtn, ma un po 'di ricerca potrebbe averti dato la risposta
crafter

1
@ KingKing - Suggerirei di contrassegnarlo come un duplicato allora ...
Lee Taylor

Risposte:


189

Puoi farlo usando i contatori CSS , insieme allo :beforepseudo elemento:

 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>


12
L' counter-reset: item;dovrebbe andare nel blocco olo, altrimenti il contatore non sarà ripristinato nel nidificato <ol>.
Michael Klöpzig

2
una bella soluzione, ma com'è il rendering quando il corpo lidell'elemento è più di una riga?
cmhughes

Penso che, come in stackoverflow.com/questions/13354578/… , puoi usare ad esempio `margin-left: -2.0em; larghezza: -2.0em; `
cmhughes

Un valore di 50%for border-radius(anziché 100%) è sufficiente per ottenere un cerchio. (Vedi, ad esempio, Lea Verou, " The Curious Case of Border- Radius : 50% ", 30 ottobre 2010.)
Jim Ratliff

@cmhughes - se volessi farlo, daresti il li position: relative;, e poi :beforelo daresti position: absolute;e poi lo useresti tope leftper posizionarlo esattamente come preferisci.
mike

25

Stavo cercando qualcosa di diverso e ho trovato questo esempio su CodePen;

prova questo: http://codepen.io/sawmac/pen/txBhK

body {
  font-size: 1.2em;
  font-family: "Helvetica Neue", Helvetica, sans-serif;
  margin: 50px;
}
.custom-counter {
  margin: 0;
  padding: 0;
  list-style-type: none;
}
.custom-counter li {
  counter-increment: step-counter;
  margin-bottom: 5px;
}
.custom-counter li::before {
  content: counter(step-counter);
  margin-right: 20px;
  font-size: 80%;
  background-color: rgb(180, 180, 180);
  color: white;
  font-weight: bold;
  padding: 3px 8px;
  border-radius: 11px;
}
<ol class="custom-counter">
  <li>This is the first item</li>
  <li>This is the second item</li>
  <li>This is the third item</li>
  <li>This is the fourth item</li>
  <li>This is the fifth item</li>
  <li>This is the sixth item</li>
</ol>

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.