2017-11-03 5 views
2

私は積み重ねられたメニューをドロップダウンして、徐々に各メニュー項目を徐々に明るくしたい。私はlighten()ルールを使って手作業で行っていますが、新しいリスト項目の増分ごとに5%増やす方法があるかどうかを知りたいと思います。私はいくつかのjqueryはこれを達成するために結合する必要がありますね。各リストアイテムの子供の背景をダイナミックに明るくする

フィドル:あなたはSASSの@forを使用することができますhttp://jsfiddle.net/k2fjzro4/

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul> 
 
    <li class="list-item-1">1</li> 
 
    <li class="list-item-2">2</li> 
 
    <li class="list-item-3">3</li> 
 
    <li class="list-item-4">4</li> 
 
    <li class="list-item-5">5</li> 
 
</ul>

+1

このような何かをあなたが正確にわかっている場合にのみ、SASSの機能 –

+1

@HardenRahulを経由して、これを行うeaslityことができますアイテム数やサーバーサイドのPugレンダリングがあります。そして、SASSでそれをやるだけでは意味がありません。 –

+1

あなたは上限を知っていますか、またはそれは任意の数のリスト項目を考慮する必要がありますか?上限がある場合は、純粋なSASSミックスインアプローチを使用してください。 – delinear

答えて

6

ul li { 
    padding: 10px; 
    background-color: #333; 
} 

@for $i from 1 through 10 { 
    li.list-item-#{$i} { 
    background-color: lighten(#333, $i*5%); 
    } 
} 

多量のアイテムに対して動的に発生させたい場合は、JSはおそらく避けられないものです。

+0

うわー、これは完璧です!とにかく10個以上のリスト項目が存在しないので、私が必要とするものだけ!どうもありがとう! –

0

使用eachrgba

var opacity = 1; 
 

 
$("ul > li").each(function(index, element){ 
 
    $(element).css("background-color", "rgba(51, 51, 51, "+opacity+")"); 
 
    opacity -= 0.05; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul> 
 
    <li class="list-item-1">1</li> 
 
    <li class="list-item-2">2</li> 
 
    <li class="list-item-3">3</li> 
 
    <li class="list-item-4">4</li> 
 
    <li class="list-item-5">5</li> 
 
</ul>

+0

私はこれを試して、それは素晴らしい、これはあなたがscssを使用することはできませんまたは良いまたは未知のアイテム数を持っている場合は良い選択肢です。ありがとうございました。 –

1

編集:のMichałKostrzyń[email protected]は同じ答えを掲載しました。これをCodePenに残しておきます。

これは簡単な叫びで表現できます。for SCSSを有効にしている場合は、javascriptを使用しないでください。

@for $i from 1 through 5 { 
    .list-item-#{$i} { 
     background-color:lighten(#333, 5%*$i) 
    } 
} 

こちらをご覧ください: https://codepen.io/Pauloscorps/pen/aVdrpY

+0

ありがとうございました!はい、私はそれがscssで達成することができればjsを避けることが賢明だと同意します。 –

0

for(var i = 1; i < 6;i++) 
 
{ 
 
    var opacity = 1/6*i ; 
 
\t $('ul').append('<li class="list-item-'+i+'" style="background-color:rgba(0,0,0,'+opacity+')">'+i+'--'+opacity+'</li>'); 
 
    
 
}
ul li { 
 
    padding: 10px; 
 

 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul> 
 
</ul>

多分

関連する問題