私がいるトラブルはここにいくつかの擬似コードだ@mixin
に値を渡すためにデータ構造を定義していますSASSが配列に持っている最も近いものはリストです。以下のように@eachディレクティブで繰り返すことができます。
@mixin roundcorners($collection: (top-left, top-right, bottom-right, bottom-left), $radius: 0)
@each $corner in $collection
border-#{$corner}-radius: $radius
http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#each-directive
私は、ルール自体にリストエントリの値を削除するには、文字列の補間を使用しました - 私はそれが合法だ全くわからないんだけど、私は私のdevの上ではありませんよ。チェックするマシン。
また、引数にデフォルト値を使用しました。つまり、カスタム半径を渡すことができます。リストのどこかを通過すると、デフォルトのリスト全体がクリアされます(これはあなたが望むものだと思っていますが、気をつけるべきことです)。これを行うには
違う、もっと簡単な方法があるかもしれない:デフォルトとして「false」に代わりの0使用
@include rounded(false, 9px, false, 9px)
:
@mixin rounded($topLeft:false, $topRight:false, $bottomRight:false, $bottomRight:false)
@if $topLeft != false
border-top-left-radius: $topLeft
@if $topRight != false
border-top-right-radius: $topRight
@if $bottomRight != false
border-bottom-right-radius: $bottomRight
@if $topLeft != false
border-bottom-left-radius: $topLeft
デフォルト値を設定することで、あなたは次のように、このミックスインを呼び出すことができます必要以上に半径ルールを作成しないことを意味します。必要に応じて、コーナーをオーバーライドして0半径に戻すこともできます。
おかげで簡潔あなたの生成されたCSSを保ちます!私は '@ each'について知りませんでした。私は' @ for'をどのように使用していたのか非常に好きです!あなたの代わりの解決策は私がやりたいことに適しているようですが、コレクションについても知っておくと良いです!私は検索して検索し、人々がそれが不可能だと言っているだけを見つけることができた。 –
ありがとうございました - あなたのメモごとに補間構文を修正しました。 – Beejamin