Unicode-символ как маркер для элемента списка в CSS

Мне нужно использовать, например, символ звезды (★) в качестве пули для элемента списка.

Я прочитал модуль CSS3: Списки, в котором описывается, как использовать пользовательский текст в виде пуль, но он не работает для меня. Я думаю, что браузеры просто не поддерживают псевдо-элемент ::marker.

Как я могу сделать это, не используя изображения?

Ответ 1

ИЗМЕНИТЬ

Я, вероятно, больше не рекомендую использовать изображения. Я придерживаюсь подхода использования символа Unicode, например:

li:before {
  content: "\2605";
}

OLD ANSWER

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

Вот пример:

<style type="text/css">
  ul {list-style:none;} /* you should use a css reset too... ;) */
  ul li {background:url(images/icon_star.gif) no-repeat 0 5px;}
</style>

<ul>
  <li>List Item 1</li>
  <li>List Item 2</li>
  <li>List Item 3</li>
</ul>

Ответ 2

Использование текста в виде пули

Используйте li:before с экранированным Hex HTML Entity (или любым простым текстом).


Пример

В моем примере будут создаваться списки с отметками в виде маркеров.

CSS

ul {
    list-style: none;
    padding: 0px;
}

ul li:before
{
    content: '\2713';
    margin: 0 1em;    /* any design */
}

Совместимость с браузером

Не тестировал себя, но он должен поддерживаться как IE8. По крайней мере, что quirksmode и css-tricks говорят.

Вы можете использовать условные комментарии для применения более старых/более медленных решений, таких как изображения или скрипты. Еще лучше, используйте оба изображения <noscript> для изображений.

HTML:

<!--[if lt IE 8]>
    *SCRIPT SOLUTION*
    <noscript>
        *IMAGE SOLUTION*
    </noscript>
<![endif]-->

О фоновых изображениях

Фоновые изображения действительно легко обрабатываются, но...

  • Поддержка браузера background-size на самом деле только с IE9.
  • Цвет текста HTML и специальные (сумасшедшие) шрифты могут делать много, с меньшим количеством HTTP-запросов.
  • Решение script может просто ввести HTML-Entity, и пусть тот же CSS выполнит работу.
  • Хороший сброс CSS-кода может облегчить list-style (более логичный выбор).

Enjoy.

Ответ 3

Вы можете его построить:

#modal-select-your-position li {
/* handle multiline */
    overflow: visible;
    padding-left: 17px;
    position: relative;
}

#modal-select-your-position li:before {
/* your own marker in content */
   content: "—";
   left: 0;
   position: absolute;
}

Ответ 5

Изображения не рекомендуются, так как они могут отображаться на некоторых устройствах (устройства Apple с дисплеем Retina) или при увеличении. С символом ваш список выглядит потрясающе каждый раз.

Вот лучшее решение, которое я нашел до сих пор. Он отлично работает и кросс-браузер (IE 8+).

ul {
    list-style: none;
    padding-left: 1.2em;
    text-indent: -1.2em;
}

li:before {
    content: "►";
    display: block;
    float: left;
    width: 1.2em;
    color: #ff0000;
}

Важно иметь символ в плавающем блоке с фиксированной шириной, чтобы текст оставался выровненным, если он слишком длинный, чтобы вписаться в одну строку. 1.2em - это ширина, которую вы хотите для своего персонажа, измените ее для ваших нужд. Не забудьте reset отступы и поля для элементов ul и li.

РЕДАКТИРОВАТЬ: Помните, что размер "1.2em" может отличаться, если вы используете другой шрифт в ul и li: before. Безопаснее использовать пиксели.

Ответ 6

Чтобы добавить звезду, используйте символ Unicode 22C6.

Я добавил пространство, чтобы сделать небольшой пробел между li и звездой. Код для пространства A0.

li:before {
    content: '\22C6\A0';
}

Ответ 7

Более полный пример 222 answer:

ul {
    list-style:none;
    padding: 0 0 0 2em;     /* padding includes space for character and its margin */

    /* IE7 and lower use default */
    *list-style: disc;
    *padding: 0 0 0 1em;
}
ul li:before {
    content: '\25BA';
    font-family: "Courier New", courier, "Lucida Sans Typewriter", "Lucida Typewriter", monospace;
    margin: 0 1em 0 -1em;   /* right margin defines spacing between bullet and text. negative left margin pushes back to the edge of the parent <ul> */

    /* IE7 and lower use default */
    *content: none;
    *margin: 0;
}
ul li {
    text-indent: -1em;      /* negative text indent brings first line back inline with the others */

    /* IE7 and lower use default */
    *text-indent: 0;
}

Я включил свойства star-hack для восстановления стилей списка по умолчанию в старых версиях IE. Вы можете вытащить их и включить в условное обозначение, если это необходимо, или заменить на решение на основе фонового изображения. Мое скромное мнение заключается в том, что специальные стили пули, реализованные таким образом, должны грациозно деградировать на нескольких браузерах, которые не поддерживают псевдоселекторы.

Протестировано в Firefox, Chrome, Safari и IE8-10 и корректно отображает все.

Ответ 8

ul {
    list-style-type: none;    
}

ul li:before {
    content:'*'; /* Change this to unicode as needed*/
    width: 1em !important;
    margin-left: -1em;
    display: inline-block;
}

Ответ 9

Попробуйте этот код...

li:before {
    content: "→ "; /* caractère UTF-8 */
}

Ответ 10

Этот вопрос может быть старым, но здесь быстрое решение ul {list-style:outside none square;} или ul {list-style:outside none disc;} и т.д.

затем добавьте левое дополнение для элемента списка

ul li{line-height: 1.4;padding-bottom: 6px;}