Главная » Псевдокласс :first-letter

Псевдокласс :first-letter

:first-letter

Уже довольно давно использую псевдокласс :first-letter для назначения двух фоновых изображений для одного элемента. Самое интересное что :first-letter, один из немногих псевдоклассов, которые работают в 6-ом Интернет Эксплорере. Но есть одна маленькая хитрость, которую нужно знать.

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

 <h1>About us</h1>

Задаем ему базовые стили, фоновый цвет и фоновое изображение (звездочки справа):

h1{
border-top: 1px solid #094eaa;
border-bottom: 1px solid #094eaa;
background: #002261 url(/images/stars.jpg) right center no-repeat;
}

Все как обычно. Но теперь нам надо добавить звездочку слева. Делается это так:

h1:first-letter {
background: url(/images/star.jpg) left center no-repeat;
padding: 7px 0 6px 30px;
}

Самый важный момент здесь в том, что нужно обязательно поставить пробел между самим псевдоклассом :first-letter и открывающей фигурной скобкой, иначе псевдокласс не отработает в IE6.

h1:first-letter{ /*Не сработает*/
property: value;
}

h1:first-letter { /*Сработает, так как есть пробел перед фигурной скобкой*/
property: value;
}

Есть еще один момент. Если нужно указать одни и те же стили для нескольких элементов и один из них псевдокласс :first-letter, то нужно обязательно вставить пробел при перечислении элементов, перед запятой. То есть:

h1:first-letter, .someclass { /*Не сработает*/
property: value;
}

h1:first-letter , .someclass { /*Сработает, так как есть пробел перед запятой*/
property: value;
}

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



13 Комментариев »

  1. 1  Плюс Минус  0

    Я уже упоминал об этой теме здесь, но эта тема мне показалась достойной отдельного поста.

    Комментарий by neutrino — Декабрь 20, 2007 @ 1:39 pm | Цитировать

  2. 2  Плюс Минус  +2

    Отличный прием. Хотя давно верстаю - его не использовал.
    Спасибо.

    А есть еще известные вам глюки ie6 из-за отсутствия пробела, и вообще как лучше оформлять для него свой ства эллементов в css файле?

    Комментарий by Владимир — Декабрь 20, 2007 @ 2:50 pm | Цитировать

  3. 3  Плюс Минус  0

    Владимир, я всегда ставлю пробел перед фигурной скобкой, не только в этом случае. Есть еще что-то связанное с :first-line, не помню точно. Если найду у себя - напишу.

    Комментарий by neutrino — Декабрь 20, 2007 @ 2:53 pm | Цитировать

  4. 4  Плюс Минус  0

    IE 6.0.2900.2180.xpsp_sp2_rtm.040803-2158, XHTML 1.0 Strict — работает и с пробелом и без

    Комментарий by Pashka R. — Декабрь 20, 2007 @ 3:01 pm | Цитировать

  5. 5  Плюс Минус  0

    Pashka R., хм, спасибо. Потестим. Но это редкость, я думаю.

    Комментарий by neutrino — Декабрь 20, 2007 @ 3:08 pm | Цитировать

  6. 6  Плюс Минус  0

    Pashka R., хм, спасибо. Потестим. Но это редкость, я думаю.

    Может это зависит от док-тайпа?… сейчас посмотреть нет времени…

    Комментарий by Pashka R. — Декабрь 20, 2007 @ 3:11 pm | Цитировать

  7. 7  Плюс Минус  0

    Pashka R., я потестирую позже.

    Комментарий by neutrino — Декабрь 20, 2007 @ 3:33 pm | Цитировать

  8. 8  Плюс Минус  +1

    Вау! Почему же я об этом раньше не знал? neutrino, спасибо тебе, что просветил! ;) Теперь буду использовать. Это ж позволить избавляться от лишних контейнеров. Классно.

    Комментарий by Dimox — Декабрь 20, 2007 @ 3:49 pm | Цитировать

  9. 9  Плюс Минус  0

    Dimox, рад что пригодилось )

    Комментарий by neutrino — Декабрь 20, 2007 @ 3:59 pm | Цитировать

  10. 10  Плюс Минус  0

    А я-то как рад. Респект тебе! ;)

    Комментарий by Dimox — Декабрь 20, 2007 @ 4:04 pm | Цитировать

  11. 11  Плюс Минус  +1

    Это супер!

    Комментарий by Максим Покровский — Декабрь 20, 2007 @ 8:05 pm | Цитировать

  12. 12  Плюс Минус  +2

    Отлично. Спасибо за статью

    Комментарий by Alex — Декабрь 20, 2007 @ 9:57 pm | Цитировать

  13. 13  Плюс Минус  +1

    Погорячился я, ой погорячился. У метода всплыла куча разногласий с IE. По разному воспринимают padding у элемента и :first-letter. FF естественно прибавляет padding родителя и :first-line. При включенном hasLayout тоже разногласия. С line-height тоже траблы. Вообщем достаточно попробовать сэмулировать sliding doors и все будет ясно. Годится только для простых примеров вроде тех, что ты привел. А жаль. Ой как жаль ((

    Комментарий by Максим Покровский — Декабрь 21, 2007 @ 1:49 am | Цитировать

Оставить комментарий

XHTML (Разрешенные теги): <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong> .

Если вы хотите вставить в комментарий код, то жмите на кнопку "HTML" в редакторе и используйте теги <pre><code> и </pre></code> для вставки.

Не забывайте о том, что теги, вставленые без использования &lt;/&gt; будут автоматически трансформироваться.

Цитировать отмеченый текст