2014-10-06 6 views
2

У меня есть div с UL, который контролирует фильтрацию моих элементов портфеля, используя класс .active, я изменил активный цвет фильтров. Но у меня также есть DIV, который ниже фильтров, и я хочу, чтобы он появлялся и исчезал при каждом щелчке фильтра. У меня просто проблемы с CSS-селекторами!Сделать div активным

Мой HTML:

<!--=== Portfolio Filter ===--> 
<div class="row"> 
    <ul class="nav nav-pills col-xs-12"> 
     <li class="filter" data-filter="all">Show Me TV</li> 
     <li class="filter" data-filter="print">Conventions</li> 
     <li class="filter" data-filter="web">Elite</li> 
    </ul> 
</div> 

<!--=== Description ===--> 
<div class="container"> 
    <div class="row"> 
     <span class="category-description"> 
      all description 
     </span> 
     <span class="category-description"> 
      conventions description 
     </span> 
     <span class="category-description"> 
      elite description 
     </span> 
    </div> 
</div> 

CSS

.category-description { visibility:hidden; } 
#portfolio .nav > li.active { color:#e21f24; } 
#portfolio .nav > li.active + .category-description { visibility:visible; } 

Может кто-нибудь помочь немного?

+0

Если вы хотите взять под свой контроль чистый CSS, вам нужно добавить класс 'active' в ваш элемент' row', например 'active-web', а затем селектор' + 'работает:' .row.active- web + .container .category-description'. В противном случае вам нужен JavaScript ... – dashtinejad

+0

Имеет ли каждый фильтр свое описание? У вас есть три фильтра, но одно описание. Когда будет показано описание? С помощью какого фильтра? – dashtinejad

+0

Да, у каждого фильтра есть свое описание, каждое из которых должно отображаться ниже его фильтра, а при переключении предыдущий фильтр должен быть скрытым, а новый должен отображаться ниже нового фильтра. Надеюсь, что все, что имеет смысл, я обновил HTML с тем, как я думаю, он должен идти – ve1jdramas

ответ

1

Я думаю, что простое и чистое решение, меняет разметку и переместить description элемент внутри li элемента:

<li class="filter" data-filter="print"> 
    Conventions 
    <div class="description">Conventions Description</div> 
</li> 

Теперь вы можете взять под контроль description элемента:

.description { display: none; } 
li.active .description { display: block; } 

(вам нужно контролировать результат, играя с CSS, чтобы достичь того, чего вы хотите)

JSFiddle Demo.

+0

Ах, ладно, это так же, как я это сделал, но у меня есть некоторые проблемы с позиционированием. Описание будет зависеть от моих позиций портфеля, если оно слишком длинное, вместо того, чтобы подталкивать контент вниз. И я могу только получить описания, чтобы показывать выравнивание слева, а не в центре – ve1jdramas

+0

Я считаю, что можно достичь ** точно **, что вы хотите, но это сложно. Я думаю, что это стоит того, чтобы сделать это, вместо того, чтобы привлекать JS и изменить алгоритм mixitup ... – dashtinejad

+0

А так, вся левая проблема выравнивания не может быть исправлена ​​с помощью CSS? – ve1jdramas

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