Списки в HTML - маркированный список - нумерованный список - список определений - вложенные списки в HTML. Маркированный список

Доброго времени суток!

В этой статье вы узнаете о всех возможностях списков, поймете как сделать нумерованный список, освоите теги, которые помогут сделать из простого маркированного списка более интересный и заметный с произвольными маркерами. После прохождения урока у вас придет понимание того, где применяются списки и при каких обстоятельствах их можно использовать.

Данная статья — третья в данном небольшом курсе по основам HTML. Перед прочтением данного урока рекомендую пройти предыдущие два:

Только началась статья, а вы уже можете заметить использование стандартного маркированного списка. У меня на сайте он выглядит достаточно просто: слева есть небольшой отступ с линией и квадратный маркер. Далее в статье мы подробно рассмотрим какие бывают маркеры, как сделать цифры, а также как сделать собственный маркер.

В каждой части статьи создание тех или иных списков будет сопровождаться подробными пояснениями по вставке того или иного списка.

1. Маркированные списки в HTML

Данный вид списков используется для перечисления в тексте набора похожих по значению элементов. Это может быть перечисление ссылок, которые связаны одной тематикой, подробное объяснение для отдельных частей текста. Но давайте посмотрим как в коде выглядит маркированные списки:

А вот так выглядит в браузере:

Рис. 1.1. Стандартный вид маркированного ненумерованного списка HTML в браузере

1.1 Стандартные маркеры для маркированного списка

На изображении выше (Рис 1.1.) можно заметить кружки в начале каждого элемента меню. Это и есть маркер. По умолчанию он в браузере в виде закрашенного круга. Всего есть несколько видов маркеров в HTML: закрашенный круг, пустой круг и квадрат. Они не требуют ни CSS ни подключения сторонних изображений:

1.2 Маркер списка в виде пустого круга

Значения атрибута вы знаете, а сейчас посмотрим как сделать маркированный список HTML в коде. Из таблицы выше мы выбрали второе значение "circle" для атрибута type и задали его нашему маркированному списку:

<html > <head > <title > Пример маркированного списка с маркером в виде пустого круга</ title > </ head > <body > <p > Звезды:</ p > <ul type = "circle" > <li > Сириус</ li > <li > Арктур</ li > <li > Поллукс</ li > <li > Бетельгейзе</ li > <li > Солнце</ li > </ ul > </ body > </ html >

Сразу смотрим как этот код будет выглядеть в браузере:

Рис. 1.2. Вид маркера для списка в виде окружности в браузере

1.3 Маркер списка в виде квадрата

Посмотрим также и последний пример с квадратным маркером для HTML списка:

Обратите внимание на маркер, он стал квадратным:

Рис. 1.3. Вид маркера для списка в виде квадрата в браузере

Важное замечание: сейчас уже не используется такой способ для создания стилей маркированным спискам. Существует четкое разделение CSS (что такое CSS читайте ) и HTML. HTML — для разметки, а CSS — для создания привлекательного внешнего вида.

Код, который содержит данный атрибут, при указания типа текущего документа как HTML5 (""), выдаст ошибку при валидации. Если не слышали что такое валидация, то вам сюда — .

Ошибка будет следующая:

Рис. 1.4. Ошибка на валидаторе при использовании атрибута "type" у списка

С маркированными списками разобрались. Сейчас перейдем к нумерованным, а затем рассмотрим вложенные списки и несколько готовых примеров, которые используются чаще всего на реальных сайтах.

2. Нумерованные списки в HTML

В отличие от предыдущего вида списков, в нумерованных списков есть одна важная особенность: они автоматически проставляют нумерацию. Это бывает полезно когда необходимо пронумеровать большой список. Вручную это займет очень много времени, при этом еще можно сбиться. Нумерованный список задается с помощью тега . Как это выглядит на практике:

Пример нумерованного списка:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <html > <head > <title > Пример стандартного нумерованного списка</ title > </ head > <body > <p > От одного до пяти:</ p > <ol > <li > Первый</ li > <li > Второй</ li > <li > Третий</ li > <li > Четвертый</ li > <li > Пятый</ li > </ ol > </ body > </ html >

Таким образом выглядит нумерованный список со стандартными настройками в браузере:

Рис. 2.1. Нумерованный список в браузере со стандартными настройками

Как и у его предшественника (маркированного списка) у него есть свои стили для вывода цифр. Обычная нумерация — это не единственный вид маркеров у нумерованного списка в HTML.

2.1 Стандартные маркеры для нумерованного списка

Здесь у нас есть выбор не из трех видов маркеров, а из пяти:

Название маркера Значение атрибута "type" Пример списка
Маркеры в виде арабских чисел 1
  • Бадминтон
  • Бейсбол
Маркеры в виде строчных латинских букв a
  • Джомолунгма
  • Чогори
  • Канченджанга
Маркеры в виде заглавных латинских букв A
  • Summit Plummet
  • Tantrum Alley
  • Insano
Маркеры в виде римских цифр в нижнем регистре i
  • Филиппинское море
  • Аравийское море
  • Коралловое море
Маркеры в виде римских цифр в верхнем регистре I
  • Красный
  • Зеленый
  • Синий

2.2 Своя нумерация в списке HTML

Кроме обычного вывода нумерованного списка мы также можем начать свою нумерацию с любой цифры. Для этого необходимо задать дополнительный атрибут "start" . Такая нумерация работает на всех видах маркеров у нумерованных списков. Как это выглядит на практике:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <html > <head > <title > Произвольная нумерация для нумерованного списка</ title > </ head > <body > <p > Начинаем нумерацию с двенадцати:</ p > <ol type = "a" start = "12" > <li > Двенадцать</ li > <li > Тринадцать</ li > <li > Четырнадцать</ li > <li > Пятнадцать</ li > <li > Шестнадцать</ li > </ ol > </ body > </ html >

Вот как это будет отображаться на реальном сайте:

Рис. 2.2. Нумерация с произвольного числа в нумерованном списке

На изображении выше мы пронумеровали список начиная с двенадцати, при этом сделали маркеры в виде строчных латинских букв. Сейчас, я думаю, стало понятно как использовать данные атрибуты в своих проектах.

Ну а сейчас перейдем к вложенным спискам HTML.

3. Как сделать многоуровневый (вложенный) список в HTML

Многоуровневые списки используются на сайте в построении меню. Это меню чаще всего выглядит выпадающим либо вниз (урок по ), либо выпадающим влево или вправо. Такие меню позволяют хранить в себе другие элементы меню в компактном виде.

На примере моделей автомобилей мы построим многоуровневый список в HTML:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <html > <head > <title > Вложенный маркированный список HTML</ title > </ head > <body > <ul > <li > Citroen <ul > <li > Berlingo</ li > <li > C1</ li > <li > C2</ li > <li > C3 Picasso</ li > <li > C4 Grand Picasso</ li > </ ul > </ li > <li > KIA</ li > <li > Toyota</ li > <li > Audi</ li > <li > Lexus</ li > </ ul > </ body > </ html >

Обратите внимание, как выглядит многоуровневый список в браузере:

Рис. 3.1. Пример многоуровневого списка в HTML

Мы делали многоуровневый список с помощью маркированного (тег

    ). Многоуровневый список с моделями Citroen появился с другими маркерами. Основной список с закрашенными маркерами, а список на 2-м уровне — с пустыми кружками. Но, как помните, с помощью атрибута "type" мы можем переопределить маркеры (лучше задавать ).

    Но мы можем объединить многоуровневые списки с нумерованными и маркированными следующим образом:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <html > <head > <title > Нумерованные, маркированные и многоуровневые списки в HTML</ title > </ head > <body > <ul > <li > Первая группа тюльпанов <ol > <li > Первый класс <ul > <li > Простые ранние тюльпаны</ li > </ ul > </ li > <li > Второй класс <ul > <li > Махровые тюльпаны</ li > </ ul > </ li > </ ol > </ li > </ ul > </ body > </ html >

    В примере выше у нас двойная вложенность (2 уровня). Сначала вкладывается список из двух классов тюльпанов, он у нас нумерованный. Затем в каждый из элементов нумерованного списка вкладывается маркированный список.

    Смотрим его вид в браузере:

    Рис. 3.2. Пример многоуровневого нумерованного списка в маркированный список в браузере

    4. Полезные материалы по спискам HTML

    Здесь находится информация, для которой необходимо понимание свойств CSS. Для этого рекомендую изучить следующие уроки: . Все примеры будут сразу с исходным кодом и разбиты по вкладкам HTML (структура), CSS (стили) и Result (результат).

    4.1 Как сделать список HTML в строку

    Сделать список HTML в строку может понадобиться при создании горизонтального меню. Сделать его очень просто:

    4.2 Как сделать список HTML без значка

    За это отвечает свойство list-style-type в CSS (подробнее ):

    4.3 Как сделать список в HTML по центру

    Элемент списка — это блочный элемент, поэтому по центру его необходимо выравнивать с помощью внешних отступов. Но есть один важный момент — мы должны явно указать ширину, чтобы выравнивание сработало:

    4.4 Как сделать список в HTML с картинками

    Достаточно лишь одного свойства CSS list-style-image . Внутри url указать адрес до иконки. Хочу лишь заметить, что изображение лучше сразу подбирать маленькое, потому что от него зависит высота строки списка:

    4.5 Маркированный список HTML свой маркер

    В этом случае необходимо заранее подключить шрифтовые иконки (например, FontAwesome ). Тогда можно сделать любую иконку вместо стандартного маркера:

    4.6 Как сделать список в HTML в несколько столбцов

    Чтобы сделать список в несколько столбцов мы воспользуемся свойством CSS column-count (свойство поддерживается только в следующих браузерах: IE 10+, Chrome 1.0+, Opera 11.1+, Safari 3.0+, Firefox 1.5+). Также необходимо задать высоту для списка, чтобы увидеть разбиение на несколько столбцов:

    5. Практика работы со списками

    На видео ниже вы можете увидеть всю работу со списками HTML на практике:

    Маркированный список определяется тем, что перед каждым элементом списка добавляется небольшой маркер, обычно в виде закрашенного кружка. Сам список формируется с помощью контейнера

      , а каждый пункт списка начинается с тега
    • , как показано ниже.

      • Первый пункт
      • Второй пункт
      • Третий пункт

      В списке непременно должен присутствовать закрывающий тег

    , иначе возникнет ошибка. Закрывающий тег хотя и не обязателен, но советуем всегда его добавлять, чтобы четко разделять элементы списка.

    В примере 11.1 приведен код HTML для добавления маркированного списка на веб-странице.

    Пример 11.1. Создание маркированного списка

    Маркированный список


    • Чебурашка
    • Крокодил Гена
    • Шапокляк
    • Крыса Лариса

    Результат данного примера показан на рис. 11.1.

    Рис. 11.1. Вид маркированного списка

    Обратите внимание на отступы сверху, снизу и слева от списка. Такие отступы добавляются автоматически.

    Маркеры могут принимать один из трех видов: круг (по умолчанию), окружность и квадрат. Для выбора стиля маркера используется атрибут type тега

      . Допустимые значения приведены в табл. 11.1

      Табл. 11.1. Стили маркеров списка
      Тип списка Код HTML Пример
      Список с маркерами в виде круга

      • Первый
      • Второй
      • Третий
      Список с маркерами в виде окружности

      • Первый
      • Второй
      • Третий
      Список с квадратными маркерами

      • Первый
      • Второй
      • Третий

      Вид маркеров может незначительно различаться в разных браузерах, а также при смене шрифта и размера текста.

      Создание списка с квадратными маркерами показано в примере 11.2.

      Пример 11.2. Вид маркеров

      Маркированный список

      Изменение убеждений

      • изменение религиозной веры (на выбор: буддизм, конфуцианство, индуизм). Специальное предложение - иудаизм и мусульманство вместе;
      • изменение веры в непогрешимость любимой партии;
      • убеждение в том, что инопланетяне существуют;
      • предпочтение политического строя, как самого лучшего в своем роде (на выбор: феодализм, социализм, коммунизм, капитализм).

      Результат данного примера показан на рис. 11.2.

      Списки активно используются для автоматической нумерации блоков контента. Однако при использовании вложенных списков нельзя получить нумерацию подпунктов типа 1.1, 1.2, 1.3, поскольку каждый список будет независимым. Но то, что нельзя в ШТМЛ, можно возложить на стили.

      Для начала просмотрим, как вообще создавать вложенные списки. В качестве основного контейнера выступает тег

        , а элементы списка формируются тегами
      1. . Вложенный список также начинается с
          , но этот тег должен располагаться внутри контейнера
        1. , именно так соблюдается корректность синтаксиса (пример 1).

          Пример 1. Обычный вложенный список





          Вложенный список



          1. Пункт 1

            1. Подпункт 1.1

            2. Подпункт 1.2

            3. Подпункт 1.3



          2. Пункт 2

            1. Подпункт 2.1

            2. Подпункт 2.2





          Результат данного примера показан на рис. 1. Обратите внимание, что нумерация вложенных списков начинается каждый раз заново.

          Рис. 1. Вид вложенного списка

          Теперь уберем встроенную нумерацию списков и создадим ее по новой, но уже в том виде, что нам требуется. Для этого понадобится три стилевых атрибута: counter-reset , counter-increment и content .

          counter-reset — задает некоторую переменную, которая будет хранить значение счетчика;

          counter-increment — увеличивает или уменьшает значение счетчика на указанное число;

          content — выводит значение счетчика при использовании аргумента counter(переменная) . Работает совместно с псевдоэлементами after или before .

          Для списка первого уровня переменную счетчика назовем list1 , а для второго уровня — list2 . Тогда инициация счетчиков для списков будет следующей.

          OL { counter-reset: list1; } /* Список первого уровня */
          OL OL { counter-reset: list2; } /* Список второго уровня*/

          В данном случае отделить вложенный список от внешнего помогают конконтентные селекторы. Конструкция OL OL означает применять стиль только к тегу

            , но только когда он располагается внутри другого тега
              .

              Увеличение значения счетчика происходит через селектор OL LI:before , к которому добавляются стилевые атрибуты counter-increment и content . Атрибут counter-increment со значением list1 повышает значение этого счетчика на единицу, а content: counter(list1) ". " выводит значение счетчика перед пунктом списка. Эти атрибуты работают в паре, поэтому включать их надо одновременно.

              OL LI:before { /* Список первого уровня */
              counter-increment: list1;
              /* Выводим значение в виде 1., 2.*/
              }
              OL OL LI:before { /* Список второго уровня */
              counter-increment: list2; /* Увеличиваем значение счетчика */
              }

              Для вложенного списка вновь применяем конконтентные селекторы (OL OL ) и одновременно используем вывод счетчика list1 и list2 , в этом случае мы и получим нумерацию нужного нам вида.

              Окончательный код приведен в примере 2.

              Пример 2. Вложенные списки с автонумерацией





              Вложенный список




              1. Пункт

                1. Подпункт

                2. Подпункт

                3. Подпункт



              2. Пункт

                1. Подпункт

                2. Подпункт





              Результат данного примера показан на рис. 2.

              Рис. 2. Вид автонумерации списка в браузере Опера

              Замечание

              Приведенный пример не работает в браузере Internet Эксплорер до 7 версии включительно, поскольку он не поддерживает ни одно из приведенных стилевых свойств.

              Поскольку браузер Internet Эксплорер не поддерживает множество интересных стилевых атрибутов, специально для него обычную нумерацию в списках следует оставить нетронутой. Для этого дастаткова убрать list-style-type: none . Но это также затронет и другие браузеры, в которых пример работает корректно, поэтому придется применить хаком — так имеется ввиду прием, когда разным браузерам дается разный стилевой код. Например, можно применить тегом !important . При добавлении !important к значению стилевого атрибута его важность повышается. Если заново определить значение того же атрибута без !important , он будет игнорироваться браузерами. Но только не в Intenet Explorer версии 6 и ниже.

              LI {
              list-style-type: none !important; /* Убираем нумерацию в браузерах Опера, Safari, Файер фох */
              list-style-type: decimal; /* Оставляем нумерацию в браузере ИЕ6 и ниже */
              }

              Заменяя этим кoдам строку с селектором LI в примере 2 получим вложенный список корректно работающий во всех браузерах.

              В языке HTML существует два вида списков: нумерованные и ненумерованные. Их создание практически одинаковое. Даже теги отличаются на один символ. Также можно создавать которые могут включать в себя как нумерованные, так и маркерные.

              Эти списки можно преобразовывать как угодно. Всё зависит от вашей фантазии. Сначала мы рассмотрим стандартные списки, такие же как в редакторе Word, а затем будем их улучшать и оформлять до неузнаваемости.

              Нумерованный список HTML

              Обычный нумерованный можно создать при помощи следующих тегов:

            1. Первый пункт списка
            2. Второй пункт списка
            3. Третий пункт списка
            4. Простые списки выглядят вот так

              Согласно стандартам, каждый пункт списка должен быть внутри открывающего и закрывающего тега li. Но если вы не поставите закрывающий тег, то результат будет точно таким же. Обработчик весьма умный. Во время преобразования списка он анализирует открывающие теги. Если он видит новый

            5. , то автоматически перед ним ставит
            6. .

              Таким образом, списки можно делать так, как показано ниже.

              Но с точки зрения профессионалов это некорректно.

              Ненумерованные (или же маркерные) списки создаются точно так же, только вместо тега ol, пишется ul.

              В нет цифр или букв - только различные символы, которые называются маркерами.

              Многоуровневый нумерованный список HTML

              Многих пользователей интересует такая возможность. Поэтому следует отметить, что любой нумерованный список HTML можно сделать многоуровневым. Дополнительные уровни могут быть такими же или маркированными.

              Для того чтобы создать список, указанный в примере выше, нужно написать следующее.

              Обратите внимание, что в этом коде, в отличие от первых примеров, добавлен атрибут type. Благодаря ему можно указать вид сортировки как для нумерованных, так и для маркерных списков.

              Для нумерованных указываем алфавит или тип цифр, а для остальных случаев - тип маркера.

              Если использовать специальный HTML-тег, нумерованный список может стать любым, каким вы хотите.

              Можно указать атрибут type с любым значением из таблицы. Или в классе стиля css указать list-style-type с желаемым типом сортировки.

              Перевод значений довольно простой. Хватит базовых знаний английского языка. Но даже если вы не можете перевести слова "круг", "квадрат" и т. п., то можно визуально понять, каков будет результат при указании этих значений в атрибуте type.

              Для нумерованных списков нужно использовать следующие варианты:

              • 1 - арабские цифры;
              • A - заглавные ;
              • a - строчные латинские буквы;
              • I - заглавные римские цифры;
              • i - строчные римские цифры.

              По умолчанию всегда используется список с То есть, если вы ничего не указали, это равносильно type="1".

              Помимо этого, нумерованные списки можно начинать с любой желаемой позиции. По умолчанию - вывод от 1. Но при желании можно начать хоть со ста. Для этого нужно указать атрибут start с любым значением.

              Кроме этого, можно сделать вывод в обратном порядке. Для этого нужно написать reversed.

              Оформление списков

              Нумерованный список HTML можно оформить настолько красиво, что не сразу можно догадаться, что это обычный список, а не картинка, сделанная в Photoshop.

              Вот примеры красивых списков.

              Как видно из примера, можно изменять внешний вид нумерации и самих элементов.

              Создать обычный список можно вот так.

              В стилях css нужно указать оформление для тегов ol. Обратите внимание, что в этом случае настройки будут применены ко всем спискам всего сайта, где используется этот файл стилей.

              Рассмотрим сначала вариант с круглым оформлением списка. Вернитесь к коду списка. Там указан класс rounded-list. Вот именно с этим классом нужно повозиться, чтобы сделать такую красоту. Назвать класс вы можете как хотите.

              Теперь рассмотрим квадратное оформление.

              Стили весьма похожи. Разница в том, что в первом случае происходит округление элемента посредством возможностей css.

              Профессиональный верстальщик должен предвидеть и понимать, что не все пользователи используют современные компьютеры. Не у всех установлены Windows 7, 8, 10. Существует процент пользователей, кто до сих пор сидит на Windows XP и использует старые версии браузера Internet Explorer.

              Как правило, почти все современные дизайнерские улучшения элементов ими не поддерживаются. Пользователю будет казаться, что над дизайном сайта вообще не работали. Что всё съехало. Элементы наезжают друг на друга. Чтобы этого избежать, нужно просчитывать все варианты.

              Некоторые веб-мастера закрывают глаза на них, поскольку их доля на современном рынке становится всё меньше и меньше. Но для профессионала важен каждый посетитель, особенно если это коммерческий сайт.

              Делайте что-то подходящее для всех или учитывайте все варианты браузеров.

              HTML-списки используются для группировки связанных между собой фрагментов информации. Существует три вида списков:

              маркированный список

                — каждый элемент списка
              • отмечается маркером,
                нумерованный список
                  — каждый элемент списка
                1. отмечается цифрой,
                  список определений — — состоит из пар термин
                  определение.

                  Каждый список представляет собой контейнер, внутри которого располагаются элементы списка или пары термин-определение. Элементы списка ведут себя как блочные элементы, располагаясь друг под другом и занимая всю ширину блока-контейнера. Каждый элемент списка имеет дополнительный блок, расположенный сбоку, который не участвует в компоновке.

                  Создание HTML-списков

                  1. Маркированный список

                  Маркированный список представляет собой неупорядоченный список (от англ. Unordered List) . Создаётся с помощью парного тега

                  . В качестве маркера элемента списка выступает метка, например, закрашенный кружок.

                  Браузеры по умолчанию добавляют следующее форматирование блоку списка:

                  Каждый элемент списка создаётся с помощью парного тега

                2. (от англ. List Item) .
                  доступны .
                • Microsoft
                • Google
                • Apple
                Рис. 1. Маркированный список

                2. Нумерованный список

                Нумерованный список создаётся с помощью парного тега . Каждый пункт списка также создаётся с помощью элемента

              • . Браузер нумерует элементы по порядку автоматически и если удалить один или несколько элементов такого списка, то остальные номера будут автоматически пересчитаны.

                Блок списка также имеет стили браузера по умолчанию:

              • доступен атрибут value , который позволяет изменить номер по умолчанию для выбранного элемента списка. Например, если для первого пункта списка задать
              • , то остальная нумерация будет пересчитана относительно нового значения.

                Для тега

                  доступны следующие атрибуты:

                  Таблица 1. Атрибуты тега
                  Атрибут Описание, принимаемое значение
                  reversed Атрибут reversed задает отображение списка в обратном порядке (например, 9, 8, 7…).
                  start Атрибут start задает начальное значение, от которого пойдет отсчет нумерации, например, конструкция
                    первому пункту присвоит порядковый номер «10». Также можно одновременно задавать тип нумерации, например,
                      .
                  type Атрибут type задает вид маркера для использования в списке (в виде букв или цифр). Принимаемые значения:
                  1 — значение по умолчанию, десятичная нумерация.
                  A — нумерация списка в алфавитном порядке, заглавные буквы (A, B, C, D).
                  a — нумерация списка в алфавитном порядке, строчные буквы (a, b, c, d).
                  I — нумерация римскими заглавными цифрами (I, II, III, IV).
                  i — нумерация римскими строчными цифрами (i, ii, iii, iv).
                  1. Microsoft
                  2. Google
                  3. Apple
                  Рис. 2. Нумерованный список

                  3. Список определений

                  Списки определений создаются с помощью тега

                  . Для добавления термина применяется тег
                  , а для вставки определения — тег
                  .

                  Блок списка определений имеет следующие стили браузера по умолчанию:

                  Для тегов

                  ,
                  и
                  доступны .

                  Режиссер:
                  Петр Точилин
                  В ролях:
                  Андрей Гайдулян
                  Алексей Гаврилов
                  Виталий Гогунский
                  Мария Кожевникова
                  Рис. 3. Список определений

                  4. Вложенный список

                  Зачастую возможностей простых списков не хватает, например, при создании оглавления никак не обойтись без вложенных пунктов . Разметка для вложенного списка будет следующей:

                  • Пункт 1.
                  • Пункт 2.
                    • Подпункт 2.1.
                    • Подпункт 2.2.
                      • Подпункт 2.2.1.
                      • Подпункт 2.2.2.
                    • Подпункт 2.3.
                  • Пункт 3.

                  Рис. 4. Вложенный список

                  5. Многоуровневый нумерованный список

                  Многоуровневый список используется для отображения элементов списка на разных уровнях с различными отступами. Разметка для многоуровневого нумерованного списка будет следующей:

                  1. пункт
                  2. пункт
                    1. пункт
                    2. пункт
                    3. пункт
                      1. пункт
                      2. пункт
                      3. пункт
                    4. пункт
                  3. пункт
                  4. пункт

                  Такая разметка по умолчанию создаст для каждого вложенного списка новую нумерацию, начинающуюся с единицы. Чтобы сделать вложенную нумерацию, нужно использовать следующие свойства:
                  counter-reset сбрасывает один или несколько счётчиков, задавая значение для сброса;
                  counter-increment задаёт значение приращения счётчика, т.е. с каким шагом будет нумероваться каждый последующий пункт;
                  content — генерируемое содержимое, в данном случае отвечает за вывод номера перед каждым пунктом списка.

                  Ol { /* убираем стандартную нумерацию */ list-style: none; /* Идентифицируем счетчик и даем ему имя li. Значение счетчика не указано - по умолчанию оно равно 0 */ counter-reset: li; } li:before { /* Определяем элемент, который будет нумероваться — li. Псевдоэлемент before указывает, что содержимое, вставляемое при помощи свойства content, будет располагаться перед пунктами списка. Здесь же устанавливается значение приращения счетчика (по умолчанию равно 1). */ counter-increment: li; /* С помощью свойства content выводится номер пункта списка. counters() означает, что генерируемый текст представляет собой значения всех счетчиков с таким именем. Точка в кавычках добавляет разделяющую точку между цифрами, а точка с пробелом добавляется перед содержимым каждого пункта списка */ content: counters(li,".") ". "; }
                  Рис. 5. Многоуровневый нумерованный список