2016-09-12 4 views
3

私はウェブサイトで使用するさまざまな色のLESSで単純なミックスインを作成しようとしています。mixinの引数を使ってLESSのクラス名を作成する

私が欲しいのは、クラス名の一部としてmixinargumentも使用しています。

@green: #5FBEAA; // my color variable 

.text-color(@color) { 
    .text-{@color} { 
     color: @color; 
    } 
} 

.text-color(@green); 

私は取得しています出力は次のようになります。

.text-#5FBEAA { 
    color:#5FBEAA 
} 

私が欲しいのです:

.text-green { 
    color:#5FBEAA 
} 
+0

はどのようにしてSASSやスタイラスでこれを行うのですか? – blonfu

+0

@blonfu SASS/Stylusで試しました。そういうわけではない。私の間違い。私はその何かを使っていた。ここでそれは間違っていた。 –

+1

私は変数名にそのようにアクセスできることは奇妙に思えました。 – blonfu

答えて

5

にコンパイルされます。

少ない

@green: #5FBEAA; 

.text-color(@colorname) { 
    @color: ~"@{colorname}"; 
    [email protected]{color}{ 
    color: @@color; 
    } 
} 

.text-color(green); 

出力

.text-green { 
    color: #5FBEAA; 
} 
+0

ニースのアプローチ。私がこの '@colorname;'のように書いても、 '〜@ {colorname};で' @color'変数に値を割り当てる必要がある理由を説明できますか?その背後に正当な理由はありますか? –

+0

コール中に '' green ''を' 'green''と置き換えることができ、よく見えます。テスト後に削除するのを忘れました。文字列として 'green'を得るには'〜@ {colorname} 'を使っています。私は答えを – blonfu

+0

ええ編集し、それは理にかなっています。ありがとうございました:) –

2

私はその可能性はないと思います。これに最も近い解決策は、追加の変数を使用することです。

@green: #5FBEAA; 
.text-color(@name,@color) { 
    [email protected]{name} { 
     color: @color; 
    } 
} 
.text-color(green,@green); 

これは私がVariable Namesを使用してソリューションを持っていると思う

.text-green { 
    color: #5FBEAA; 
} 
関連する問題