2016-12-10 7 views
-1

Извините за плохой титул, на самом деле не знал, как лучше описать. Страница выглядит так:CSS Выберите последний класс перед другим классом

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

<main> 
    <h2 class="title">title1</h2> 
    <div id="1-3" class="content" data-id="1"></div> 
    <div id="1-2" class="content" data-id="1"></div> 
    <div id="1-1" class="content" data-id="1"></div> 

    <h2 class="title">title2</h2> 
    <div id="2-11" class="content" data-id="2"></div> 
    <div id="2-10" class="content" data-id="2"></div> 
    <div id="2-9" class="content" data-id="2"></div> 

    <h2 class="title">title3</h2> 
    <div id="3-18" class="content" data-id="3"></div> 
    <div id="3-17" class="content" data-id="3"></div> 
    <div id="3-16" class="content" data-id="3"></div> 
</main> 

есть ли способ, чтобы скрыть все, кроме дивы прошлого контента после каждого h2 в чистом CSS? Я не могу настроить таргетинг на них с идентификатором или идентификатором данных по отдельности. есть ли способ выбрать все элементы с тем же неуказанным атрибутом? поэтому выбраны все данные id = "same", а затем я могу отобразить nth-last-child (1)? Я сомневаюсь, что есть что-то вроде этого. Есть ли способ сделать это с помощью только CSS?

Я в настоящее время скрываю каждое .content, если следующий брат не является .content с js, но хочу знать, возможно ли это с помощью CSS.

+0

Итак, вы хотите, чтобы скрыть все, кроме одного DIV с классом контента после TITLE3 правильно? –

+0

Что именно вы хотите выбрать, а что нет? – Oriol

+0

@Oriol Я хочу показать div id 1-1, 2-9 и 3-16. и хотите скрыть другие разделители контента. – DD3R

ответ

0

Его не возможно без каких-либо scripting..you нужно использовать Javascript или Jquery

+0

Да, как я уже сказал, я сейчас делаю это с js, просто интересно, могу ли я обойтись без него. Спасибо за ответ. – DD3R

+0

Да..и его возможное thn его интересно .. – Darshak

+0

Извините что? .... – DD3R

0

Я был бы соблазн предложить положить каждый блок

<h2 class="title">title2</h2> 
<div id="2-11" class="content" data-id="2"></div> 
<div id="2-10" class="content" data-id="2"></div> 
<div id="2-9" class="content" data-id="2"></div> 

внутри <section>, как это:

<section> 
<h2 class="title">title2</h2> 
<div id="2-11" class="content" data-id="2"></div> 
<div id="2-10" class="content" data-id="2"></div> 
<div id="2-9" class="content" data-id="2"></div> 
</section> 

Тогда вы можете ...

div { 
 
display: none; 
 
width: 200px; 
 
height: 40px; 
 
color: rgb(255,255,255); 
 
} 
 

 
section:nth-of-type(1) div { 
 
background-color: rgb(255,0,0); 
 
} 
 

 
section:nth-of-type(2) div { 
 
background-color: rgb(0,127,0); 
 
} 
 

 
section:nth-of-type(3) div { 
 
background-color: rgb(0,0,255); 
 
} 
 

 
section div:last-of-type { 
 
display: block; 
 
}
<main> 
 
    <section> 
 
    <h2 class="title">Title 1</h2> 
 
    <div id="1-3" class="content" data-id="1">Div 1</div> 
 
    <div id="1-2" class="content" data-id="1">Div 2</div> 
 
    <div id="1-1" class="content" data-id="1">Div 3</div> 
 
    </section> 
 

 
    <section> 
 
    <h2 class="title">Title 2</h2> 
 
    <div id="2-11" class="content" data-id="2">Div 1</div> 
 
    <div id="2-10" class="content" data-id="2">Div 2</div> 
 
    <div id="2-9" class="content" data-id="2">Div 3</div> 
 
    </section> 
 

 
    <section> 
 
    <h2 class="title">Title 3</h2> 
 
    <div id="3-18" class="content" data-id="3">Div 1</div> 
 
    <div id="3-17" class="content" data-id="3">Div 2</div> 
 
    <div id="3-16" class="content" data-id="3">Div 3</div> 
 
    </section> 
 
</main>

+0

Yeah Если бы я мог изменить html, чем это было бы тривиально, но похоже, что я просил сделать с css в настоящее время. В любом случае, мне это больше не нужно, так что неважно. – DD3R

+0

Хм. Вы не упомянули, что не можете изменить html. Это не нормальная ситуация. И даже тогда, в зависимости от других факторов, скрывается все div, но последнее после каждого «h2» абсолютно возможно. Например, если у вас всегда есть 'h2', за которым следуют 2 скрытых' divs', за которыми следует видимый 'div', вы можете использовать селектор:' main: nth-child (4n-1), main: nth-child (4n-2) ', чтобы скрыть скрытые' divs'. – Rounin

+1

Да, я не упоминал html, потому что я спросил, можно ли это сделать в чистом css. числа divs после h2 меняются, поэтому метод не будет работать. Это уже не проблема, но я оставил ее работать с javascript, поскольку это невозможно сделать с помощью css. Спасибо за вашу помощь. – DD3R

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