Существует два популярных способа изменения цвета маркеров, чтобы они отличались от цвета текста.
Использование <span>
Внутрь каждого элемента <li> вкладываем <span>, а уже внутрь него помещаем текст. Иными словами вместо традиционной схемы
<li>текст</li>
создаем конструкцию
<li><span>текст</span></li>
При этом цвет маркеров определяется стилевым свойством color для селектора li, а цвет текста — для селектора span (пример 1).
Пример 1. Использование вложенных тегов
<!DOCTYPE html>
<html>
<head>
<meta charset=»utf-8″>
<title>Цвет текста и маркеров в списке</title>
<style>
li {
color: red; /* Цвет маркеров */
}
li span {
color: green; /* Цвет текста */
}
</style>
</head>
<body>
<ul>
<li><span>Скрипка</span></li>
<li><span>Гитара</span></li>
<li><span>Волынка</span></li>
<li><span>Шарманка</span></li>
<li><span>Челеста</span></li>
</ul>
</body>
</html>
Результат данного примера показан ниже (рис. 1).
Рис. 1. Маркеры, отличающиеся по цвету от основного текста
Несмотря на простоту, метод неудобен, особенно при объёмных списках, ведь к каждому пункту списка теперь придётся добавлять <span>.
Использование ::before
Смысл в следующем — убираем оригинальные маркеры списка через свойство list-style-type и добавляем свои собственные маркеры с помощью псевдоэлемента ::before и свойства content. Такая связка позволяет вставлять любой текст или символ перед элементом, в данном случае <li>. Причём видом текста (цвет, шрифт, фон и др.) также можно управлять через стили, что и продемонстрировано в примере 2.
Пример 2. Использование псевдоэлемента ::before
<!DOCTYPE html>
<html>
<head>
<meta charset=»utf-8″>
<title>Цвет маркеров в списке</title>
<style>
li {
list-style-type: none; /* Прячем исходные маркеры */
}
li::before {
color: red; /* Цвет маркера */
content: «▪»; /* Сам маркер */
padding-right: 10px; /* Расстояние от маркера до текста */
}
</style>
</head>
<body>
<ul>
<li>Север</li>
<li>Юг</li>
<li>Запад</li>
<li>Восток</li>
</ul>
</body>
</html>
Результат данного примера показан на рис. 2.
Рис. 2. Маркеры, созданные с помощью стилей
См. также
All I want is to be able to change the color of a bullet in a list to a light gray. It defaults to black, and I can’t figure out how to change it.
I know I could just use an image; I’d rather not do that if I can help it.
Awais
4,7003 gold badges15 silver badges38 bronze badges
asked Sep 16, 2008 at 20:23
2
The bullet gets its color from the text. So if you want to have a different color bullet than text in your list you’ll have to add some markup.
Wrap the list text in a span:
<ul>
<li><span>item #1</span></li>
<li><span>item #2</span></li>
<li><span>item #3</span></li>
</ul>
Then modify your style rules slightly:
li {
color: red; /* bullet color */
}
li span {
color: black; /* text color */
}
doublesharp
26.4k6 gold badges51 silver badges73 bronze badges
answered Sep 16, 2008 at 20:28
PrestaulPrestaul
82.5k10 gold badges84 silver badges84 bronze badges
4
I managed this without adding markup, but instead using li:before. This obviously has all the limitations of :before
(no old IE support), but it seems to work with IE8, Firefox and Chrome after some very limited testing. It’s working in our controller environment, wondering if anyone could check this. The bullet style is also limited by what’s in 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>
Tim Cooper
156k38 gold badges325 silver badges276 bronze badges
answered Nov 26, 2010 at 21:14
MarcMarc
3,2233 gold badges23 silver badges26 bronze badges
1
This was impossible in 2008, but it’s becoming possible soon (hopefully)!
According to The W3C CSS3 specification, you can have full control over any number, glyph, or other symbol generated before a list item with the ::marker
pseudo-element.
To apply this to the most voted answer’s solution:
<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 Example
Note, though, that as of July 2016, this solution is only a part of the W3C Working Draft and does not work in any major browsers, yet.
If you want this feature, do these:
- Blink (Chrome, Opera, Vivaldi, Yandex, etc.): star Chromium’s issue
- Gecko (Firefox, Iceweasel, etc.): Click «(vote)» on this bug
Trident (IE, Windows web views): Click «I can too» under «X User(s) can reproduce this bug»
Trident development has ceased- EdgeHTML (MS Edge, Windows web views, Windows Modern apps): Click «Vote» on this prpopsal
- Webkit (Safari, Steam, WebOS, etc.): CC yourself to this bug
answered Apr 16, 2013 at 15:10
Ky —Ky —
30.2k48 gold badges187 silver badges302 bronze badges
<ul>
<li style="color: #888;"><span style="color: #000">test</span></li>
</ul>
the big problem with this method is the extra markup. (the span tag)
answered Sep 16, 2008 at 20:27
Jonathan ArkellJonathan Arkell
10.4k2 gold badges24 silver badges32 bronze badges
2
Hello maybe this answer is late but is the correct one to achieve this.
Ok the fact is that you must specify an internal tag to make the LIst text be on the usual black (or what ever you want to get it). But is also true that you can REDEFINE any TAGS and internal tags with CSS. So the best way to do this use a SHORTER tag for the redefinition
Usign this CSS definition:
li { color: red; }
li b { color: black; font_weight: normal; }
.c1 { color: red; }
.c2 { color: blue; }
.c3 { color: green; }
And this html code:
<ul>
<li><b>Text 1</b></li>
<li><b>Text 2</b></li>
<li><b>Text 3</b></li>
</ul>
You get required result. Also you can make each disc diferent color:
<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>
answered Jul 5, 2009 at 6:21
3
Just do a bullet in a graphics program and use list-style-image
:
ul {
list-style-image:url('gray-bullet.gif');
}
answered Apr 19, 2012 at 22:11
ghrghr
6474 silver badges16 bronze badges
2
Wrap the text within the list item with a span (or some other element) and apply the bullet color to the list item and the text color to the span.
answered Sep 16, 2008 at 20:27
As per W3C spec,
The list properties … do not allow authors to specify distinct style (colors, fonts, alignment, etc.) for the list marker …
But the idea with a span inside the list above should work fine!
answered Sep 16, 2008 at 20:29
AeonAeon
6,4575 gold badges29 silver badges30 bronze badges
<ul>
<li style="color:#ddd;"><span style="color:#000;">List Item</span></li>
</ul>
answered Sep 16, 2008 at 20:34
You can use Jquery if you have lots of pages and don’t need to go and edit the markup your self.
here is a simple example:
$("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
});
answered Jan 5, 2013 at 20:34
alaasdkalaasdk
1,96719 silver badges21 bronze badges
For a 2008 question, I thought I might add a more recent and up-to-date answer on how you could go about changing the colour of bullets in a list.
If you are willing to use external libraries, Font Awesome gives you scalable vector icons, and when combined with Bootstrap’s helper classes (eg. text-success
), you can make some pretty cool and customisable lists.
I have expanded on the extract from the Font Awesome list examples page below:
Use
fa-ul
andfa-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>
Font Awesome (mostly) supports IE8, and only supports IE7 if you use the older version 3.2.1.
answered Nov 25, 2015 at 3:47
eggyeggy
2,8263 gold badges23 silver badges37 bronze badges
It works as well if we set color for each elements for example:
I added some Margin to left now.
<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;
}
answered Jun 15, 2017 at 12:57
MohammedMohammed
3903 silver badges7 bronze badges
You could use CSS to attain this. By specifying the list in the color and style of your choice, you can then also specify the text as a different color.
Follow the example at http://www.echoecho.com/csslists.htm.
answered Sep 16, 2008 at 20:53
<ul style="color: red;">
<li>One</li>
<li>Two</li>
<li>Three</li>
</ul>
Lou Franco
87.3k14 gold badges134 silver badges191 bronze badges
answered Sep 16, 2008 at 20:29
NerdFuryNerdFury
18.6k5 gold badges38 silver badges41 bronze badges
Just use CSS:
<li style='color:#e0e0e0'>something</li>
answered Sep 16, 2008 at 20:28
1
You’ll want to set a «list-style» via CSS, and give it a color: value. Example:
ul.colored {list-style: color: green;}
Tim Cooper
156k38 gold badges325 silver badges276 bronze badges
answered Sep 16, 2008 at 20:28
ahockleyahockley
3,69624 silver badges26 bronze badges
Стилизация списков
- Назад
- Обзор: Styling text
- Далее
Списки, по-большому счету, ведут себя также как любой другой текст, но существуют некоторые специфичные настройки CSS, о которых вы должны знать. В этой статье они все описываются.
Требования: | Базовая компьютерная грамотность, основы HTML (изучите Введение в HTML), основы CSS (изучите Введение в CSS), CSS основы по тексту и шрифтам. |
---|---|
Цель: | Познакомиться с лучшими практиками и свойствами по стилизации списков. |
Пример простого списка
Для начала, давайте взглянем на пример простого списка. В данной статье мы рассмотрим ненумерованный, нумерованный и описательный списки — все они имеют аналогичные свойства стилизации, но некоторые имеют свои специальные свойства. Не стилизованный пример доступен на Github (проверьте также источник кода.)
HTML для нашего примера списка представлен ниже:
<h2>Shopping (unordered) list</h2>
<p>Paragraph for reference, paragraph for reference, paragraph for reference,
paragraph for reference, paragraph for reference, paragraph for reference.</p>
<ul>
<li>Hummus</li>
<li>Pita</li>
<li>Green salad</li>
<li>Halloumi</li>
</ul>
<h2>Recipe (ordered) list</h2>
<p>Paragraph for reference, paragraph for reference, paragraph for reference,
paragraph for reference, paragraph for reference, paragraph for reference.</p>
<ol>
<li>Toast pita, leave to cool, then slice down the edge.</li>
<li>Fry the halloumi in a shallow, non-stick pan, until browned on both sides.</li>
<li>Wash and chop the salad.</li>
<li>Fill pita with salad, hummus, and fried halloumi.</li>
</ol>
<h2>Ingredient description list</h2>
<p>Paragraph for reference, paragraph for reference, paragraph for reference,
paragraph for reference, paragraph for reference, paragraph for reference.</p>
<dl>
<dt>Hummus</dt>
<dd>A thick dip/sauce generally made from chick peas blended with tahini, lemon juice, salt, garlic, and other ingredients.</dd>
<dt>Pita</dt>
<dd>A soft, slightly leavened flatbread.</dd>
<dt>Halloumi</dt>
<dd>A semi-hard, unripened, brined cheese with a higher-than-usual melting point, usually made from goat/sheep milk.</dd>
<dt>Green salad</dt>
<dd>That green healthy stuff that many of us just use to garnish kebabs.</dd>
</dl>
Если вы перейдёте к живому примеру прямо сейчас и изучите элемент списка используя инструменты разработчика браузера, то вы заметите несколько стилей установленных по умолчанию:
- Элементы
<ul>
и<ol>
имеют верхний и нижнийmargin
по16px
(1em
) иpadding-left
40px
(2.5em
.) - Объекты списка (элементы
<li>
) не имеют заданных значений по умолчанию для интервалов. - Элемент
<dl>
имеет верхний и нижнийmargin
по16px
(1em
), но padding не задан. - Элементы
<dd>
имеютmargin-left
40px
(2.5em
.) - Элементы
<p>
которые мы включили для ссылок (сноски) имеют верхний и нижнийmargin
по16px
(1em
), точно так же, как и различные типы списков.
Управление интервалами списков
При оформлении списков, вам необходимо настроить их стили так, чтоб они сохраняли то же вертикальное расстояние, что и окружающие их элементы (такие как параграфы и изображения; иногда называемые вертикальным ритмом) и то же расстояние по горизонтали как и между собой (посмотреть законченный стилизированный пример на Github, а также найти исходный код.)
CSS, используемый для оформления текста и интервалов, выглядит следующим образом:
/* Базовые стили */
html {
font-family: Helvetica, Arial, sans-serif;
font-size: 10px;
}
h2 {
font-size: 2rem;
}
ul,ol,dl,p {
font-size: 1.5rem;
}
li, p {
line-height: 1.5;
}
/* Задаём стили для списка описаний */
dd, dt {
line-height: 1.5;
}
dt {
font-weight: bold;
}
dd {
margin-bottom: 1.5rem;
}
- Первое правило устанавливает шрифт сайта и основной размер шрифта 10px. Они наследуются всеми на этой странице.
- Правила 2 и 3 задают относительные размеры шрифтов заголовков, различных типов списков (их наследуют дочерние элементы списков) и параграфов. Это значит, что каждый параграф и список будут иметь одинаковый размер шрифта, а также верхний и нижний интервалы, помогая сохранить согласованность вертикального ритма.
- Правило 4 задаёт одинаковую высоту
line-height
в параграфах и пунктах списка — так, что параграфы и каждый отдельный пункт списка будут иметь те же интервалы между строками. Это также поможет сохранить согласованность вертикального ритма. - Правила 5 и 6 применяются к списку описаний — мы задаём одинаковую высоту
line-height
между терминами и описаниями списке описаний как мы это делали с параграфами и пунктами списка. И снова, согласованность хорошая! Мы также делаем описание терминов жирным шрифтом, чтобы они визуально выделялись легче.
Стили специфичные для списков
Теперь, рассмотрев общие методы интервалов для списков, давайте изучим некоторые специфичные спискам свойства. Существует три свойства, с которых вам надо начать знакомство, которые могут быть установлены для элементов <ul>
или <ol>
:
list-style-type
(en-US): задаёт тип маркеров для использования в списке, например, квадратные или круглые маркеры для неупорядоченного списка, или цифры, буквы или римские цифры для упорядоченного списка.list-style-position
(en-US): управляет будет ли маркер появляется внутри пунктов списка или вне их перед началом каждого элемента.list-style-image
: позволяет вам использовать пользовательские изображения в качестве маркеров, а не просто квадрат или круг.
Стили маркеров
Как указано выше, свойство list-style-type
(en-US) позволяет вам устанавливать какой тип маркера использовать в качестве точек маркера. В нашем примере мы установили использование заглавных римских цифр в упорядоченном списке:
ol {
list-style-type: upper-roman;
}
Это даёт нам следующий вид:
Вы можете найти гораздо больше опций, заглянув на справочную страницу list-style-type
(en-US).
Позиция маркера
Свойство list-style-position
(en-US) устанавливает будет ли появляться маркер внутри пунктов списка или снаружи перед началом каждого пункта. Значение по умолчанию — outside
, которое заставляет маркеры находится снаружи пунктов списка, как видно выше.
Если вы установите значение на inside
, то маркеры будут находиться внутри строк:
ol {
list-style-type: upper-roman;
list-style-position: inside;
}
Использование пользовательского изображения как маркер
Свойство list-style-image
позволяет вам использовать пользовательское изображение в качестве вашего маркера. Синтаксис довольно прост:
ul {
list-style-image: url(star.svg);
}
Однако это свойство немного ограничено с точки зрения управления позициями, размерами (и т.д.) маркеров. Вам лучше использовать семейство свойств background
, о которых вы узнаете намного больше в модуле Styling boxes. А пока вот вам образец для дегустации!
В нашем законченном примере мы оформили неупорядоченный список следующим образом (поверх того, что вы уже видели выше):
ul {
padding-left: 2rem;
list-style-type: none;
}
ul li {
padding-left: 2rem;
background-image: url(star.svg);
background-position: 0 0;
background-size: 1.6rem 1.6rem;
background-repeat: no-repeat;
}
Мы сделали следующее:
- Установили
padding-left
элемента<ul>
с40px
по умолчанию на20px
, затем установили то же самое количество в пунктах списка. Это для того, чтобы все пункты списка продолжали выравниваться с порядком пунктов списка и описаний списка описаний, но пункты списка имеют некоторый padding для фоновых изображений чтобы сидеть внутри. Если бы мы не сделали этого, то фоновые изображения накладывались бы с текстом пунктов списка, что выглядело бы неряшливо. - Установили
list-style-type
(en-US) наnone
, для того чтобы маркеры не появлялись по умолчанию. Мы собираемся использовать свойстваbackground
для управления маркерами. - Вставили маркер в каждый пункт неупорядоченного списка. Соответствующие свойства, следующие:
background-image
: Указывает путь к файлу изображения, который вы хотите использовать в качестве маркера.background-position
: Определяет где в фоне выбранного элемента появится изображение — в данном случае мы говорим0 0
, что значит что маркер будет появляться в самом верху слева каждого пункта списка.background-size
: Задаёт размер фонового изображения. В идеале мы хотим, чтоб маркеры были того же размера что и пункты списка (или самую малость меньше или крупнее). Мы используем размер1.6rem
(16px
), что очень хорошо сочетается с отступом (padding)20px
, который мы позволили разместить внутри маркера — 16px плюс 4px интервала между маркером и текстом пункта списка работают хорошо.background-repeat
: По умолчанию, фоновые изображения повторяются пока не заполнят доступное фоновое пространство. Мы хотим всего лишь одну копию вставленного изображения в каждом случае, поэтому мы установили значениеno-repeat
.
Это даёт нам следующий результат:
короткая запись list-style
Эти три свойства упомянутые выше могут все быть заданы, используя лишь одну короткую запись свойства, list-style
(en-US). Например, следующий CSS:
ul {
list-style-type: square;
list-style-image: url(example.png);
list-style-position: inside;
}
Может быть заменён этим:
ul {
list-style: square url(example.png) inside;
}
Значения могут быть перечислены в любом порядке, и вы можете использовать одно, два и все три (значения по умолчанию, использованные для свойств, которые не включены — disc
, none
, и outside
). Если указаны и type
и image
, тип используется в качестве запасного варианта, если изображение по какой-либо причине не может быть загружено.
Контроль счета списка
Иногда вам может понадобиться вести счёт в упорядоченном списке по-другому — например начинать с цифры отличной от 1, или считать в обратном порядке, или вести счёт с шагом больше 1. HTML и CSS имеют несколько инструментов которые помогут с этим.
start
Атрибут start
позволит вам начать счёт списка с цифры отличной от 1. Например:
<ol start="4">
<li>Toast pita, leave to cool, then slice down the edge.</li>
<li>Fry the halloumi in a shallow, non-stick pan, until browned on both sides.</li>
<li>Wash and chop the salad.</li>
<li>Fill pita with salad, hummus, and fried halloumi.</li>
</ol>
что даст вам такой результат:
reversed
Атрибут reversed
начнёт отсчёт по убыванию вместо возрастания. Например:
<ol start="4" reversed>
<li>Toast pita, leave to cool, then slice down the edge.</li>
<li>Fry the halloumi in a shallow, non-stick pan, until browned on both sides.</li>
<li>Wash and chop the salad.</li>
<li>Fill pita with salad, hummus, and fried halloumi.</li>
</ol>
что даст вам такой результат:
Примечание: Обратите внимание: Если пунктов в списке в обратном списке больше, чем значение атрибута start
, счёт продолжится до нуля и далее отрицательные значения.
value
Атрибут value
позволит вам установить специфичные цифровые значения к пунктам списка. Например:
<ol>
<li value="2">Toast pita, leave to cool, then slice down the edge.</li>
<li value="4">Fry the halloumi in a shallow, non-stick pan, until browned on both sides.</li>
<li value="6">Wash and chop the salad.</li>
<li value="8">Fill pita with salad, hummus, and fried halloumi.</li>
</ol>
что даст вам такой результат:
Примечание: Обратите внимание: Даже если вы используете нечисловой list-style-type
(en-US), вам всё равно надо использовать эквивалентное цифровое значение в атрибуте value
.
Активное изучение: Стилизация вложенного списка
В этой сессии активного изучения, мы хотим, чтобы вы взяли всё что вы выучили выше и попробовали стилизовать вложенный список. Мы предоставили вам HTML и хотим, чтобы вы:
- Задали неупорядоченному списку квадратные маркеры.
- Задали пунктам неупорядоченного и упорядоченного списка 1,5 межстрочный интервал их размера шрифта.
- Задали упорядоченному списку маркеры в виде строчных букв.
- Не стесняйтесь играться с примерами списков столько сколько вам нравится, экспериментируя с типами маркеров, интервалами или со всем что вы найдёте.
Если вы допустите ошибку, вы всегда можете сделать сброс используя кнопку Reset. Если вы застрянете, нажмите кнопку Show solution чтобы посмотреть возможный ответ.
<div class="body-wrapper" style="font-family: 'Open Sans Light',Helvetica,Arial,sans-serif;">
<h2>HTML Input</h2>
<textarea id="code" class="html-input" style="width: 90%;height: 10em;padding: 10px;border: 1px solid #0095dd;"><ul>
<li>First, light the candle.</li>
<li>Next, open the box.</li>
<li>Finally, place the three magic items in the box, in this exact order, to complete the spell:
<ol>
<li>The book of spells</li>
<li>The shiny rod</li>
<li>The goblin statue</li>
</ol>
</li>
</ul></textarea>
<h2>CSS Input</h2>
<textarea id="code" class="css-input" style="width: 90%;height: 10em;padding: 10px;border: 1px solid #0095dd;"></textarea>
<h2>Output</h2>
<div class="output" style="width: 90%;height: 12em;padding: 10px;border: 1px solid #0095dd;overflow: auto;"></div>
<div class="controls">
<input id="reset" type="button" value="Reset" style="margin: 10px 10px 0 0;">
<input id="solution" type="button" value="Show solution" style="margin: 10px 0 0 10px;">
</div>
</div>
var htmlInput = document.querySelector(".html-input");
var cssInput = document.querySelector(".css-input");
var reset = document.getElementById("reset");
var htmlCode = htmlInput.value;
var cssCode = cssInput.value;
var output = document.querySelector(".output");
var solution = document.getElementById("solution");
var styleElem = document.createElement('style');
var headElem = document.querySelector('head');
headElem.appendChild(styleElem);
function drawOutput() {
output.innerHTML = htmlInput.value;
styleElem.textContent = cssInput.value;
}
reset.addEventListener("click", function() {
htmlInput.value = htmlCode;
cssInput.value = cssCode;
drawOutput();
});
solution.addEventListener("click", function() {
htmlInput.value = htmlCode;
cssInput.value = 'ul {n list-style-type: square;n}nnul li, ol li {n line-height: 1.5;n}nnol {n list-style-type: lower-alphan}';
drawOutput();
});
htmlInput.addEventListener("input", drawOutput);
cssInput.addEventListener("input", drawOutput);
window.addEventListener("load", drawOutput);
Смотрите также
Счётчики CSS предоставляют расширенные инструменты для настройки счета и оформления списков, но они довольно сложные. Мы рекомендуем изучить это, если вы захотите размяться. Смотрите:
@counter-style
counter-increment
(en-US)counter-reset
(en-US)
Заключение
В плане стилизации списки сравнительно легко освоить, как только вы освоите несколько связанных базовых принципов и специфичные свойства. В следующей статье мы перейдём к методам стилизации ссылок.
- Назад
- Обзор: Styling text
- Далее
В этом модуле
Если вам нужно задать цвет маркеров в списке не изменяя цвет текста, то в таком случае лучше всего это делать с помощью псевдоэлемента :before и свойства content.
Для начала нужно убрать оригинальные маркеры списка с помощью CSS-свойства list-style-type в значении none.
После этого воспользуемся свойствами :before и content чтобы добавить свои собственные:
li { list—style—type: none; } li:before { color: #048ba9; content: «➤»; padding—right: 10px; } |
Результат выполнения кода:
- Пункт 1
- Пункт 1
- Пункт 1
В свойство content можно добавлять любые символы и спецсимволы для придания маркеру желаемого вида.
Таблица спецсимволов
Вид | HTML-код | CSS-код | Описание |
---|---|---|---|
☃ | ☃ | 2603 | Снеговик |
☦ | ☦ | 2626 | Православный крест |
⚓ | ⚓ | 2693 | Якорь |
➳ | ➳ | 27B3 | Стрела направо |
✆ | ✆ | 2706 | Знак телефона |
☕ | ☕ | 2615 | Горячие напитки |
✎ | ✎ | 270E | Карандаш, направленный вправо-вниз |
✏ | ✏ | 270F | Карандаш |
✐ | ✐ | 2710 | Карандаш, направленный вправо-вверх |
✑ | ✑ | 2711 | Незакрашенное острие пера |
✒ | ✒ | 2712 | Закрашенное острие пера |
⚜ | ⚜ | 269C | Геральдическая лилия |
⛑ | ⛑ | 26D1 | Шлем с белым крестом |
⚝ | ⚝ | 269D | Начерченная белая звезда |
❄ | ❄ | 2744 | Снежинка |
❤ | ❤ | 2764 | Закрашенное жирное сердце |
❅ | ❅ | 2745 | Зажатая трилистниками снежинка |
❆ | ❆ | 2746 | Жирная остроугольная снежинка |
★ | ★ | 2605 | Закрашенная звезда |
☆ | ☆ | 2606 | Незакрашенная звезда |
✪ | ✪ | 272A | Незакрашенная звезда в закрашенном круге |
✫ | ✫ | 272B | Закрашенная звезда с незакрашенным кругом внутри |
✯ | ✯ | 272F | Вращающаяся звезда |
❉ | ❉ | 2749 | Звёздочка с шарообразными окончаниями |
❋ | ❋ | 274B | Жирная восьмиконечная каплеобразная звёздочка-пропеллер |
✲ | ✲ | 2732 | Звёздочка с незакрашенным центром |
⍟ | ⍟ | 235F | Apl функциональный символ звезда в круге |
⊛ | ⊛ | 229B | Оператор звездочки в круге |
☀ | ☀ | 2600 | Закрашенное солнце с лучами |
☁ | ☁ | 2601 | Облака |
☂ | ☂ | 2602 | Зонтик |
☑ | ☑ | 2611 | Галочка в квадрате |
☒ | ☒ | 2612 | Крестик в квадрате |
☹ | ☹ | 2639 | Нахмуренный смайлик |
☺ | ☺ | 263A | Улыбающийся смайлик |
☻ | ☻ | 263B | Закрашенный улыбающийся смайлик |
☭ | ☭ | 262D | Серп и молот |
☰ | ☰ | 2630 | Триграмма |
✿ | ✿ | 273f | Закрашенный цветок |
❀ | ❀ | 2740 | Незакрашенный цветок |
✾ | ✾ | 273E | Цветок с шестью лепестками |
❁ | ❁ | 2741 | Закрашенный обведённый цветок |
❂ | ❂ | 2742 | Цветок из точек |
✉ | ✉ | 2709 | Конверт |
❦ | ❦ | 2766 | Сердце в виде цветка |
❶ | ❶ | 2776 | Номер 1 |
❷ | ❷ | 2777 | Номер 2 |
❸ | ❸ | 2778 | Номер 3 |
❹ | ❹ | 2779 | Номер 4 |
❺ | ❺ | 277A | Номер 5 |
❻ | ❻ | 277B | Номер 6 |
❼ | ❼ | 277C | Номер 7 |
❽ | ❽ | 277D | Номер 8 |
➒ | ➒ | 2792 | Номер 9 |
➓ | ➓ | 2793 | Номер 10 |
➠ | ➠ | 27A0 | Летящая стрела |
➤ | ➤ | 27A4 | Наконечник стрелы |
➥ | ➥ | 27A5 | Изогнутая стрела, указывающая вниз и вправо |
➦ | ➦ | 27A6 | Изогнутая стрела, указывающая вверх и вправо |
❜ | ❜ | 275C | Жирная одинарная верхняя запятая |
❛ | ❛ | 275B | Жирная одинарная повёрнутая верхняя запятая |
✖ | ✖ | 2716 | Жирный знак умножения |
✘ | ✘ | 2718 | Жирный крестик |
✔ | ✔ | 2714 | Жирная отметка галочкой |
✚ | ✚ | 271A | Жирный крест |
↺ | ↺ | 21BA | Круглая стрелка с наконечником против часовой стрелки |
↻ | ↻ | 21BB | Круглая стрелка с наконечником против часовой стрелки |
< | < | 03C | Знак «меньше чем» (начало тега) |
> | > | 03E | Знак «больше чем» (конец тега) |
« | « | 0AB | Левая двойная угловая скобка |
» | » | 0BB | Правая двойная угловая скобка |
‹ | ‹ | 2039 | Левая угловая одиночная кавычка |
› | › | 203A | Правая угловая одиночная кавычка |
« | « | 022 | Двойная кавычка |
′ | ′ | 2032 | Одиночный штрих |
″ | ″ | 2033 | Двойной штрих |
‘ | ‘ | 2018 | Левая одиночная кавычка |
’ | ’ | 2019 | Правая одиночная кавычка |
‚ | ‚ | 201A | Нижняя одиночная кавычка |
“ | “ | 201C | Левая двойная кавычка |
” | ” | 201D | Правая двойная кавычка |
„ | „ | 201E | Нижняя двойная кавычка |
& | & | 026 | Амперсанд |
‘ | ‘ | 027 | Апостроф (одинарная кавычка) |
§ | § | 0A7 | Параграф |
© | © | 0A9 | Знак copyright |
¬ | ¬ | 0AC | Знак отрицания |
® | ® | 0AE | Знак зарегистрированной торговой марки |
¯ | ¯ | 0AF | Знак долготы над гласным |
° | ° | 0B0 | Градус |
± | ± | 0B1 | Плюс-минус |
¹ | ¹ | 0B9 | Верхний индекс «1» |
² | ² | 0B2 | Верхний индекс «2» |
³ | ³ | 0B3 | Верхний индекс «3» |
¼ | ¼ | 0BC | Одна четверть |
½ | ½ | 0BD | Одна вторая |
¾ | ¾ | 0BE | Три четверти |
´ | ´ | 0B4 | Знак ударения |
µ | µ | 0B5 | Микро |
¶ | ¶ | 0B6 | Знак абзаца |
· | · | 0B7 | Знак умножения |
¿ | ¿ | 0BF | Перевернутый вопросительный знак |
ƒ | ƒ | 192 | Знак флорина |
™ | ™ | 2122 | Знак торговой марки |
• | • | 2022 | Маркер списка |
… | … | 2026 | Многоточие |
‾ | ‾ | 203E | Надчеркивание |
– | – | 2013 | Среднее тире |
— | — | 2014 | Длинное тире |
‰ | ‰ | 2030 | Промилле |
} | } | 07D | Правая фигурная скобка |
{ | { | 07B | Левая фигурная скобка |
= | = | 03D | Знак равенства |
≠ | ≠ | 2260 | Знак неравенства |
≅ | ≅ | 2245 | Конгруэнтность (геометрическое равенство) |
≈ | ≈ | 2248 | Почти равно |
≤ | ≤ | 2264 | Меньше чем или равно |
≥ | ≥ | 2265 | Больше чем или равно |
∠ | ∠ | 2220 | Угол |
⊥ | ⊥ | 22A5 | Перпендикулярно (кнопка вверх) |
√ | √ | 221A | Квадратный корень |
∑ | ∑ | 2211 | N-ичное суммирование |
∫ | ∫ | 222B | Интеграл |
← | ← | 2190 | Стрелка влево |
↑ | ↑ | 2191 | Стрелка вверх |
→ | → | 2192 | Стрелка вправо |
↓ | ↓ | 2193 | Стрелка вниз |
↔ | ↔ | 2194 | Стрелка влево-вправо |
↵ | ↵ | 21B5 | Стрелка вниз и влево – знак возврата каретки |
⇐ | ⇐ | 21D0 | Двойная стрелка налево |
⇑ | ⇑ | 21D1 | Двойная стрелка вверх |
⇒ | ⇒ | 21D2 | Двойная стрелка направо |
⇓ | ⇓ | 21D3 | Двойная стрелка вниз |
⇔ | ⇔ | 21D4 | Двойная стрелка влево-вправо |
¢ | ¢ | FFE0 | Цент |
£ | £ | FFE1 | Фунт стерлингов |
₽ | ₽ | 20BD | Российский рубль |
¥ | ¥ | 0A5 | Йена или юань |
€ | € | 20AC | Евро |
$ | $ | 024 | Доллар |
₴ | ₴ | 20B4 | Знак гривны |
₹ | ₹ | 20B9 | Индийская рупия |
圓 | 圓 | 5713 | Китайский юань |
₸ | ₸ | 20B8 | Казахстанский тенге |
В этой статье учебника речь пойдет о работе со списками в CSS, вы научитесь изменять тип маркера, расположение маркера относительно элемента списка, создавать собственные маркеры и даже изменять цвет маркера.
Думаю, вы уже знаете, что в HTML 5 применяется два основных вида списков (если не брать в расчет списки описаний и элементы меню):
- нумерованный (упорядоченный) список – HTML элемент <ol>
- маркированный (неупорядоченные) список – HTML элемент <ul>
CSS предоставляет нам широкие возможности форматирования внешнего вида этих списков, давайте рассмотрим основные из них.
Изменение типа маркера
Первое свойство, которое хотелось бы рассмотреть это свойство list-style-type, оно задает тип маркера элемента списка.
Меню навигации, к примеру, часто составляется из обычных маркированных списков (HTML элемент <ul>), по умолчанию маркер которых, отображается в форме закрашенного круга, чтобы его убрать необходимо, воспользоваться CSS свойством list-style-type со значением none:
ul { list-style-type : none; /* убираем маркер у списка */ }
Для маркированных (неупорядоченных) списков (HTML элемент <ul>) предусмотрено три типа маркеров: в форме закрашенного кружка (disc — это значение по умолчанию), маркер в форме полого круга (сircle) и в форме квадрата (square), а для нумерованных (упорядоченных) списков (элемент <ol>) все оставшиеся варианты. Полный перечень размещен в следующей таблице:
Значение | Описание |
---|---|
none
|
Маркер не отображается. |
disc
|
Маркер в форме закрашенного кружка. Это значение по умолчанию. |
armenian
|
Числовой маркер (традиционная Армянская нумерация). |
circle
|
Маркер в форме круга. |
cjk-ideographic
|
Простые идеографические числа. |
decimal
|
Числовой маркер (десятеричные арабские числа, начинающихся с 1). |
decimal-leading-zero
|
Числовой маркер (десятеричные арабские числа, начинающихся с 1 и дополненные начальным нулем — 01, 02, 03…). |
georgian
|
Числовой маркер (традиционная Грузинская нумерация — an, ban, gan, …, he, tan, in, in-an…). |
hebrew
|
Числовой маркер (традиционная Еврейская нумерация.). |
hiragana
|
Числовой маркер (японская слоговая азбука Хирагана — a, i, u, e, o, ka, ki…). |
hiragana-iroha
|
Числовой маркер (японская слоговая азбука Хирагана ироха — i, ro, ha, ni, ho, he, to, …). |
katakana
|
Числовой маркер (японская слоговая азбука Катакана — A, I, U, E, O, KA, KI, …). |
katakana-iroha
|
Числовой маркер (японская слоговая азбука Катакана ироха — I, RO, HA, NI, HO, HE, TO, …). |
lower-alpha
|
Буквы ascii нижнего регистра (a, b, c, d…z). |
lower-greek
|
Строчные греческие буквы (α, β, γ, δ, и т.д.). |
lower-latin
|
Строчные латинские буквы (a, b, c, d,…z). |
lower-roman
|
Римские числа в нижнем регистре (i, ii, iii, iv, v и т.д.). |
square
|
Маркер в форме квадрата. |
upper-alpha
|
Буквы ascii верхнего регистра (A, B, C, D,…Z). |
upper-latin
|
Заглавные латинские буквы (A, B, C, D,…Z). |
upper-roman
|
Римские цифры в верхнем регистре (I, II, III, IV, V и т.д.). |
Обращаю Ваше внимание, что значения hebrew, cjk-ideographic, hiragana, hiragana-iroha, katakana, katakana-iroha не поддерживаются браузером Internet Explorer.
Давайте рассмотрим пример использования свойства list-style-type в тексте:
<!DOCTYPE html> <html> <head> <title>Пример использования свойства list-style-type</title> <style> .test { list-style-type : lower-roman; /* устанавливаем тип маркера - римские числа в нижнем регистре */ color : orange; /* обратите внимание, что текст цвета соответствует цвету маркера */ } .test2 { list-style-type : circle; /* устанавливаем тип маркера в форме круга */ color : IndianRed; /* обратите внимание, что текст цвета соответствует цвету маркера */ } </style> </head> <body> <ul> /* список со значением типа маркера по умолчанию (disc). */ <li>Элемент списка</li> <li>Элемент списка</li> <li>Элемент списка</li> </ul> <ol class = "test"> /* нумерованный список с типом маркера lower-roman */ <li>Элемент списка</li> <li>Элемент списка</li> <li>Элемент списка</li> </ol> <ul class = "test2"> /* маркированный список с типом маркера circle */ <li>Элемент списка</li> <li>Элемент списка</li> <li>Элемент списка</li> </ul> </body> </html>
В данном примере мы создали два стиля, первый устанавливает тип маркера — римские числа в нижнем регистре (значение lower-roman), мы его применили к нумерованном списку (HTML элемент <ol>), а к маркированному списку (HTML элемент <ul>) мы применили стиль, который устанавливает тип маркера в форме полого круга (значение circle).
Результат нашего примера:
Обращаю Ваше внимание, что вы можете применить свойство list-style-type даже к отдельно взятому элементу списка (HTML элемент <li>), чтобы установить свой тип маркера, либо создать стили, которые будет применять определённый маркер к чётным, либо нечетным элементам списка, как рассмотрено в следующем примере:
<!DOCTYPE html> <html> <head> <title>Пример чередования стилей свойства list-style-type</title> <style> li:nth-child(even) { /* четное чередование стиля */ list-style-type : none; color : red; } li:nth-child(odd) { /* нечетное чередование стиля */ list-style-type : square; color : green; } </style> </head> <body> <ul> <li>Элемент списка</li> <li>Элемент списка</li> <li>Элемент списка</li> <li>Элемент списка</li> <li>Элемент списка</li> <li>Элемент списка</li> <li>Элемент списка</li> <li>Элемент списка</li> </ul> </body> </html>
В этом примере мы стилизовали все нечетные элементы списка — указали тип маркера квадрат, а цвет текста указали зеленый. Четные элементы списка получили следующий стиль: красный цвет текста и отсутствие маркера.
Результат нашего примера:
Расположение маркера относительно элемента списка
С помощью CSS свойства list-style-position вы можете определить расположение маркера, либо цифры относительно элемента списка. Для того, чтобы расположить маркер (цифру) внутри элемента списка вместе с содержимым, то необходимо использовать значение inside, а для того, чтобы расположить за границей элемента списка необходимо использовать значение outside.
Давайте для наглядности рассмотрим пример, в котором помимимо свойства list-style-position используем еще одно новое свойство, которое позволит нам установить границы элемента.
<!DOCTYPE html> <html> <head> <title>Пример использования свойства list-style-position</title> <style> li { border : 1px solid orange; /* устанавливаем сплошную границу размером 1px оранжевого цвета для всех элементов списка*/ } .test { list-style-position : outside; /* указываем, что маркер располагается слева от текста за границей элемента списка */ background-color : khaki; /* устанавливаем цвет заднего фона */ } .test2 { list-style-position : inside; /* указываем, что маркер располагается слева от текста внутри элемента вместе с содержимым */ background-color : khaki; /* устанавливаем цвет заднего фона */ } </style> </head> <body> <ul class = "test"> <li>Элемент списка</li> <li>Элемент списка</li> <li>Элемент списка</li> </ul> <ol class = "test2"> <li>Элемент списка</li> <li>Элемент списка</li> <li>Элемент списка</li> </ol> </body> </html>
В данном примере для маркированного списка (HTML элемент <ul>) мы расположили маркер внутри элемента списка вместе с содержимым, использовав свойство list-style-position со значение outside, а для нумерованного списка (HTML элемент <ol>) разместили цифру слева от текста внутри элемента вместе с содержимым (свойство list-style-position со значение inside).
Универсальное свойство border, которое позволяет установить границу для всех элементов списка, мы использовали для лучшего понимания работы свойства list-style-position. Работа с границами элементов в скором времени будет подробно рассмотрена в учебнике в статье «Границы элемента в CSS».
Результат нашего примера:
Создание собственных маркеров
Рано или поздно перед Вами встанет необходимость создать маркеры списка со своим дизайном, благодаря CSS свойству list-style-image мы это желание сможем реализовать в Вашем проекте.
Синтаксис свойства следующий:
ol { list-style-image : url('images/primer.png'); /* указываем относительный путь к изображению */ } ul { list-style-image : url('http://basicweb.ru/images/mini5.png'); /* указываем абсолютный путь к изображению */ }
Значение в скобках соответствует пути к изображению, которое вы планируете использовать в роли маркера. Путь к изображению может быть как абсолютный, так и относительный. При указании относительного пути, важным моментом является то, что его необходимо указывать относительно размещения таблицы стилей, а не страницы.
Если вы планируете оформить собственные маркеры, то вам придется использовать программу для редактирования графики, либо воспользоваться уже готовыми наборами. Обратите внимание на такой момент, который может произойти, даже если Вы все сделали правильно, изображение может не загрузиться на страницу, в этом случае необходимо отредактировать изображение таким образом, чтобы его фон стал прозрачным.
Давайте рассмотрим пример использования собственных маркеров в документе:
<!DOCTYPE html> <html> <head> <title>Пример использования CSS свойства list-style-image</title> .test { list-style-image : url('http://basicweb.ru/images/mini5.png'); /* указываем абсолютный путь к изображению, которое будет использовано в качестве маркера */ } </style> </head> <body> <ul class = "test"> <li>Элемент списка</li> <li>Элемент списка</li> <li>Элемент списка</li> </ul> </body> </html>
В данном примере мы указываем абсолютный путь к изображению, которое будет использовано в качестве маркера.
Результат нашего примера:
Изменение цвета маркера в CSS
В завершении этой статьи давайте рассмотрим продвинутый способ изменения цвета маркера без изменения цвета элемента, с использованием CSS свойства content и ранее рассмотренного псевдоэлемента :before:
<!DOCTYPE html> <html> <head> <title>Пример изменения цвета маркера</title> <style> ul { list-style : none; /* убираем маркеры у маркированного списка */ } li:before {/* Псевдоэлемент :before добавляет содержимое, указанное в свойстве content перед каждым элементом <li> */ content : "•"; /* вставляем содержимое, которое выглядит как маркер */ padding-right : 10px; /* устанавливаем правый внутренний отступ элемента. */ color : orange; /* устанавливаем цвет шрифта */ } </style> </head> <body> <ul> <li>Элемент списка</li> <li>Элемент списка</li> <li>Элемент списка</li> </ul> </body> </html>
Суть этого способа заключается в том, что мы перед каждым элементом списка (HTML элемент <li>) вставляем псевдоэлементом (:before) сгенерированный контент (CSS свойство content), который идентичен по внешнему виду маркеру в маркированном списке (HTML элемент <ul>), только уже необходимого для нашей задачи цвета.
Обращаю Ваше внимание, что в данном примере использовано свойство padding-right, которое нам позволило сделать внутренний отступ справа в каждом элементе списка (HTML элемент <li>). Если в данном случае не применять это свойство, то маркер будет находится в упор к тексту, что зрительно некрасиво.
Работа с внутренними и внешними отступами элементов будет подробно рассмотрена в следующей статье учебника «Блочная и строчная модель в CSS».
Вопросы и задачи по теме
Перед тем как перейти к изучению следующей темы пройдите практические задания:
- Для выполнения задания вам понадобится скачать архив и скопировать содержимое архива (два HTML файла и изображение) в любую папку на вашем жестком диске:
- Используя полученные знания составьте следующие HTML страницы:
Практическое задание № 18. Продвинутое задание:
Практическое задание № 19.
Если у Вас возникают трудности при выполнении практического задания, Вы всегда можете открыть пример в отдельном окне и проинспектировать страницу, чтобы понять какой код CSS был использован.
To present a list of data in HTML which have no order/sequence but are related to each other unordered list is used. Unordered lists are created using <ul> tag and each list item is written using <li> tag. List items are pointed out using plain bullets.
Note: We cannot change the color of the bullet of the unordered list by default but we can take the help of some other tags and selectors.
There are two ways to change the color of the bullet:
- Using an extra markup tag.
- Using Css style ::before selector
Default style: Let us create a list of data using an unordered list.
HTML
<
ul
>
<
li
>Welcome to "GFG"</
li
>
<
li
>Geeks</
li
>
<
li
>For</
li
>
<
li
>Geeks</
li
>
</
ul
>
Output:
Plain List
CSS can be used to change these bullets to make them more attractive and attention-seeking to the readers. Let us see how we can change the color of bullets to make more visual sense to the readers.
Adding an extra markup: You can have separate colors for the list text and bullet after adding an extra markup. In the example below, we will enclose the list text in a span, then define the style to display the results. You can enclose with any HTML tags like <strong>,<p>, etc. as per your need.
HTML
<!DOCTYPE html>
<
html
>
<
head
>
<
style
>
li {
color: blue;
/* Bullet Color */
}
li span {
color: green;
/* Text Color */
}
</
style
>
</
head
>
<
body
>
<
ul
>
<
li
><
span
>Welcome to "GFG"</
span
></
li
>
<
li
><
span
>Geeks</
span
></
li
>
<
li
><
span
>For</
span
></
li
>
<
li
><
span
>Geeks</
span
></
li
>
</
ul
>
</
body
>
</
html
>
Output:
Colored Bullet List
Using CSS ::before Selector: The first step is to remove the default styling through CSS styles. Then add the style accordingly for the bullet content that you want. You can edit the styles according to the design and spacing that you need. Create your own custom bullet with your own indentation and color styles. There is no need to add an extra markup as compared to the previous step. Old browsers will not support “:before” and may hamper your website’s look in that case.
HTML
<!DOCTYPE html>
<
html
>
<
head
>
<
title
>Download Link</
title
>
<
style
>
li {
/* Default bullets style erased */
list-style: none;
}
li::before {
/* Unicode for a bullet */
content: "2022";
/* Styles for Indentation*/
color: violet;
display: inline-block;
width: 1em;
margin-left: -1em;
}
li {
color: green;
}
</
style
>
</
head
>
<
body
>
<
ul
>
<
li
><
span
>Welcome to "GFG"</
span
></
li
>
<
li
><
span
>Geeks</
span
></
li
>
<
li
><
span
>For</
span
></
li
>
<
li
><
span
>Geeks</
span
></
li
>
</
ul
>
</
body
>
</
html
>
Output:
Violet Bullets