Как в html изменить стиль нумерации. Нумерованный список

Если вы когда-либо пробовали изменять css-стили номеров строк (цифр) в упорядоченных списках

    , то, наверняка, сталкивались с проблемами. Достучаться до стилей этих элементов при помощи css-селекторов невозможно. А ведь довольно часто дизайн интерфейса предполагает изменение иx цвета, фона, размера и т.д.

    Вот самый простой пример нестилизованного списка:

    html

    1. Посадить дерево
    2. Построить дом
    3. Вырастить сына

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

    Традиционно топорный способ.

    Традиционный способ решения этой проблемы сводится к тому, чтобы скрыть номера строк, автоматически расставленные браузером. При этом используется свойство list-style: none; .

    css

    li{ list-style: none; } .num{ color: white; background: #2980B9; display: inline-block; text-align: center; margin: 5px 10px; line-height: 40px; width: 40px; height: 40px; }

    html

    1. 1 Посадить дерево
    2. 2 Построить дом
    3. 3 Вырастить сына

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

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

    Красивый и правильный способ.

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

    css

    ol{ counter-reset: myCounter; } li{ list-style: none; } li:before { counter-increment: myCounter; content:counter(myCounter); color: white; background: #2980B9; display: inline-block; text-align: center; margin: 5px 10px; line-height: 40px; width: 40px; height: 40px; }

    html

    1. Посадить дерево
    2. Построить дом
    3. Вырастить сына

    Как видите, html-код остается чистым и красивым. При этом вся стилизация элементов списка переносится в css.

    Давайте разберем по пунктам:

    • li::before – создает внутри списка псевдоэлемент, который становится на место первого потомка.
    • counter-reset:myCounter; – обнуляет css-счетчик myCounter внутри каждого
        .
      1. counter-increment: myCounter; – инкрементирует css-счетчик myCounter для каждого псевдоэлемента::before .
      2. content:counter(myCounter); – выводит текущее значение счетчика myCounter внутри псевдоэлемента::before .

    подробнее о css-счетчиках можно посмотреть в

    Для списков, о создании которых средствами HTML рассказано здесь, предусмотрены следующие CSS-правила.

    list-style-type

    Задаёт маркер или нумерацию списков вместо атрибута type в HTML-коде. Значения свойств для маркированных списков могут быть:

    • disk - кружок, установлен по умолчанию.
    • circle - окружность.
    • square - квадрат.

    Для нумерованных списков свойству обычно присваиваются значения:

    • decimal - арабские цифры, значение установлено по умолчанию.
    • lower-roman - маленькие римские цифры.
    • upper-roman - заглавные римские цифры.
    • lower-alpha - строчные латинские буквы.
    • upper-alpha - прописные латинские буквы.

    Также для любого типа списка свойству list-style-type можно указать значение none, которое вообще уберёт маркер.

    Для нумерованных списков доступны и другие значения, например, cjk-ideographic задаёт идеографическую нумерацию, Armenian - традиционную армянскую, а decimal-leading-zero установит нумерацию римскими цифрами, но с нулём в начале: 01, 02, 03… 09, однако на практике эти и подобные им значения используются крайне редко.

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

    Списки CSS

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

    Результат.

    Цвет маркеров совпадает с цветом текста в списке, указанного свойством color .

    list-style-image

    Позволяет установить в качестве маркера списка собственное изображение. Например, если в папке с содержащей список страницей находится файл marker.png , который вы и хотите использовать, то код оформления будет следующим:

    Ul { list-style-image: url("marker.png"); }

    list-style-position

    Определяет положение маркера: либо он вынесен за границу элемента списка (list-style-position: outside ), либо текст его обтекает (list-style-position: inside ).

    В примере ниже показана разница между этими значениями. В первом случае маркер внутри списка, во втором случае он вынесен за его пределы.

    list-style-position

    • Вы просто посмотрите, чем отличаются inside от outside.
    • В случае с inside маркер прямо-таки вписывается в список, не выходя за его пределы и не мешая вёрстке. Текст обтекает его, маркер как бы внутри.
    • Значение outside выносит маркер за пределы списка.

    В результате создаётся такая страница:

    list-style

    Позволяет сократить код, записав все три перечисленных свойства одной строкой. Записываются правила через пробел:

    Ul { list-style: square inside; }

    Рассмотрим пример страницы с тремя списками. Первый нумеруется цифрами в формате 01, 02, второй маркируется пользовательским рисунком (файл marker.png в папке со страницей), маркер третьего списка отключен.

    HTML-код приведён ниже.

    list-style

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

    Браузер отобразит следующую страницу.

    Поддерживает два вида списков: нумерованные и ненумерованные. Первые используются для упорядоченного перечисления элементов, вторые - для создания списка равнозначных элементов. Есть ещё списки определений, которые используются для создания блоков определение-описание но, по моему опыту, используются крайне редко. О том, как работать с этими списками есть видео для новичков , где подробно показано, как работать с этими списками.

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

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

    1. 1.
    2. 2.
      1. 2.1.
      2. 2.2.
        1. 2.2.1.
          1. 2.2.1.1.
          2. 2.2.1.2.
        2. 2.2.2.
      3. 2.3.
      4. 2.4.
    3. 3.
    4. 4.
      1. 4.1.
      2. 4.2.
        1. 4.2.1.
          1. 4.2.1.1.
          2. 4.2.1.2.
        2. 4.2.2.
      3. 4.3.
      4. 4.4.

    Однако, при выводе такого HTML кода на экран получаем стандартный вывод нумерованного списка HTML, в котором все вложенные списки начинаются с 1 .

    На рисунке выше то, что представлено в начале элементов списка (не жирным текстом) - это автоматическая нумерация списка

      HTML. Правда неудобно?

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

      Ol { list-style: none; counter-reset: li; } li:before { counter-increment: li; content: counters(li,".") ". "; }

      Применив этот CSS-код к тегам

        и
      1. нумерованного списка получим то что нужно: правильно пронумерованный вложенный нумерованный список HTML:

        Формирование правильной нумерации во вложенном нумерованном списке HTML с помощью CSS

        Рассмотрим подробнее свойства элементов нумерованного списка HTML, которые можно модифицировать с помощью CSS.

        • list-style: none;
          • отменим все стили списка для элементов ol (если они вдруг были ранее назначены) с помощью свойства list-style
        • counter-reset: li;
          • назначим идентификатор li , в котором будет храниться счётчик отображений элемента ol с помощью свойства counter-reset
        • counter-increment: li;
          • обозначим идентификатор li как счётчик, который будет подсчитывать количество отображений элементов ol на странице и будет выводиться с помощью свойства content и псевдоэлемента:before для li
        • content: counters(li,".") ". ";
          • зададим последовательность вывода счётчика li для всех элементов нумерованного списка ol .

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

        HTML и CSS код нумерованного списка с правильной нумерацией

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

        Правильная нумерация вложенных пунктов нумерованного списка в HTML с помощью css

        1. 1.
        2. 2.
          1. 2.1.
          2. 2.2.
            1. 2.2.1.
              1. 2.2.1.1.
              2. 2.2.1.2.
            2. 2.2.2.
          3. 2.3.
          4. 2.4.
        3. 3.
        4. 4.
          1. 4.1.
          2. 4.2.
            1. 4.2.1.
              1. 4.2.1.1.
              2. 4.2.1.2.
            2. 4.2.2.
          3. 4.3.
          4. 4.4.

        Спасибо за внимание! =D

        P.S. О том, как создать правильную нумерация в смешанных нумерованных и маркированных списках HTML с помощью CSS, можно прочитать в → этой статье . Приведено универсальное решение по созданию css-свойств для различных типов HTML-списков.


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

        В CSS для автоматизации процесса нумерации используются счетчики.

        Для начала приведем простой пример. Затем посложнее - создадим вложенный список с автоматизированной нумерацией его пунктов и подпунктов.

        Идентификация счетчика

        Сначала необходимо идентифицировать счетчик.

        С помощью свойства counter-reset счетчику присваивается имя и начальное значение. Имя может быть любым, но не может начинаться с цифры.

        Фрагмент кода:

        Эта запись говорит о том, что для тега установлен счетчик с именем number и начальным значением 3 .

        По умолчанию начальное значение счетчика равно 0 .

        Приращение счетчика

        Для этого служит свойство counter-increment . Также оно используется для задания приращений счетчика - числа, на которое будет увеличиваться значение счетчика.

        Фрагмент кода:

        body { counter-reset : number 3 ;}
        body p { counter-increment : number 3; }

        Этот фрагмент кода говорит о том, что абзацы (тег

        ) в теле документа будут нумероваться счетчиком number с приращением равным 3 .

        Первый абзац будет под номером 6 , так как начальное значение счетчика 3 и его приращение равно 3 .

        По умолчанию значение приращений счетчика равно 1 .

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

        Отображение счетчика

        Теперь необходимо вывести значение счетчика и задать правила его расположения. Это делается с помощью свойства content и псевдоэлементов before и after .

        Свойство content вставляет содержимое до (before ) или после (after ) указанного элемента.

        Фрагмент кода:

        body { counter-reset : number 3 ;}
        body p:after { counter-increment : number 3; content : " равно " counter(number) "." ;}

        Итак, к предыдущему фрагменту кода мы добавили свойство content , которое выводит слово "равно" , затем значение счетчика number и точку "." . Все это вставляется на страницу после содержимого абзаца (тега

        ), о чем говорит псевдоэлемент after .

        В итоге...

        Ниже представлен описанный пример.

        Фрагмент кода:






        2 умножить на 3


        3 умножить на 3


        4 умножить на 3


        5 умножить на 3


        Результат:

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

        Давайте рассмотрим пример применения счетчиков для автоматизации процесса нумерации вложенных списков.

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

        А как насчет автоматической нумерации подпунктов вида 1.1, 1.2, 2.1, 2.2 и т.д.?

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

        Фрагмент кода:





        Автоматическая нумерация в CSS


        1. Первый пункт списка

          1. Первый подпункт 1-го пункта

          2. Второй подпункт 1-го пункта

        2. Второй пункт списка

          1. Первый подпункт 2-го пункта

          2. Второй подпункт 2-го пункта

        3. Третий пункт списка

          1. Первый подпункт 3-го пункта

          2. Второй подпункт 3-го пункта

          3. Третий подпункт 3-го пункта


          Результат:

          Вот так происходит автоматизация процесса нумерации вложенных списков!

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

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

            1. Первый пункт
            2. Второй пункт
            3. Третий пункт

            Если не указывать никаких дополнительных атрибутов и просто написать тег

              , то по умолчанию применяется список с арабскими числами (1, 2, 3,...), как показано в примере 11.3.

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

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

              Работа со временем

              1. создание пунктуальности (никогда не будете никуда опаздывать);
              2. излечение от пунктуальности (никогда никуда не будете торопиться);
              3. изменение восприятия времени и часов.

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

              Рис. 11.3. Вид нумерованного списка

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

              В качестве нумерующих элементов могут выступать следующие значения:

              • арабские числа (1, 2, 3, ...);
              • прописные латинские буквы (A, B, C, ...);
              • строчные латинские буквы (a, b, c, ...);
              • прописные римские числа (I, II, III, ...);
              • строчные римские числа (i, ii, iii, ...).

              Для указания типа нумерованного списка применяется атрибут type тега

                . Его возможные значения приведены в табл. 11.2.

                Табл. 11.2. Типы нумерованного списка
                Тип списка Код HTML Пример
                Арабские числа

                1. Чебурашка
                2. Крокодил Гена
                3. Шапокляк
                Прописные буквы латинского алфавита

                A. Чебурашка
                B. Крокодил Гена
                C. Шапокляк
                Строчные буквы латинского алфавита

                a. Чебурашка
                b. Крокодил Гена
                c. Шапокляк
                Римские числа в верхнем регистре

                I. Чебурашка
                II. Крокодил Гена
                III. Шапокляк
                Римские числа в нижнем регистре

                i. Чебурашка
                ii. Крокодил Гена
                iii. Шапокляк

                Чтобы начать список с определенного значения, используется атрибут start тега

                  . При этом не имеет значения, какой тип списка установлен с помощью type , атрибут start одинаково работает и с римскими и с арабскими числами. В примере 11.4 показано создание списка с использованием римских цифр в верхнем регистре, начинающихся с восьми.

                  Пример 11.4. Нумерация списка

                  Римские числа

                  1. Король Магнум XLIV
                  2. Король Зигфрид XVI
                  3. Король Сигизмунд XXI
                  4. Король Хусбрандт I

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

                  Рис. 11.4. Нумерованный список с римскими числами