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

    Описание

    Атрибуты

    reversed: Указывает, что элементы списка будут идти в порядке убывания (вместо порядка по возрастанию). Возможные значения логического атрибута:

          Примечание: атрибут reversed поддерживается только браузерами Chrome и Safari.

          Start: Устанавливает начальное целочисленное значение, с которого будет начинаться нумерация элементов в списке. Пример » type: Определяет вид маркера, который будет использоваться для элементов списка:

          • 1 - десятичные числа (1, 2, 3, 4 ...).
          • A - латинские буквы в алфавитном порядке, в верхнем регистре (A, B, C, D ...).
          • a - латинские буквы в алфавитном порядке, в нижнем регистре (a, b, c, d ...).
          • I - римские цифры в верхнем регистре (I, II, III, IV ...).
          • i - римские цифры в нижнем регистре (i, ii, iii, iv ...).
          Пример »

          Тег

            так же поддерживает Глобальные атрибуты и События

            Стиль по умолчанию

            ol { display: block; list-style-type: decimal; margin-top: 1em; margin-bottom: 1em; margin-left: 0; margin-right: 0; padding-left: 40px; }

            Пример

            1. Кофе
            2. Чай
            3. Молоко
            1. Кофе
            2. Чай
            3. Молоко

            Разница лишь в том, что этот тег строго сделан для нумерации списков. Название тега пришло от английского сокращения "Ordered List" - нумерованный список.

            Синтаксис тега

              1. Элемент #1
              2. Элемент #2
              3. Элемент #3
              4. ...

              Где атрибут type="value" может принимать следующие значения

              • A - задает маркеры в виде прописных латинских букв (A, B, C..);
              • a - задает маркеры в виде строчных латинских букв (a, b, c..);
              • I - задает маркеры в виде больших римских цифр (I, II, III, IV..);
              • i - задает маркеры в виде маленьких римских цифр (i, ii, iii, iv..);
              • 1 (по умолчанию) - задает маркеры в виде арабских цифр (1, 2, 3..);

              Атрибут start="value" задает начальное значение (стартовое значение) отчета.

              Атрибут reversed задает обратный счет (в случае необходимости).

              Тег

                требует обязательного использования закрывающего тега

              Для формирования элементов списка используется парный тег

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

              Примечание

              Внутри списка есть возможность изменять счет на свой. Для этого есть специальный атрибут value="" у тега

            2. , которому присваивается какое-то числовое значение. Например

              1. Элемент #1
              2. Элемент #2
              3. Элемент #3

              Примеры с нумерованными списками в html (
                )

              Пример 1. Нумерованный список html в виде латинских букв

              Пример с заглавными буквами

              1. Элемент #1
              2. Элемент #2
              3. Элемент #3
              1. Элемент #1
              2. Элемент #2
              3. Элемент #3

              Пример со строчными буквами

              1. Элемент #10
              2. Элемент #11
              3. Элемент #12

              Вот как это выглядит на странице:

              1. Элемент #1
              2. Элемент #2
              3. Элемент #3

              Пример 2. Нумерованный список html в виде римских букв

              Пример с заглавными буквами

              1. Элемент #1
              2. Элемент #2
              3. Элемент #3

              Вот как это выглядит на странице:

              1. Элемент #1
              2. Элемент #2
              3. Элемент #3

              Пример со строчными буквами

              1. Элемент #1
              2. Элемент #2
              3. Элемент #3

              Вот как это выглядит на странице:

              1. Элемент #1
              2. Элемент #2
              3. Элемент #3

              Пример 3. Нумерованный список html разная позиция старта

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

              1. Элемент #1
              2. Элемент #2
              3. Элемент #3

              Вот как это выглядит на странице:

              1. Элемент #1
              2. Элемент #2
              3. Элемент #3

              Пример 4. Изменение счета в нумерованных списках html

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

            3. .

              1. Элемент #1
              2. Элемент #2
              3. Элемент #3
              4. Элемент #4

              Вот как это выглядит на странице:

              1. Элемент #1
              2. Элемент #2
              3. Элемент #3
              4. Элемент #4

              Пример 5. Реверсивный нумерованный список в html

              Ниже приведен пример реверсивного нумерованного списка (счет в обратном порядке).

              1. Элемент #1
              2. Элемент #2
              3. Элемент #3
              4. Элемент #4

              Вот как это выглядит на странице:

              1. Элемент #1
              2. Элемент #2
              3. Элемент #3
              4. Элемент #4

              Здравствуйте, уважаемые читатели блога сайт. Сегодня в рамках этой рубрики я хочу поговорить о разнообразных Html списках, которые можно создать на основе специально предназначенных для этого тегов UL, OL, LI и DL. С помощью пары UL и LI создаются маркированные списки, с помощью OL и LI - нумерованные, а с помощью элементов DL, DT и DD создаются так называемые листинги определений. Так же мы рассмотрим вкратце принципы создания вложенных конструкций.

              Хочу напомнить вам, что мы уже успели , успели поговорить про основы современной , а так же верстки табличной (). Кроме этого мы затронули основы , ну и узнали через .

              Маркированные списки на основе тэгов UL и LI

              Для создания маркированных списков используется тег UL, а для создания нумерованных – OL. Эти теги являются парными и блочными, точно так же, как и элемент LI.

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

              Давайте посмотрим, например, маркированный вариант, который может выглядеть так:

              • Первая строка
              • Вторая
              • Последний элемент

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

              Т.е. UL служит только для организации маркированного (не упорядоченного) листинга, а все, что вы будете видеть на web странице внутри него, реализуется с помощью содержимого элементов LI.

              Для UL можно менять вид маркера, прописывая в нем разные значения для атрибута «Type». Если «Type» (управление внешним видом маркеров) для элемента UL не указан, то будет отображаться вид маркера, принятого по умолчанию (disc — закрашенный в цвет текста кружок):

                • — закрашенный кружок (по умолчанию);
                  • — не закрашенный кружок;
                    • – квадрат

              В приведенных примерах атрибут «Type» мы прописывали в элементе UL, применяя данный тип маркеров для всех пунктов. Но атрибут «Type» можно прописать и для каждого отдельного тега LI, задав для этого пункта свой собственный тип маркера.

              Пример маркированного списка с различными типами маркера для каждого пункта:

              1. Маркер в виде закрашенного диска
              2. Маркер в виде не закрашенного диска
              3. Квадрат

              Нумерованные списки в Html на основе тэга OL

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

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

              1. Первая строка
              2. Второй пункт
              3. Третья строка

              Как я уже упоминал чуть выше, у элементов UL, OL и LI имеется возможность использовать атрибут TYPE. Он позволяет настроить тип маркера или задать, какими цифрами или буквами будут нумероваться пункты листинга. Для нумерованного списка параметры этого атрибута могут принимать следующие значения:

                1. — нумерация будет выполняться обычными арабскими цифрами (этот же вариант будет использоваться по умолчанию, при отсутствии атрибута «Type»);
                  1. заглавные буквы в качестве нумерации;
                    1. — строчные буквы;
                      1. — заглавные римские цифры;
                        1. — строчные римские цифры;

                        Пример нумерованного списка с различными типами нумерации для каждого пункта:

                        1. с нумерацией большими римскими цифрами
                        2. Нумерация маленькими латинскими буквами
                        3. Нумерация малыми римскими цифрами

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

                        1. Первый элемент, номер которого задан в теге OL атрибутом start="23"
                        2. Следующий пункт, с номером на единицу большим
                        3. Еще на единицу больше

                        Для OL так же можно начать новую нумерацию с любого значения, начиная с любого пункта, прописав в открывающем LI этого пункта атрибут VALUE с требуемым числом. Например:

                        1. Первый пункт с номером один
                        2. Этот элемент получит номер, указанный в атрибуте value="32"
                        3. Пункт с большим номером

                        Оформление внешнего вида списков в CSS (таблицах стилей)

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

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

                        • Первый пункт
                        • Второй
                        • Последний

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

                        Специальные и вложенные списки в Html коде

                        Третий и последний вид называется «списки определений» и задаются они с помощью трех тегов — DL, DT и DD. DL сообщает браузеру, что далее последует список определений.

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

                        Первый термин
                        Описание
                        Второй термин
                        Его описание

                        Если вы посмотрите на приведенный выше пример, то заметите, что элемент DD (описание термина) сдвигается (на 40 пикселей) относительно элемента DT (самого термина).

                        Вообще, DL, DT и DD являются блочными тегами, причем, внутри элемента DT можно вставлять только контент со строчными тегами (получается, что внутри DT нельзя будет использовать блочные элементы заголовков и абзацев). А внутри тегов DD можно вставлять любые элементы и строчные и блочные.

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

                        Обратите внимание, что закрывающий LI того пункта, в котором будет создан вложенный пункт, ставится лишь после всего кода вложенного списка (это очень важно для его правильного отображения на web странице). Вложенный список может выглядеть примерно, так:

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

                        Удачи вам! До скорых встреч на страницах блога сайт

                        Вам может быть интересно

                        Как вставить в HTML ссылку и картинку (фото) - теги IMG и A Select, Option, Textarea, Label, Fieldset, Legend - теги Html формы выпадающих списков и текстового поля
                        Html формы для сайта - теги Form, Input и Select, Option, Textarea, Label и другие для создания элементов вебформ
                        Как задаются цвета в Html и CSS коде, подбор RGB оттенков в таблицах, выдаче Яндекса и других программах
                        Embed и object - Html теги для отображения медиа контента (видео, флеш, аудио) на веб страницах
                        Теги и атрибуты заголовков H1-H6, горизонтальной линии Hr, переноса строки Br и абзаца P по стандарту Html 4.01
                        Таблицы в Html - теги Table, Tr и Td, а так же Colspan, Cellpadding, Cellspacing и Rowspan для их создания
                        Что такое язык гипертекстовой разметки Html и как посмотреть список всех тэгов в валидаторе W3C
                        Теги Font (Face, Size и Color), Blockquote и Pre - устаревшее форматирование текста в чистом HTML (без использования CSS)
                        Iframe и Frame - что это такое и как лучше использовать фреймы в Html
                        Img - Html тег для вставки картинки (Src), выравнивания и обтекание ее текстом (align), а так же задания фона (background)

                        В языке разметки гипертекста HTML имеется тег

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

                          Синтаксис тега

                            • Элемент #1
                            • Элемент #2
                            • Элемент #3
                            • ...

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

                            • Элемент #1
                            • Элемент #2
                            • Элемент #3

                            Тег

                              требует обязательного использования закрывающего тега
                            .

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

                            Что может являться содержимым маркированного списка?

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

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

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

                              Допускается вложения "список в списке"

                              Например

                              • Элемент #1
                                • Элемент #2-1
                                • Элемент #2-2
                                • Элемент #2-3
                              • Элемент #3
                              • ...

                              Атрибуты и свойства тега

                                Широко распространённым атрибутом тега

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

                                  1. type="disc" - маркер в виде закрашенного кружка (это значение стоит по умолчанию). Пример с диском был чуть выше.

                                  2. type="circle" - маркер в виде прозрачного кружка

                                  Например:

                                  • Элемент #1
                                  • Элемент #2
                                  • Элемент #1
                                  • Элемент #2

                                  3. type="square" - маркер в виде квадратика

                                  Например:

                                  • Элемент #1
                                  • Элемент #2

                                  А вот как это выглядит на странице:

                                  • Элемент #1
                                  • Элемент #2
                                  Примечание 1

                                  В CSS тип маркера задается с помощью атрибута list-style-type :

                                  • ...

                                  Рассмотрим какие значения может принимать list-style-type :

                                  • disc - маркер в виде кружка (пример был выше)
                                  • circle - маркер в виде прозрачного кружка (пример был выше)
                                  • square - маркер в виде квадратика (пример был выше)
                                  • decimal - маркер в виде нумереннового списка арабскими цифрами: 1, 2, 3, ...
                                  • decimal-leading-zero - маркер в виде нумереннового списка арабскими цифрами с нулем в начале: 01, 02, 03, ...
                                  • lower-roman - маркер в виде нумереннового списка римским алфавитом маленькими буквами: i, ii, iii, iv, v
                                  • upper-roman - маркер в виде нумереннового списка римским алфавитом большими буквами: I, II, III, IV, V
                                  • lower-latin - маркер в виде списка латинским алфавитом маленькими буквами: a, b, c, d, ...
                                  • upper-latin - маркер в виде списка латинским алфавитом большими буквами: A, B, C, D, ...
                                  • lower-greek - маркер в виде списка греческим алфавитом маленькими буквами
                                  • upper-greek - маркер в виде списка греческим алфавитом большими буквами

                                  Примечание 2

                                  Атрибут можно назначить как самому тегу

                                    , так и тегам
                                  • . При задании атрибута тегу
                                      все элементы списка будут отображаться так, как на это указывает атрибут. Но мы можем задать тому или иному элементу своё отображение. Пример на рисунке:

                                      Код при этом выглядит так:

                                      • Элемент #1
                                      • Элемент #2
                                      • Элемент #3
                                      • Элемент #1
                                      • Элемент #2
                                      • Элемент #3

                                      Изменение маркеров тега
                                        с помощью CSS

                                      Элементы маркированного списка, создаваемые тегом

                                        , могут маркироваться произвольными изображениями. Для изменения типа маркера используется CSS. Например

                                        • Элемент #1
                                        • Элемент #2
                                        • Элемент #3

                                        А так это выглядит на странице:

                                        • Элемент #1
                                        • Элемент #2
                                        • Элемент #3

                                        C помощью CSS мы можем задать и другие типы отображения маркеров. Но нужно помнить, что при задании какого-либо стиля тегу

                                          , он распространяется на все элементы списка.