Ростелеком

Нумерованные списки. Счетчики. Автоматическая нумерация в 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-го пункта


    Результат:

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

    Если вы когда-либо пробовали изменять 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. Маркированные списки в 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

        Чтобы сделать комбинированный список в HTML лучше всего использовать иконочные шрифты. Например, Flaticon или Fontawesome .

        Эта информация уже для продвинутых, поэтому для начала необходимо будет .

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

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

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

        На этом со списками заканчиваем и переходите к следующему уроку по изображениям.

        Если вам нужно больше, чем просто основы сайтостроения, а хотите освоить профессию Front-end разработчика, то обратите внимание на курс от онлайн-школу Нетология — « » и онлайн-школу Skillbox и курс « «.

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

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

          , который и применяется для создания списка. Каждый пункт нумерованного списка обозначается тегом
        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. Нумерованный список с римскими числами