2011-11-14 2 views
2

私はおそらくあまりにも多くの冗長なものを書いていたため、次のSCSSのミックスインがあります。引数は、カスタマイズのためのすべての側面を申請する単一の値を取る、またはすべての4できるこのSCSSボーダー半径を単純化する方法Mixin? - サス初級

@mixin radius($topleft, $topright: $topleft, $bottomright: $topleft, $bottomleft: $topleft) { 

    -moz-border-radius-topleft:  $topleft; 
    -moz-border-radius-topright: $topright; 
    -moz-border-radius-bottomright: $bottomright; 
    -moz-border-radius-bottomleft: $bottomleft; 
    -webkit-border-radius:   $topleft $topright $bottomright $bottomleft; 
    border-radius:     $topleft $topright $bottomright $bottomleft; 

} 

注意を。

+0

簡略化宣言を使用し、2つの変数のみを渡す場合は、 '$ bottomleft'変数をデフォルトで' $ topright'に設定する必要があります。 'border-radius:0 3px'は' border-radius:0 3px 0 0'ではなく、 'border-radius:0 3px 0 3px'と等価であるからです。 – inko9nito

答えて

3

あなたはに最初の4行を組み合わせることができます:あなたが異なるエッジのために別々の値を指定して、クロスブラウザの互換性、あなたのコードを維持することができるという選択肢を保持したい場合は、それとは別に

-moz-border-radius: $topleft $topright $bottomright $bottomleft; 

、もうコードを減らすことはできません。

私はあなたがあなたが明示的にそうような値渡すことができ

@import "compass/css3"; 
@include border-radius(3px); 
+0

標準的なミックスインDSLには、それ以外のことはあまりありませんが、いくつかの創造的な[Sassスクリプト](http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html) 。 – numbers1311407

7

の構文:そうのような

@mixin radius($radius) { 

-webkit-border-radius: $radius; 
border-radius: $radius; 
} 

パス引数、

.selector { 
    @include radius(0 0 5px 5px); 
} 

乾杯!

4

使用することをお勧めmoz-borer-radius

-1

タスクランナー(gruntのような)を使ってsassファイルをcssに変換すると、オートプレフィクサーを使ってすべてのベンダー固有のプレフィックスを追加できます。あなたはミックスインを取り除くと、ちょうどあなたがほしいとの国境半径を書く得ることができな方法

https://github.com/nDmitry/grunt-autoprefixer

border-radius: 3px 6px 6px 3px 

そしてこの素晴らしい小さなブツはあなたのためにそれを変換します、そして、あなたのミックスインと同じ出力で終わります。

+0

これは完全によく分かりますが、これは質問されている質問に対する答えではありません。 – cimmanon

+0

私はまったく同じことがあったときに誰かが私にこのオプションを指摘したとき、私はとても嬉しかったです。私にとっては完璧な答えでした。だから私はそれを伝えたいと思います。 – JasperZelf

+0

しかし、この質問に対する答えではありません。 "どのように私はこのmixinを単純化するのですか?"は、 "サードパーティのアプリケーションがあなたのためにそれを修正する"ようには答えられません。 – cimmanon

関連する問題