Змінити колір маркера в HTML-списку?


86

Все, що я хочу, - це мати можливість змінити колір кулі у списку на світло-сірий. За замовчуванням чорний, і я не можу зрозуміти, як його змінити.

Я знаю, що міг би просто використати зображення; Я волів би цього не робити, якщо зможу допомогти.


Я б просто пішов із зображенням і уникав зайвої розмітки. Це, мабуть, більш ефективне рішення
Сем Мюррей-Саттон

8
Кому важлива така «зайва» розмітка ... серйозно, ви нічого не втрачаєте, роблячи це.

Відповіді:


159

Куля отримує свій колір із тексту. Отже, якщо ви хочете мати інший кольоровий маркер, ніж текст у вашому списку, вам доведеться додати розмітку.

Оберніть текст списку в інтервал:

<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 */
}

Саме те, що мені потрібно було! У мене є список посилань, і посилання вже мають різний колірний стиль, що застосовується до них у будь-якому випадку.
Дейв Хейнс

Це не найкращий спосіб зробити це. Наприклад, це не буде працювати, якщо у вас є cms із редактором WYSIWYG. Елементи <span> не відображатимуться. Що вам може знадобитися, це попрацювати з: before і: after, а також виключити сам bullits. Це насправді дуже погана практика.
Automagisch

2
@KoenHoutman, на момент написання цієї статті (2008 р.) Це була єдина техніка з розумною підтримкою. Навіть сьогодні це не погана практика, і це все ще техніка з найширшою підтримкою браузера, хоча я погоджуюсь, що сьогодні (у більшості випадків) я б :beforeвирішив використовувати, як у відповіді Марка нижче.
Prestaul

Оскільки ви змінюєте лише презентацію тексту, bтег буде більш доречним.
Supuhstar

45

Мені це вдалося без додавання розмітки, а замість цього використовуючи li: before. Це, очевидно, має всі обмеження :before(відсутність старої підтримки IE), але, здається, це працює з IE8, Firefox та Chrome після дуже обмеженого тестування. Він працює в нашому середовищі контролера, цікавлячись, чи хтось може це перевірити. Стиль маркера також обмежений тим, що знаходиться в Unicode.

<!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:'\2022';
      /* For a square bullet */
      /*content:'\25A0';*/
      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, порівняно з прийнятою відповіддю
міні,

17

У 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 і поки не працює в жодному з основних браузерів.

Якщо ви хочете цю функцію, виконайте такі дії:


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

великою проблемою цього методу є додаткова розмітка. (тег span)


Оскільки ви змінюєте лише презентацію тексту, bтег буде більш доречним.
Supuhstar

1
Коли це було написано, тег b був посеред того, що він був припинений на користь сильного тегу. Але так, ви праві, зараз тег ab був би доречнішим.
Джонатан Аркелл,

3

Привіт, можливо, ця відповідь запізнилася, але є правильною для досягнення цього.

Гаразд, справа в тому, що ви повинні вказати внутрішній тег, щоб текст 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

2
Зустрічний пункт @the_drow, <b> не застарілий. stackoverflow.com/questions/1348683 / ...
Strixy

Встановлення кольору за замовчуванням, який застосовується до певного селектора, вирішило мою проблему. Дякую за цю пораду.
Девід

2

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

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

1
ОП явно не хотів використовувати малюнок, але я натрапив на це, шукаючи загальний спосіб замінити кулю. Тому я думаю, що ця відповідь приємна для повноти.
Зейн

Ось такий із колом 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

0

Оберніть текст усередині елемента списку прольотом (або іншим елементом) і застосуйте колір маркера до елемента списку, а колір тексту - до прольоту.


0

Відповідно до специфікації W3C ,

Властивості списку ... не дозволяють авторам вказувати окремий стиль (кольори, шрифти, вирівнювання тощо) для маркера списку ...

Але ідея з розмахом усередині списку вище має спрацювати нормально!


0
<ul>
<li style="color:#ddd;"><span style="color:#000;">List Item</span></li>
</ul>

0

Ви можете використовувати 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
});

0

Щодо запитання 2008 року, я думав, що можу додати більш свіжу та актуальну відповідь про те, як можна змінити колір кульок у списку.

Якщо ви бажаєте використовувати зовнішні бібліотеки, Font Awesome надає масштабовані векторні піктограми та в поєднанні з допоміжними класами Bootstrap (наприклад.text-success ) ви можете створити декілька цікавих та настроюваних списків.

Я розширив витяг із наведеної нижче сторінки прикладів зі списку "Шрифтовий ефект":

Використовуйте fa-ulта fa-liдля легкої заміни маркерів за замовчуванням у невпорядкованих списках.

<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 .


0

Це також добре працює, якщо ми встановимо колір для кожного елементу, наприклад: я додав трохи поля зліва зараз.

<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;
}

-1

Ви можете використовувати CSS для досягнення цього. Вказавши список у кольорі та стилі на ваш вибір, ви також можете вказати текст як інший колір.

Дотримуйтесь прикладу на веб- сайті http://www.echoecho.com/csslists.htm .


-1
<ul style="color: red;">
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
  • Один
  • Два
  • Три


  • -5

    Вам потрібно буде встановити "стиль списку" за допомогою CSS і надати йому color: value. Приклад:

    ul.colored {list-style: color: green;}
    
    Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
    Licensed under cc by-sa 3.0 with attribution required.