2013-09-12 3 views
9

У меня есть следующий код:Как скрыть только первый элемент типа?

<div class="ctr-1"> 
    <h3>Title</h3> 
    <div class="ctr-2"> 
     <h3>Title</h3> 
    </div> 
</div> 

И следующий CSS

.ctr-1 h3:first-child{ display:none; } 

Оба <h3> теги скрыты, я только хочу, чтобы первый один скрытый. Как?

+4

Ваш селектор не соответствует вашей разметке. Возможно, вы имели в виду '.ctr-1'? – BoltClock

+0

@BoltClock - я сделал - это была опечатка ... – Bradley

ответ

14

Это то, что first-of-type и nth-of-type селекторы для.

Например:

.ctr-1 h3:first-of-type { display:none; } 
/* - Or - */ 
.ctr-1 h3:nth-of-type(0) { display:none; } 

Это скроет первый h3 потомок .ctr-1, независимо от его местоположения внутри родительского элемента.

Конечно, в вашем конкретном примере h3 действительно также непосредственным (>) и первый (:first-child) потомок .ctr-1. Но если это совпадение, вы, возможно, не сможете положиться на него. В этом случае nth-of-type - это путь.


Редактировать

Как было отмечено в комментарии по @crush, это CSS3 селекторы, которые применимы к IE9 и выше. Ссылка: Can I use CSS3 selectors?

+0

Это тоже хорошая стратегия, но поддерживается только IE9 + – crush

+0

@crush True. Добавлено примечание об этом. Благодарю. – Boaz

8

Они оба технически являются first-child.

В вашем примере, вы могли бы сделать:

.ctr-1 > h3:first-child { display:none; } 
3

Вы неправильно, ctr не существует, и вы должны сказать с >, чтобы выбрать первый уровень элемента в вашем селекторе страницы попробуйте следующее:

.ctr-1 > h3:first-child{ display:none; } 
3

Вы можете использовать:

.ctr-1 > h3 { display: none; } 
Смежные вопросы