Изменить цвет маркеров списка css. Стилизация номеров строк (цифр) в упорядоченных списках ol. Изменение и удаление маркеров

  • Изменение вида стандартного маркера для нумерованных списков
  • Установка типа маркера для маркированных списков
  • Установка изображения вместо маркера для элементов списка

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

Изменение и удаление маркеров

Для изменения стандартного внешнего вида маркера в CSS используется свойство list-style-type , в качестве значения задается тот вид маркера, на который вы хотите заменить стандартный.

Пример, демонстрирующий некоторые виды маркеров для нумерованных списков:

CSS Свойство:

list-style-type:

Результат:

  1. Кликните на значение свойства list-style-type
  2. Наблюдайте за сменой маркеров
  3. Используйте для своих списков наиболее подходящие маркеры

Ol#myList {
list-style-type: decimal ;
}

Кликните на любое значение свойства, чтобы увидеть результат

Для маркированных списков существует всего три вида маркеров, которые можно задать с помощью значений circle, disk и squred:

Название документа

  • Кофе
  • Чай
  • Кофе
  • Чай
  • Кофе
  • Чай
Попробовать »

С помощью значения none можно удалить маркеры у пунктов в списке, но отступ слева при этом все равно останется:

Название документа

  • Кофе
  • Чай
  1. Кофе
  2. Чай
Попробовать »

Замена маркеров картинками

Если вам не подходит ни один из предлагаемых по умолчанию маркеров, то CSS предоставляет возможность заменить их любой картинкой, в этом вам поможет свойство list-style-image , в значении которого нужно прописать путь к выбранному изображению.

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

Название документа

  • Кофе
  • Чай
  1. Кофе
  2. Чай
Попробовать »

Отступ списка

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

Название документа

  • Кофе
  • Чай
  1. Кофе
  2. Чай
Попробовать »

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

  • , а просто скрываются за краем окна браузера.

    Свойство list-style-position указывает, должен ли маркер располагаться внутри или снаружи пунктов списка. Данное свойство может принимать два значения:

    • outside - маркер располагается слева от содержимого (является значением по умолчанию)
    • inside - маркер располагается внутри пункта списка вместе с содержимым

    Теперь можно переписать предыдущий пример так, чтоб отступ с левой стороны был убран, но маркеры при этом не уезжали за край браузера:

    Название документа

    • Кофе
    • Чай
    • Кофе
    • Чай
    • Кофе
    • Чай
    Попробовать »

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

    Чтобы строки маркированного списка как-то выделить от основного текста, можно сделать так, чтобы цвет маркеров в списке отличался от цвета текста.

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

    Как изменить цвет буллитов с помощью CSS

    1. Скрываем оригинальные маркеры списка с помощью свойства list-style-type
    2. Добавляем свои собственные маркеры с помощью псевдоэлемента :before и свойства content . Это позволит вставить любой текст или символ перед элементом li .
    3. Внешним видом маркера можно управлять через стили CSS, изменяя цвет, шрифт, фон и другое. Я использовал жирное начертание шрифта Монтсеррат.
    li { list-style-type: none; /* Скрываем маркеры, отображаемые по умолчанию */ } li:before { font-family: "Montserrat", sans-serif; font-weight: 400; color: #d7002e; /* Цвет маркера */ content: " "; /* Маркер */ padding-right: 7px; /* Отступ от маркера до текста */ }

    Если у вас возникла ситуация, когда маркеры появились в ненужных местах, например в главном меню или в дублирующем меню в футере, то это можно легко исправить. Просто допишите родительский элемент, в котором находятся списки, цвет маркеров которых нам надо изменить. Я добавил слово article и теперь эти изменения стали относиться только к контентной области сайта.

    article li { list-style-type: none; /* Скрываем маркеры, отображаемые по умолчанию */ } article li:before { font-family: "Montserrat", sans-serif; font-weight: 400; color: #d7002e; /* Цвет маркера */ content: " "; /* Маркер */ padding-right: 7px; /* Отступ от маркера до текста */ }

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



      размер маркера списка css (8)

      Мне было интересно, есть ли способ изменить цвет на пули в списке.

      У меня есть список:

      • House
      • Garden

      Невозможно вставить что-либо в li, например, «span» и «p». Могу ли я изменить цвет пуль, но не текст каким-то умным способом?

      Для меня лучшим вариантом является использование псевдоэлементов CSS, поэтому для disc пули disc это будет выглядеть так:

      ul { list-style-type: none; } li { position: relative; } li:before { content: ""; display: block; position: absolute; width: 5px; /* adjust to suit your needs */ height: 5px; /* adjust to suit your needs */ border-radius: 50%; left: -15px; /* adjust to suit your needs */ top: 0.5em; background: #f00; /* adjust to suit your needs */ }

      • first
      • second
      • third

      • width и height должны иметь равные значения, чтобы удерживать указатели округлыми
      • вы можете установить border-radius равным нулю, если вы хотите иметь square пули

      Для более стилей пули вы можете использовать другие css-формы https://css-tricks.com/examples/ShapesOfCSS/ (выберите это, для которого не требуются псевдоэлементы, например, треугольники)

      Основываясь на ответе @ ddilsaver. Я хотел иметь возможность использовать спрайт для пули. Это, похоже, работает:

      Li { list-style: none; position: relative; } li:before { content:""; display: block; position: absolute; width: 20px; height: 20px; left: -30px; top: 5px; background-image: url(i20.png); background-position: 0px -40px; /* or whatever offset you want */ }

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

      li { color: blue; } li::first-line { color: black; }

      • House
      • Garden

      Мне тоже очень понравился ответ Марка - мне нужен набор разных цветных UL, и, очевидно, было бы проще просто использовать класс. Вот что я использовал для апельсина, например:

      Ul.orange { list-style: none; padding: 0px; } ul.orange > li:before { content: "\25CF "; font-size: 15px; color: #F00; margin-right: 10px; padding: 0px; line-height: 15px; }

      Кроме того, я обнаружил, что шестнадцатеричный код, который я использовал для «content:», был другим, чем у Marc"s (этот шестигранный круг казался слишком высоким). Тот, который я использовал, кажется, сидит совершенно посередине. Я также нашел несколько других фигур (квадраты, треугольники, круги и т. Д.)

      Построение обоих решений @Marc и @jessica - это решение, которое я использую:

      Li { position:relative; } li:before { content:""; display: block; position: absolute; width: 6px; height:6px; border-radius:6px; left: -20px; top: .5em; background-color: #000; }

      Я использую em для размеров шрифта, поэтому, если вы установили top значение в.5em оно всегда будет помещено в середину вашей первой строки текста. Я использовал left:-20px потому что это позиция left:-20px по умолчанию в браузерах: parent padding/2

      Исходя из решения @ Marc - поскольку символ пули визуализирован по-разному с разными шрифтами и браузерами, я использовал следующую технику css3 с радиусом границы, чтобы сделать пулю, с которой я больше контролирую:

      Li:before { content: ""; background-color: #898989; display: inline-block; position: relative; height: 12px; width: 12px; border-radius: 6px; -webkit-border-radius: 6px; -moz-border-radius: 6px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box; margin-right: 4px; top: 2px; }

      Мы можем комбинировать list-style-image с svg s, который мы можем встроить в css ! Этот метод предлагает невероятный контроль над «пулями», которые могут стать чем угодно.

      Чтобы получить красный круг, просто используйте следующий css:

      "); }

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

      ul { list-style-image: url("data:image/svg+xml,"); } ul ul { list-style-image: url("data:image/svg+xml,"); } ul ul ul { list-style-image: url("data:image/svg+xml,"); } ul ul ul ul { list-style-image: url("data:image/svg+xml,"); } ul.bulls-eye { list-style-image: url("data:image/svg+xml,"); } ul.multi-color { list-style-image: url("data:image/svg+xml,"); }

      • Big circles!
        • Big rectangles!
        • b
          • Small circles!
          • c
            • Small rectangles!
      • Bulls
      • eyes.
      • Multi
      • color

      Ширина / высота атрибутов

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

      Кодировки

      Я справился с этим без добавления разметки, но вместо этого использовал li:before . Это, очевидно, имеет все ограничения:before (без старой поддержки IE), но, похоже, работает с IE8, Firefox и Chrome после очень ограниченного тестирования. Стиль пули также ограничен тем, что находится в юникоде.

      li { list-style: none; } li:before { /* For a round bullet */ content: "\2022"; /* For a square bullet */ /*content:"\25A0";*/ display: block; position: relative; max-width: 0; max-height: 0; left: -10px; top: 0; color: green; font-size: 20px; }

      Задача

      Задать цвет маркеров в списке не изменяя цвет текста.

      Решение

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

    1. вкладываем тег , а уже внутрь него помещаем текст. Иными словами вместо традиционной схемы
    2. текст
    3. создаем конструкцию
    4. текст
    5. . При этом цвет маркеров определяется стилевым свойством color для селектора LI , а цвет текста — для селектора SPAN (пример 1).

      Пример 1. Использование вложенных тегов

      HTML5 CSS 2.1 IE Cr Op Sa Fx

      Цвет текста и маркеров в списке

      • Скрипка
      • Гитара
      • Волынка
      • Шарманка
      • Челеста

      Результат данного примера показан ниже (рис. 1).

      Рис. 1. Маркеры, отличающиеся по цвету от основного текста

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

      Internet Explorer Chrome Opera Safari Firefox Android iOS
      8.0+ 1.0+ 7.0+ 3.1+ 1.0+ 1.0+ 1.0+

      Смысл в следующем — убираем оригинальные маркеры списка через свойство list-style-type и добавляем свои собственные маркеры с помощью псевдоэлемента :before и свойства content . Такая связка позволяет вставлять любой текст или символ перед элементом, в данном случае LI . Причём видом текста (цвет, шрифт, фон и др.) также можно управлять через стили, что и продемонстрировано в примере 2. Здесь в качестве маркеров используется символ параграфа ¶.

      Пример 2. Использование псевдоэлемента:before

      HTML5 CSS 2.1 IE Cr Op Sa Fx

      Цвет маркеров в списке

      • Север
      • Юг
      • Запад
      • Восток

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

      Рис. 2. Маркеры, созданные с помощью стилей