2017-04-04 8 views
5

ハード・ストップが11個あるグラデーションを作成し、11個の別々のボックスの錯覚を作りました。SASS/SCSSでハードストップの背景を作成するにはどうすればよいですか?

enter image description here

それが今立っているように、直線勾配にハードコードされた幅の%があります。私は助けるが、はるかに効率的な方法があると思うことができない、むしろのようなこれをコーディングよりも、(SCSS経由?):あなたができる任意の入力のための

.color-bar { 
 
     background: linear-gradient(to left, 
 
     rgba(0, 0, 0, 0) 0%, 
 
     rgba(0, 0, 0, 0) 9.09%, 
 
     rgba(0, 0, 0, .1) 9.09%, 
 
     rgba(0, 0, 0, .1) 18.18%, 
 
     rgba(0, 0, 0, .2) 18.18%, 
 
     rgba(0, 0, 0, .2) 27.27%, 
 
     rgba(0, 0, 0, .3) 27.27%, 
 
     rgba(0, 0, 0, .3) 36.36%, 
 
     rgba(0, 0, 0, .4) 36.36%, 
 
     rgba(0, 0, 0, .4) 45.45%, 
 
     rgba(0, 0, 0, .5) 45.45%, 
 
     rgba(0, 0, 0, .5) 54.54%, 
 
     rgba(0, 0, 0, .6) 54.54%, 
 
     rgba(0, 0, 0, .6) 63.63%, 
 
     rgba(0, 0, 0, .7) 63.63%, 
 
     rgba(0, 0, 0, .7) 72.72%, 
 
     rgba(0, 0, 0, .8) 72.72%, 
 
     rgba(0, 0, 0, .8) 81.81%, 
 
     rgba(0, 0, 0, .9) 81.81%, 
 
     rgba(0, 0, 0, 1) 90.09%, 
 
     rgba(0, 0, 0, 1) 100%); 
 
     height: 50px; 
 
     width: 550px; 
 
}
<div class="color-bar"></div>

Here's a rough Codepen in action.

感謝を提供する。

+0

あなたが望む結果が得られたら、私はその問題が本当に何かを見ることはできません。それはかなり確かではありませんが、誰が気にしますか?これは完全に有効なコードです。 – Chris

+0

@Chris私は、OPがSCSSメソッドを求めているのであれば、再利用できる関数を作成することです。毎回独自の計算をする代わりに、グラデーション上のステップ数を設定するための数値を変更するだけかもしれません。 – DaniP

+0

@DaniP、ええ、再利用可能性の観点からは理にかなっています。しかし、そうでなければ、私は個人的には何とか変更のポイントが見えません。 – Chris

答えて

3

は私をいじるのビットを取ったが、ここでは、次のとおりです。

@function hard-stops($direction, $from, $to, $steps) { 
    $output: unquote("linear-gradient(") + $direction; 
    @for $i from 0 through $steps { 
    $output: $output + ', ' 
        + mix($from, $to, $i/$steps) + ' ' 
        + percentage($i/($steps+1)) + ', ' 
        + mix($from, $to, $i/$steps) + ' ' 
        + percentage(($i+1)/($steps+1)); 
    } 
    $output: $output + ')'; 

    @return $output; 
} 
.color-bar { 
    height: 50px; 
    width: 550px; 
    background: hard-stops(to left, rgba(0,0,0,1), rgba(0,0,0,0), 10); 
} 

jsFiddle

制限があります:混合可能な色を渡す必要があります(black、たとえば、私はsassのエキスパートではありません)。

+0

うわー、それに近づくのは非常にクールな方法。私は色混合を考慮しなかった。 [これは私の大雑把な試みです](http://codepen.io/jwindeknecht/pen/XMGwNb)他の色を使用しています。 –

+1

@JoeW、あなたの例が1色だけを使用していても、それは意味がありませんでした。最終的には、色の混合は、人々が「おしゃべり」を使用する主な理由の1つです。そのセレクタとおそらくネストしているセレクタと '@media'クエリ。あなたの最初の質問におめでとう、btw、人々がこのような良い/よく受け取った質問から始めるのはまれです。 [so]&happyコーディングへようこそ! ::} <(((*>::) –

関連する問題