Стилизуем маркированный список

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

Верстать такой список проще простого — картинка задается через css-свойсво list-style-image, и ваш список выглядит точно как в макете. Но пару раз мне попадались макеты, где в качестве маркера списка использовались различные типографские знаки, типа длинного тире, решетки и кавычки. В принципе можно и их сохранить как картинку, но не так давно я узнала другой, более изящный способ.

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

li:before{
	content: "# ";
	color: #005070;
}

Здесь content, как нетрудно догадаться и есть свойство, определяющее что же именно за содержимое должно отображаться перед позицией списка. Следует заметить, типографские символы записываются в шестнадцатеричном коде.

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

маркированный список

И все бы хорошо, но имеется проблема с всеми любимым браузером. Internet Explorer, вплоть до 8 версии, не поддерживает before. Однако это проблема разрешима, спасибо статье  Владимир Токмакова, на сайте студии Артемия Лебедева. Оказалось, что в IE, можно эмулировать before, через expression, следующим образом:

li{
  list-style: none;
  behavior: expression( !this.before
    ? this.before = this.innerHTML = '#  ' + this.innerHTML : '' );
  color: #005070;
  line-height: 20px;
}

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

Комментарии: (9)

  1. У меня несколько вопросов:
    1) Что значит «типографские символы записываются в шестнадцатеричном коде»? Или имеются в виду мнемонические коды, как следует из примера ниже?
    2)Иконку RSS сами рисовали?

    Рад, что наконец-то на главной появилась ссылка на RSS-поток. переподписался.

    • dreamhelg

      1) Мнемонические коды записываются для IE, в expression, поскольку свойство content, IE игнорирует. А для остальных, нормальных браузеров, типографские знаки действительно записываются в шестнадцатеричном коде, начиная с косой черты. Например, для того чтобы вставить перед позицией списка длинное тире, нужно написать следующее:

      li:before{
      content: «\2014″
      }

      2) Иконка для RSS из бесплатных, к сожалению я пока так рисовать не умею)

  2. О, хорошо, пригодится.

  3. Большое спасибо за информацию, буду юзать. :)

  4. А где можно посмотреть шестнадцатеричные коды различных знаков?

  5. У меня ие8 норамально переварил :before, может все-таки «вплоть до 7 версии» ;)

  6. dreamhelg

    Ну, вообще, во фразе «вплоть до 8 версии», я имела в виду, ДО 8 версии, а с восьмеркой все в порядке)

  7. Persimmon

    спаисбо за интересную информацию! очень пригодилось!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>