2016-10-11 16 views
0

私のscssコードでいくつかのエラーを処理したいと思います。SASSのエラー処理

このコードを想像してください。

$color: 12; 

a { 
    @if (type-of($color) != color) { 
    // trow an error 
    } 
} 

は今、私はいくつかのparamsを取り、@errorまたは@warnを呼び出すミックスインを使用します。

@mixin log($type, $message) { 
    @if ($type == error) { 
    @error $message; 
    } @else { 
    // 
    } 
} 

しかし、私は@include経由するたびにそれを呼び出すにしたくない:@include log(error, "message");

私はこのような何か文句を言わないだろう。だから、

a { 
    @if (type-of($color) != color) { 
    log(error, "message"); 
    } 
} 

を、セレクタ内で呼び出す関数(または関数ではない)を書くためにそこに方法はありますか?理想的mixins

答えて

1

ペアを作成するために使用されるべきです。 Functionsはあなたサス/ CSSの値

@function log($type, $message) { 
    @if ($type == error) { 
    @return $message; 
    } @else { 
    //return something else 
    } 
} 

a { 
    @if (type-of($color) != color) { 
    @error log(error, 'message'); 
    // $type == error so log(error, 'message') returns 'message' 
    // so entire line is interpreted as @error 'message' 
    } 
} 

は、この例では唯一の違いは、mixinためfunction代わりの@includeため@errorを使用していた期待しどこ値はそれほどいずれかを使用することができます復帰に期待されています。

しかし、幅のような特定の値に基づいて色を変更し、いくつかのエラーを同時にログに記録する必要があると想像してください。

@function get-colour($width) { 
    $color: green; 
    @if ($width < 10) { 
    @warn 'This size is too small'; 
    $color: red; 
    } 
    @return $color; 
} 

div { 
    background-color: get-colour(12); //returns green colour for div 
} 

p { 
    background-color: get-colour(5); //logs warning and returns red colour for p 
} 

mixinproperty: value、異なる特性に用いることができるONLYfunctionリターンを返すだろうが。

+0

よろしくお願いします。助けてくれてありがとう。 – 3rdthemagical

0

私はちょっと調べました。 @mixinsがなければ、エラーを処理する方法はありません。 @include log(error, "message");は唯一の解決策です。

+0

実際には '関数'を使って 'errors'を扱うことができます。このような状況では、その差はごくわずかですが、状況によってはそれが便利な場合もあります。この[チュートリアル](https://webdesign.tutsplus.com/tutorials/an-introduction-to-error-handling-in-sass--cms-19996)を確認することができます –

+0

@BlackEnigma私はどのように呼び出すか見つかりませんでしたセレクタまたはミックスインの内部でエラーまたは警告をスローする機能。 – 3rdthemagical