Less.js: 不透明度のある16進色が絡み合う

作成日 2018年07月17日  ·  14コメント  ·  ソース: less/less.js

[email protected]に更新された後、レンダリングで不透明度を色付けします。

背景色:#55555599; ->#55555599 99; (有効ではありません)
背景色:#5559; ->#5559 9; (有効ではありません)

bug medium priority

最も参考になるコメント

#RRGGBBAAを認識するようにcolor()関数を更新し、同じ色空間に色を保持するためにいくつかの更新を行いました。 以前は、ブラウザの互換性のために、すべてが単純な16進数(alpha = 1の場合)またはrgba()いずれかに変換されていました。 これで、使用されている色の値を保持することで、Lessの一貫性を保つことができます。 16進色とキーワードはすでにそのまま出力されていますが、私のPRでは、Lessはhsl()hsla()そのまま出力し(値をクランプする場合を除く)、色の後の色空間も保持しますdarken()spin()ような操作。

全てのコメント14件

以前は、Lessは16進RGBA表記をサポートしていましたか?

@rjgotten直接ではありません。 ただし、認識されない値をスキップ(保持)する必要があります。 それはおそらく回帰です。

@rjgotten @tapsamanまだサポートされていないので、これはリグレッションではないと思います。 ただし、このフォームをサポートするための正規表現の変更とカラーノードの変更はほんのわずかでした。 検証については、PR参照してください

これが行うことの1つは、将来の互換性のために「無効な」色を削除することです。 評価時にエラーがスローされるのは、カラー操作で「無効な」カラーを使用しようとするまではありません。 ただし、3.0以降のLessは、プロパティの値をより許容するため、これを削除するのが妥当であるように思われました。

1つ:互換性のないブラウザの場合、Lessは#RRGGBBAAを変換する必要がありますか? 現在、IE / Edgeはサポートされておらず、他のいくつかのブラウザーもサポートされていません。 Microsoftは、近いうちに実装することを示唆していません。 しかし、私がそれを実装した理由は、色解析機能の解析に間違いなく問題があったためです。 文字列全体を取得して色を保存していましたが、色が4文字または8文字の場合はパーサーを進めなかったため、最後の桁が繰り返されていました。

編集:私がしたことは、作者によるrgba(#55555599)介したrgba()形式への変換を許可することrgba(#55555599)

これは私がこれに関して持っている考えのリストです。

  • ブラウザのサポートを意識することがLessの仕事かどうかはわかりません。
  • Less関数をCSS関数で圧縮することは危険だと「感じます」が、理由はわかりません。
  • 我々はすでに持っている_DO_ argb()出力に意味機能#AARRGGBB
  • color()関数もあります。 #AARRGGBB#ARGBサポートしていますか?
  • color: #AA334455;color: #A345;は、その形式を_理解する_ブラウザが多くない場合でも、有効な(または許容できる)CSSです。
  • rbga()キャスティングは滑りやすい坂道なのかしら。 rgb()hsl() 、およびhsla()もすべてCSS関数です。
  • 一方、LessがCSSのスーパーセットであることを考えると、 rgba()は非常に理にかなっています。

tl; dr:私の全体的な第一印象は、 color()関数が8桁と4桁のARGB文字列をサポートするようにする必要があるということだと思います。とにかくそれが目的のようです。

Less関数をCSS関数で圧縮することは危険だと「感じます」が、理由はわかりません。

その船は出航した。 rgba()は、Less関数として長い間存在してきました。 しかし、主な理由は、 lighten()ようなものに色を渡すことができるようにするためです。 つまり、 rgba()は内部的に色を返す必要があります。 したがって、実際にLessのカラー関数を使用する場合は、 rgba() _ have_のような関数をLess関数にする必要があります。 (例:lighten(rgba(50,50,50,0.5)、50%))それ以外の場合は、不明な関数呼び出しになります。 その色を操作するには、実際の色が何であるかを知る必要があります。

rbga()キャスティングは滑りやすい坂道なのだろうか。 rgb()、hsl()、およびhsla()もすべてCSS関数です。

そうかもね。 しかし、キャスティングはそれについて考える間違った方法です。 また、次のフォームも有効になります: rgba(#777777, 0.5) 、これはブラウザで許可されているか、許可される予定です。 それはhsla()に拡張されませんが、それは本当ですが、内部実装ははるかに難しく、機能するメソッドがある場合は必要ありません。

color()関数もあります。 #AARRGGBB、#ARGBをサポートしていますか?

いいえ、これを指摘していただきありがとうございます。 追加できます。 なぜその関数が存在するのか混乱していますが?

また、次の形式も有効になります:rgba(#777777、0.5)。これは、ブラウザーで許可されているか、許可される予定です。

言い換えると、このフォームはCSSで有効な色です: rgba(<Color> [, opacity]) 。 したがって、これを許可しない理由はありません。

我々はすでに持っている_DO_ argb()出力に意味機能#AARRGGBB

ARGBの順序は、InternetExplorerの従来のDirectShowフィルターに特に使用されます。
CSSの8桁または4桁の16進構文は、afaikRGBAの順序です。

また、両方をサポートすると、リテラル#000000FFが完全に透明な青(ARGB)を表すのか、完全に不透明な黒(RGBA)を表すのかを直接知ることができなくなります。

私のアドバイス:ARGBカラーサポートを削除します。 長い間使用されていない石器時代のIEブラウザにのみ必要になります。

私のアドバイス:ARGBカラーサポートを削除します。 長い間使用されていない石器時代のIEブラウザにのみ必要になります。

IE11未満のサポートはテストしていないため、これは良い考えです。

@rjgotten非推奨となる他の関数候補(または機能)はありますか? なぜ誰かがLessで_string_として色を記述し、それをcolor()関数を使用して色に変換する必要があるのか​​私はまだ混乱しています。 4年前に追加されたようです。

なぜ誰かがLessで色を文字列として記述し、それをcolor()関数を使用して色に変換する必要があるのか​​私はまだ混乱しています。

私が想像できる唯一のことは、自動抽出シナリオです。
たとえば、SVG背景画像を導入し、他のルールでの色の使用法などに一致するようにそれらから色の定義を抽出する複雑なプラグイン。

非常に深刻なエッジケースだと思います。

@rjgotten残念ながら、それがどこから来たのかを説明する問題の履歴を見つけることができませんでした。

#RRGGBBAAを認識するようにcolor()関数を更新し、同じ色空間に色を保持するためにいくつかの更新を行いました。 以前は、ブラウザの互換性のために、すべてが単純な16進数(alpha = 1の場合)またはrgba()いずれかに変換されていました。 これで、使用されている色の値を保持することで、Lessの一貫性を保つことができます。 16進色とキーワードはすでにそのまま出力されていますが、私のPRでは、Lessはhsl()hsla()そのまま出力し(値をクランプする場合を除く)、色の後の色空間も保持しますdarken()spin()ような操作。

追いついて、私は乗っています。 argb()関数は、古い形式の必要性に答えると思います。 これは良い動きです。

このページは役に立ちましたか?
0 / 5 - 0 評価