Чи можете ви створити стиль упорядкованих номерів списків?


89

Я намагаюся стилізувати цифри в упорядкованому списку, я хотів би додати колір фону, радіус межі та колір, щоб вони відповідали дизайну, з якого я працюю:

введіть тут опис зображення

Я думаю, це неможливо, і мені доведеться використовувати різні зображення для кожного числа, тобто

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

Чи є простіше рішення?


3
Ви можете дослідити рішення з моєї демонстрації тут jsfiddle.net/viphalongpro/Hj8Nn BTW, я не думаю, що це неможливо шукати, пошук спочатку може дати вам багато результатів , прямо ТАК запитував багато разів.
King King

1
деякі посилання для отримання інформації 1. codeitdown.com/ordered-list-css-styles 2. css-tricks.com/numbering-in-style Це хороший qtn, але трохи пошуків може дати вам відповідь
crafter

1
@KingKing - Я пропоную позначити це як дублікат тоді ...
Lee Taylor

Відповіді:


187

Ви можете зробити це за допомогою лічильників CSS разом із :beforeпсевдоелементом:

 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
Значення counter-reset: item;повинно йти в блок ol, інакше лічильник не буде скинутий у вкладеному <ol>.
Michael Klöpzig

2
гарне рішення, але як виглядає візуалізація, коли тіло liелемента складає більше одного рядка?
cmhughes

Я думаю, що, як і в stackoverflow.com/questions/13354578/… , ви можете використовувати, наприклад, `margin-left: -2.0em; ширина: -2,0em; `
cmhughes

Значення 50%for border-radius(а не 100%) достатнє для отримання кола. (Див., Наприклад, Леа Веру, " Курйозний випадок граничного радіусу: 50% ", 30 жовтня 2010 р.)
Джим Ратліфф,

@cmhughes - якщо ти хотів це зробити, ти дав би li position: relative;, а потім, щоб :beforeти дав це, position: absolute;а потім використовував topі leftрозміщував його саме так, як тобі подобається.
Майк

25

Я шукав щось інше, і знайшов цей приклад на CodePen;

спробуйте це: 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>

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.