Структурирование CSS3 Структурные псевдоклассы - PullRequest
1 голос
/ 02 декабря 2009

Во время отработки различных сценариев, в которых могут пригодиться псевдоклассы и селекторы CSS3, я наткнулся на то, что просто не могу понять!

Вот ситуация. Я хочу изменить :first-of-type::first-letter первого непустого абзаца для блока текста. Я не уверен, что псевдоклассы могут быть сложены все же. Вот что я придумал (конечно, не работает)

.article-body > p:not(:empty):first-of-type::first-letter { ... }

Учитывая следующую разметку:

<div class="article-body">
    <p></p>
    <p>The "T" in this paragraph should be the one affected.</p>
</div>

Единственное предположение, которое я могу придумать, состоит в том, что псевдоклассы (то есть;: not () и: first-of-type) нельзя накладывать друг на друга. Что странно, поскольку вы можете накладывать друг на друга псевдоэлементы и другие псевдоклассы ...

Есть идеи, как этого достичь?

Ответы [ 2 ]

2 голосов
/ 02 декабря 2009

:first-of-type выбирает первое p, как следует из названия, а не первое непустое p, как вам может понадобиться.

Они складываются просто отлично, но :first-of-type работает исключительно с тегом (т.е. тип), а не с предыдущим комплексным селектором. Таким образом, вы просто ищете первый p, и этот первый абзац также не должен быть пустым. И этого не существует.

Предполагая, что пустые абзацы могут появляться по всему тексту, и вы хотите, чтобы затрагивался только первый, непустой абзац, я не думаю, что это возможно сделать только одним селектором. Это лучшее, что я могу придумать:

p:first-of-type::first-letter,
p:empty + p::first-letter { text-transform: uppercase; /* ... */ }

p:not(:empty) ~ p::first-letter { text-transform: inherit; /* reset */ }

Это будет применять CSS только к первому непустому абзацу (ну, и к первому пустому абзацу, но в любом случае он ничего не будет делать).

0 голосов
/ 02 декабря 2009

Удаление пустого абзаца приводит к

.article-body > p:first-of-type::first-letter { ... }

вести себя правильно. Есть ли причина, по которой пустой абзац должен быть там? Можете ли вы изменить интервал первого абзаца, чтобы учесть, что пустой абзац отсутствует?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...