объединить: first-line: before

можно комбинировать псевдоэлемент: first-line и: before? На самом деле я хотел бы иметь символ перед любой строкой p, кроме первой. Я попробую:

p:first-line:before{content:""}   
p:before{content:"["}      

но это не работает.

Спасибо за любое предложение.


person Fabrizio Venerandi    schedule 15.04.2013    source источник


Ответы (2)


В настоящее время невозможно объединить их в цепочку, как у вас, и я не могу придумать способ добавить контент к каждой строке абзаца, кроме первой, с помощью только CSS. Кроме того, свойство content используется только с :before и :after.

См. Раздел «Несколько псевдоэлементов» на странице http://www.w3schools.com/css/css_pseudo_elements.asp, чтобы узнать, как эффективно комбинировать псевдоэлементы:

p:first-letter {
    color:#ff0000;
    font-size:xx-large;
}
p:first-line {
    color:#0000ff;
    font-variant:small-caps;
}
person Charlie Gorichanaz    schedule 15.04.2013

Невозможно иметь два псевдоэлемента подряд; как синтаксис CSS 2.1 x, так и синтаксис CSS3 для селекторов запрещает это.

W3C CSS Validator не сообщает p:first-line:before об ошибке, но это ошибка; Я повторно открыл отчет об ошибке по этому поводу. (Ошибка не запускается, если используется синтаксис с двумя двоеточиями p::first-line::before: валидатор говорит: «Псевдоэлемент :: first-line не может появляться здесь в контексте css21 [first-line :: before]».)

В этом случае это не поможет, даже если конструкция действительна и поддерживается. Использование :before на :first-line было бы бессмысленным, поскольку вставка содержимого в начало первой строки была бы такой же, как вставка его в начало элемента.

И p:before означает псевдоэлемент в начале содержимого p, а не в начале каждой отображаемой строки p. Невозможно вставить символ в начало каждой строки элемента с помощью CSS.

person Jukka K. Korpela    schedule 16.04.2013