2015-02-02 2 views
2

Есть ли способ, с помощью CSS селекторов (без JavaScript), чтобы выбрать дочерний элемент, только если не будет никаких дополнительный контент?выбрать: только ребенку, только если нет никакого дополнительного контента

Я хочу, чтобы достичь следующего:

<style>p b:only-child { color: red }</style> 
<p><b>this should be red</b></p> 
<p><b>this</b> should be not</p> 
<p><b>this</b> <i>neither</i></p> 

В :only-child селектор работает на третьей линии, но не на секунду. См. Это jsfiddle.

+0

может быть полезным, хотя выглядит утомительно: http://lea.verou.me/2011/01/styling-children-based-on-their-number-with-css3/ –

+0

В принципе, нет. CSS стилей, что есть, а не то, что нет. –

+0

@MarcB Я прочитал эту статью. ': only-child' на самом деле является сокращением для': first-child: last-child' (или ': nth-child (1): nth-last-child (1)' как пишет Lea). Это не работает :(. Надеюсь, @Paulie_D не прав ... –

ответ

3

Если посмотреть на спецификации, в разделе о structural pseudo-classes он говорит:

селекторы вводит концепцию на основе дополнительной информации структурных псевдо-классов чтобы позволить выбор, который находится в дереве документа, но не могут быть представлены другими простыми селекторами или комбинаторами.

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

только селектор, который принимает во внимание наличия текстовых узлов (для неигровых, как ни странно) :empty. Все остальные структурные псевдоклассы, включая :only-child, не учитывают их.

Смежные вопросы