Изменить цвет маркера в списке html?

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

Я знаю, что могу просто использовать изображение; Я бы предпочел не делать этого, если смогу.

Я бы просто использовал изображение и избегал лишней разметки. Вероятно, это более эффективное решение

Sam Murray-Sutton 17.09.2008 00:32

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

user4903 17.09.2008 00:33
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
88
2
187 384
16
Перейти к ответу Данный вопрос помечен как решенный

Ответы 16

<ul>
  <li style = "color: #888;"><span style = "color: #000">test</span></li>
</ul>

Большая проблема этого метода - дополнительная разметка. (тег span)

Поскольку вы меняете только представление текста, тег b будет более подходящим.

Ben Leggiero 10.12.2014 07:41

Когда это было написано, тег b считался устаревшим в пользу сильного тега. Но да, вы правы, теперь тег b был бы более подходящим.

Jonathan Arkell 27.01.2015 03:15

Оберните текст в элементе списка диапазоном (или каким-либо другим элементом) и примените цвет маркера к элементу списка, а цвет текста - к диапазону.

Вы захотите установить «стиль списка» через CSS и присвоить ему значение color: value. Пример:

ul.colored {list-style: color: green;}

Просто используйте CSS:

<li style='color:#e0e0e0'>something</li>

Да, я тоже так думал ... но стиль li color меняет цвет текста, а также маркера.

Aeon 17.09.2008 00:31
Ответ принят как подходящий

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

Оберните текст списка в диапазон:

<ul>
  <li><span>item #1</span></li>
  <li><span>item #2</span></li>
  <li><span>item #3</span></li>
</ul>

Затем немного измените правила стиля:

li {
  color: red; /* bullet color */
}
li span {
  color: black; /* text color */
}

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

Dave Haynes 17.09.2008 00:38

Это не самый лучший способ сделать это. Например, это не сработает, если у вас есть cms с редактором WYSIWYG. Элементы <span> не будут отображаться. Возможно, вы захотите поработать с: before и: after, не обращая внимания на самих быков. На самом деле это очень плохая практика.

Automagisch 23.09.2014 18:15

@KoenHoutman, на момент написания этой статьи (2008 г.) это была единственная методика, пользующаяся разумной поддержкой. Даже сегодня это неплохая практика, и это все еще метод с самой широкой поддержкой браузеров, хотя я согласен, что сегодня (в большинстве случаев) я бы выбрал использование :before, как в ответе Марка ниже.

Prestaul 23.09.2014 19:27

Поскольку вы меняете только представление текста, тег b будет более подходящим.

Ben Leggiero 10.12.2014 07:43

Согласно Спецификация W3C,

The list properties ... do not allow authors to specify distinct style (colors, fonts, alignment, etc.) for the list marker ...

Но идея с диапазоном внутри списка выше должна работать нормально!

<ul style = "color: red;">
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
  • Один
  • Два
  • Три
  • <ul>
    <li style = "color:#ddd;"><span style = "color:#000;">List Item</span></li>
    </ul>
    

    Для этого вы можете использовать CSS. Указав для списка цвет и стиль по вашему выбору, вы также можете указать текст другого цвета.

    Следуйте примеру на http://www.echoecho.com/csslists.htm.

    Здравствуйте, возможно, этот ответ запоздал, но он правильный.

    Хорошо, дело в том, что вы должны указать внутренний тег, чтобы текст LIst был обычным черным (или каким-либо образом, который вы хотите получить). Но верно и то, что вы можете ПОВТОРИТЬ любые ТЭГИ и внутренние теги с помощью CSS. Так что лучший способ сделать это - использовать для переопределения тэг SHORTER.

    Используйте это определение CSS:

    li { color: red; }
    li b { color: black; font_weight: normal; }
    .c1 { color: red; }
    .c2 { color: blue; }
    .c3 { color: green; }
    

    И этот html-код:

    <ul>
    <li><b>Text 1</b></li>
    <li><b>Text 2</b></li>
    <li><b>Text 3</b></li>
    </ul>
    

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

    <ul>
        <li class = "c1"><b>Text 1</b></li>
        <li class = "c2"><b>Text 2</b></li>
        <li class = "c3"><b>Text 3</b></li>
     </ul>
    

    вы должны использовать <span>. кроме того, <b> устарел.

    the_drow 06.01.2013 00:43

    Контрпункт к @the_drow, <b> не устарел. stackoverflow.com/questions/1348683/…

    Strixy 06.09.2013 20:03

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

    David 07.09.2020 07:09

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

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
      <style type = "text/css">
        li {
          list-style: none;
        }
    
        li:before {
          /* For a round bullet */
          content:'22';
          /* For a square bullet */
          /*content:'A0';*/
          display: block;
          position: relative;
          max-width: 0px;
          max-height: 0px;
          left: -10px;
          top: -0px;
          color: green;
          font-size: 20px;
        }
      </style>
    </head>
    
    <body>
      <ul>
        <li>foo</li>
        <li>bar</li>
      </ul>
    </body>
    </html>
    

    Это более современный способ с CSS3 по сравнению с принятым ответом

    minni 13.10.2016 17:49

    Просто сделайте пулю в графической программе и используйте list-style-image:

    ul {
      list-style-image:url('gray-bullet.gif');
    }
    

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

    Zane 13.11.2013 16:27

    Вот один с кружком SVG, который можно легко раскрасить: list-style-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Ccircle cx='256' cy='256' r='256' fill='#ff0000' /%3E%3C/svg%3E");

    Ciantic 17.12.2017 02:26

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

    вот простой пример:

    $("li").each(function(){
    var content = $(this).html();
    var myDiv = $("<div />")
    myDiv.css("color", "red"); //color of text.
    myDiv.html(content);
    $(this).html(myDiv).css("color", "yellow"); //color of bullet
    });
    

    Это было невозможно в 2008 году, но скоро это станет возможным (надеюсь)!

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

    <ul>
      <li>item #1</li>
      <li>item #2</li>
      <li>item #3</li>
    </ul>
    
    li::marker {
      color: red; /* bullet color */
    }
    li {
      color: black /* text color */
    }
    

    Пример JSFiddle

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

    Если вам нужна эта функция, сделайте следующее:

    • Мигать (Chrome, Opera, Vivaldi, Яндекс и т. д.): Проблема с звездочкой Chromium
    • Геккон (Firefox, Iceweasel и т. д.): Нажмите «(проголосовать)» по этой ошибке.
    • Трезубец (IE, веб-представления Windows): нажмите «Я тоже могу» в разделе «Пользователи X могут воспроизвести эту ошибку»
      Trident development has ceased
    • EdgeHTML (MS Edge, веб-представления Windows, современные приложения Windows): нажмите «Голосовать» в этом предложении.
    • Webkit (Safari, Steam, WebOS и т. д.): Зафиксируйте себя на этой ошибке

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

    Если вы хотите использовать внешние библиотеки, Font Awesome предоставляет масштабируемые векторные иконки, и в сочетании с Вспомогательные классы Bootstrap (например, text-success), вы можете создать несколько довольно крутых и настраиваемых списков.

    Я расширил отрывок из страница примеров списка Font Awesome ниже:

    Use fa-ul and fa-li to easily replace default bullets in unordered lists.

    <link href = "https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel = "stylesheet" />
    <link href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel = "stylesheet" />
    
    <ul class = "fa-ul">
      <li><i class = "fa-li fa fa-circle"></i>List icons</li>
      <li><i class = "fa-li fa fa-check-square text-success"></i>can be used</li>
      <li><i class = "fa-li fa fa-spinner fa-spin text-primary"></i>as bullets</li>
      <li><i class = "fa-li fa fa-square text-danger"></i>in lists</li>
    </ul>

    Шрифт Awesome (в основном) поддерживает IE8 поддерживает только IE7, если вы используете более старая версия 3.2.1.

    Это также работает, если мы установим цвет для каждого элемента, например: Я добавил немного маржи к левому краю.

    <article class = "event-item">
        <p>Black text here</p>
    </article>
    
    .event-item{
        list-style-type: disc;
        display: list-item;
        color: #ff6f9a;
         margin-left: 25px;
    }
    .event-item p {
        margin: 0;
        color: initial;
    }
    

    Другие вопросы по теме