Нумерованный список похож на маркированный, с тем отличием, что вместо элемента <ul> мы используем <ol>. После этого, вместо маркеров браузер ставит автоматическую нумерацию (рис. 1).

Рис. 1. Вид нумерованного списка
Изменение типа нумерации
В нумерованном списке по умолчанию применяются арабские цифры, но с помощью свойства list-style-type или list-style нумерацию можно заменить на другую. Вот некоторые популярные значения:
- lower-alpha — строчные латинские буквы (a, b, c, d, e,…);
- upper-alpha — заглавные латинские буквы (A, B, C, D, E,…);
- lower-greek — строчные греческие буквы (α, β, γ, δ,…);
- upper-roman — римские цифры в верхнем регистре (I, II, III, IV, V,…).
Само свойство добавляется к селектору ol или li, как показано в примере 1.
Пример 1. Использование list-style-type
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Нумерация</title>
<style>
ol {
list-style-type: upper-roman; /* Римские цифры */
}
</style>
</head>
<body>
<ol>
<li>Гай Юлий Цезарь Октавиан Август</li>
<li>Тиберий Юлий Цезарь Август</li>
<li>Гай Юлий Цезарь Август Германик</li>
<li>Тиберий Клавдий Цезарь Август Германик</li>
<li>Нерон Клавдий Цезарь Август Германик</li>
</ol>
</body>
</html>
Результат данного примера показан на рис. 2.

Рис. 2. Римские цифры в списке
Пользовательская нумерация
Вместо предлагаемых значений свойства list-style-type можно сделать свою произвольную нумерацию, используя для этого стилевое правило @counter-style.
Сперва необходимо дать нашей нумерации уникальное имя. К примеру, если мы хотим использовать в качестве нумерации кириллицу, то её можно назвать my-cyrillic. Здесь my- добавлено для того, чтобы мы помнили о том, что это наше пользовательское название.
@counter-style my-cyrillic {
}
Внутри фигурных скобок пишем несколько дескрипторов, разделяя их точкой с запятой:
- system — алгоритм, согласно которому выводится нумерация, для букв нам подходит значение alphabetic;
- symbols — символы или буквы, которые мы хотим видеть в нумерации. Отделяются друг от друга пробелом, можно писать в кавычках, можно без них;
- prefix — символ, который идёт до номера, например, открывающая скобка;
- suffix — символ, который идёт после номера, к примеру, точка или закрывающая скобка.
Вот как будет выглядеть описание нашей нумерации с кириллицей.
@counter-style my-cyrillic {
system: alphabetic;
symbols: а б в г д е ж з и к;
prefix: '(';
suffix: ') ';
}
prefix и suffix использовать не обязательно, а лишь когда требуется определённым образом оформить нумерацию.
Теперь имя my-cyrillic мы используем в качестве значения свойства list-style.
ol {
list-style: cyrillic;
}
В примере 2 показан весь код для создания пользовательской нумерации.
Пример 2. Использование @counter-style
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Нумерация</title>
<style>
@counter-style my-cyrillic {
system: alphabetic;
symbols: а б в г д е ж з и к;
prefix: '(';
suffix: ')';
}
ol {
list-style: my-cyrillic; /* Используем пользовательскую нумерацию */
}
ol li {
padding-left: 1em; /* Расстояние от номера до текста */
}
</style>
</head>
<body>
<p>Династия Романовых</p>
<ol>
<li>Михаил Фёдорович</li>
<li>Алексей Михайлович</li>
<li>Фёдор Алексеевич</li>
<li>Пётр I Алексеевич</li>
<li>Иван V Алексеевич</li>
</ol>
</body>
</html>
Результат данного примера показан на рис. 3.

Рис. 3. Кириллица в качестве нумерации списка
В нашем примере используется всего 10 букв и если этого недостаточно для списка, всегда можно добавить новые буквы к значению symbols. Но даже если букв мало, браузер в любом случае отобразит нумерацию, просто удваивая буквы («аа», «аб», «ав», «аг» и т. д.).
Стиль нумерации
В простых случаях, когда нужно изменить цвет или шрифт нумерации, используется псевдоэлемент ::marker, который добавляется к селектору li (пример 3).
Пример 3. Использование ::marker
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Нумерация</title>
<style>
@counter-style my-cyrillic {
system: alphabetic;
symbols: а б в г д е ж з и к;
suffix: '.';
}
ol {
list-style: my-cyrillic;
}
ol li {
padding-left: 1em;
}
ol li::marker {
color: crimson; /* Цвет */
font-family: Impact, sans-serif; /* Семейство шрифта */
font-size: 1.2em; /* Размер шрифта */
}
</style>
</head>
<body>
<p>Династия Романовых</p>
<ol>
<li>Михаил Фёдорович</li>
<li>Алексей Михайлович</li>
<li>Фёдор Алексеевич</li>
<li>Пётр I Алексеевич</li>
<li>Иван V Алексеевич</li>
</ol>
</body>
</html>
Влияние ::marker на стиль списка показано на рис. 4.

Рис. 4. Цвет и шрифт нумерации
Для ::marker можно задать цвет и параметры шрифта, но всё остальное нет. Поэтому для сложного дизайна мы снова должны обратиться к псевдоэлементу ::before и выводить нумерацию с его помощью.
Сперва определяем переменную для нашего счётчика через свойство counter-reset, назовём эту переменную my-item.
ol {
counter-reset: my-item;
}
Чтобы счётчик увеличивался для каждого пункта списка, к селектору li добавляем свойство counter-increment с нашей переменной.
li {
counter-increment: my-item;
}
Осталось для li::before отобразить нумерацию через свойство content и функцию counter() следующим образом.
li::before {
content: counter(my-item);
}
Если мы хотим использовать ранее сделанную нумерацию my-cyrillic, то её надо указать через запятую в функции counter().
li::before {
content: counter(my-item, my-cyrillic);
}
Окончательный код показан в примере 4.
Пример 4. Использование ::before
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Нумерация</title>
<style>
@counter-style my-cyrillic {
system: alphabetic;
symbols: а б в г д е ж з и к;
suffix: '.';
}
ol {
counter-reset: my-item; /* Инициируем счётчик */
}
ol > li {
list-style: none; /* Убираем исходную нумерацию */
counter-increment: my-item; /* Увеличиваем счётчик */
margin-bottom: 0.3em; /* Отступ снизу */
}
ol > li::before {
background-color: crimson; /* Цвет фона */
color: #fff; /* Цвет текста */
content: counter(my-item, my-cyrillic); /* Выводим нумерацию */
display: inline-block; /* Строчно-блочный элемент */
text-align: center; /* Выравниваем по центру */
width: 20px; height: 20px; /* Размеры */
border-radius: 50%; /* Превращаем в круг */
font-weight: bold; /* Жирное начертание */
margin-right: 1em; /* Расстояние от списка до текста */
}
</style>
</head>
<body>
<p>Династия Романовых</p>
<ol>
<li>Михаил Фёдорович</li>
<li>Алексей Михайлович</li>
<li>Фёдор Алексеевич</li>
<li>Пётр I Алексеевич</li>
<li>Иван V Алексеевич</li>
</ol>
</body>
</html>
Результат данного примера показан на рис. 5.

Рис. 5. Пользовательский стиль нумерации
Итоги
- Нумерованный список создаётся с помощью HTML-элементов <ol> и <li>.
- За изменение вида нумерации отвечает свойство list-style-type или list-style. К примеру, значение upper-roman выводит нумерацию римскими цифрами.
- Стилевое правило @counter-style позволяет создать собственную нумерацию — используя для этого произвольные символы или буквы.
- Псевдоэлемент ::marker применяется, чтобы задать цвет нумерации, шрифт и его размер.
Перейти к заданиям
Автор: Влад Мержевич
Последнее изменение: 16.03.2026