残念ながら、LESS でこれを行うための組み込み関数が見つからないでしょう。
functions 引数はcolor()
、16 進数またはその簡略表現である必要があります。
ただし、javascriptを使用して文字列をさらに解析して、
- 個々の r、g、b およびアルファ値を抽出し、
- 個々の値を
rgba()
関数に渡して、タイプ color の変数を取得します。
元の解析の最初のステップを実行できます。すべて LESS で行う必要がある場合は、次のようにすることができます。
@color1: "rgba(255, 255, 0, 0.5)";
@color2: ~`@{color1}.replace(/^(rgb|rgba)\(/,'[').replace(/\)$/,']').replace(/\s/g,'')`;
@color3: rgba(unit(`@{color2}[0]`),unit(`@{color2}[1]`),unit(`@{color2}[2]`),unit(`@{color2}[3]`));
rgba()
残念ながら、複数の引数が必要なため、文字列を または同様の関数に直接読み込むことはできません。文字列エスケープ (例: ~
) を使用しても、出力は単一の変数としてフォーマットされます ( css の単一の出力文字列に~"a, b, c"
なり、そのように機能します)。そのため、各値を個別に取得して、関数a, b, c
のそれぞれの引数/変数に渡す必要があります。 rgba()
. 関数unit()
を使用して、文字列をさらに使用できる数値に変換します。
例えば:
@color4: mix(red,@color3);
.test {
color: @color4;
}
CSSの結果:
.test{
color: rgba(255, 64, 0, 0.75);
}