2016-03-31 3 views
0

Нужна помощь в следующей ситуации. Я слайдер, кто настройка, как это (упрощенный):связанные с CSS; назначение специального класса li

<div class="slider"> 
    <ul> 
     <li>...</li> 
     <li class="current">...</li> 
     <li class="center active">...</li> 
     <li class="current">...</li> 
     <li>...</li> 
    </ul> 
</div> 


.slider li {opacity: 0.3;} 
.slider li.center.active {opacity: 1;} 
.slider li.current:first-child {opacity: 1;} // this here doesn't work. 

Я не могу использовать .slider li:nth-child(2).current {opacity: 1;} , потому что я с помощью ползунка, так что число, если li тегов отличаются.

Есть ли другой способ, кроме изменения классов li, изменить прозрачность первого класса current.

+0

Можете ли вы предоставить вам скрипт? –

+0

https://jsfiddle.net/ua60Ld31/5/ – kiarashi

+0

Возможный дубликат [селектор CSS3: первый тип типа с именем класса?] (Http://stackoverflow.com/questions/6447045/css3-selector-first- of-type-with-class-name) – oboshto

ответ

2

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

<div class="slider"> 
    <ul> 
     <li>...</li> 
     <li class="current">...</li> 
     <li class="center active">...</li> 
     <li class="current">...</li> 
     <li>...</li> 
    </ul> 
</div> 
.slider li {opacity: 0.3;} 
.slider li.center.active {opacity: 1;} 
.slider li.current {opacity: 1;} 
.slider li.center.active ~ li.current {opacity: 0.3;} 
+0

Невероятно! Это сработало, спасибо. – kiarashi

+0

Я не думаю, что это работает, если вы добавите еще элемент '.current' после' .center.active' –

0

В вашей ситуации первый ток <li> фактически является вторым элементом <ul> использования этого CSS

.slider li.current:nth-child(2) {opacity: 1;} 

Смотрите рабочий пример: https://jsfiddle.net/yudi/a3w1bshr/

В CSS нам нужно для подсчета позиции с общими элементами и h а его второй элемент <ul>

+0

Боюсь, я тоже не могу этого сделать. Это слайдер, поэтому число, если 'li tags' может измениться. В примере это второй, но поскольку мы имеем дело с ползунком здесь, это также может быть пятый «тег li». – kiarashi

+0

в этом случае добавьте этот css в jquery '$ ('. Slider li.current'). Eq (0) .css ('opacity', '1');'. Правило JQuery отличается от css и будет рассматривать его как первый элемент '.current' –

+0

Спасибо, что позволили мне об этом. Я не знал, что это тоже возможно. Благодаря вам, я определенно хочу узнать jquery в этом году. :) – kiarashi

0

Вы можете добавить дополнительный класс в список, который хотите изменить.

HTML:

<div class="slider"> 
     <ul> 
      <li>...</li> 
      <li class="current sliderOpacity">...</li> 
       <li class="center active">...</li> 
       <li class="current">...</li> 
       <li>...</li> 
      </ul> 
     </div> 

CSS:

.sliderOpacity { 
opacity: 1;} 
+0

Боюсь, я не могу добавить дополнительный класс. – kiarashi

+0

Почему вы не можете добавить дополнительный класс? – 6134548

0

здесь вы идете сэр

.slider li, 
 
.slider ul > .current ~ .current { opacity: 0.3; } 
 

 
.slider li.center.active, 
 
.slider ul > .current { opacity: 1; }
<div class="slider"> 
 
    <ul> 
 
     <li>...</li> 
 
     <li class="current">...</li> 
 
     <li class="center active">...</li> 
 
     <li class="current">...</li> 
 
     <li>...</li> 
 
    </ul> 
 
</div>

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