Подтвердить что ты не робот

Как показать первые N элементов блока и скрыть другие в css?

Я пытаюсь скрыть первые 3 элемента, имеющие класс .row внутри блока .container.

Что я делаю, сначала скрывает все .row, а затем я пытаюсь отобразить первые 3 .row с помощью .row:nth-child(-n+3)

jsfiddle здесь: http://jsfiddle.net/z8fMr/1/

У меня здесь две проблемы:

  • Строка 3 не отображается, я использую nth-child неправильным образом?
  • Есть ли более эффективная практика, чем скрытие всего, а затем создание определенного правила для отображения n первых элементов, которые я хочу? Есть ли способ в css просто отобразить первые 3 .row, а затем скрыть все остальные .row?

Спасибо.

4b9b3361

Ответ 1

  • У вас есть .notarow как первый ребенок, поэтому вам нужно учитывать это в вашей формуле :nth-child(). Из-за этого .notarow ваш первый .row становится вторым потомком родителя, поэтому вы должны считать, начиная со второго на четвертое:

    .row:nth-child(-n+4){
        display:block;
    }
    

    Обновленная скрипка

  • То, что вы делаете, прекрасно.

Ответ 2

Вам даже не нужны селектор CSS3:

.row + .row + .row + .row {
    display: none;
}

Это должно работать даже в IE7.
Обновлена ​​скрипка

Ответ 3

Кроме того, как и решение Giovanni, что-то вроде этого также может работать.

.container > .row:nth-child(3) ~ .row {
    /* this rule targets the rows after the 3rd .row */
    display: none;
}