2

プリプロセッサのインポートに問題があります。機能をコピーしたいベンダー css があります。残念ながら、私はこの状況でも html を制御していません..基本的に、ベンダー css と異なるベンダー html があり、ある css ルールの機能を別の css ルールに拡張しようとしています。

現在、多くの css プリプロセッサの基本的な概念は、ルールを拡張することです。

// Vendor
.foo { font-weight: bold; }
.bar { text-color: red; }

// Mine
.bar { .foo }

.foo上記の例では、またはにアクセスできません.barが、プリプロセッサを使用すると、機能を から.fooに拡張できます.bar。これは、less/stylus/etc に最適です。問題は、ベンダー ルールが生の CSS でのみ定義されている場合です。

そうは言っても、最も明白な解決策は、Stylus/Less に生の CSS を stylus/less としてインポートさせることです。しかし、どちらも実際にこれを行うことができないようです..少なくとも私が見つけた. Less はできないようです(@import "foo.css"ディレクティブは無視されます)。Stylus には、インポートされた未加工の CSS を実際に含めるオプションがありますが、実際にはそれを処理していないようです。つまり、css が含まれますが、@extendディレクティブが失敗しました(おそらく私が間違っているのでしょうか?)

私が考えることができる他のオプションは、単に .css ファイルの名前をプリプロセッサ言語拡張子に変更することです。適切なバージョニング/etc を可能にするために、ベンダーのものを私たちの手から離したいので、これには、ターゲット css ファイルをコピーしてターゲット言語拡張に名前を変更するビルド プロセスが含まれますが、これはエラーが発生しやすいです。Stylus はすぐに構文エラーに遭遇しましたが、Less でも同様に簡単にエラーが発生しました(すべての CSS が有効であるとは限らないため、Less. ほとんどは有効ですが、すべてではありません)

それで..この面で何か追加の考えはありますか?うまくいけば、私が見逃しているかもしれないオプションがありますか?おそらく、SCSS はこれをより適切に処理しますか?

現在、私が発見したことは可能/不可能です..唯一の安定した方法は、生のcssビットをcssコードに単純にコピーすることだと思います。ベンダー コードが変更された場合は、手動で更新する必要がありますが、少なくともベンダーのものを変更するリスクはありません。ベンダーが less/etc でサポートされていない CSS 構文を導入したため、突然ビルド プロセスが失敗します。 . それは良いとは言えません..しかし、起こりうる最悪の事態は、CSSがおかしいように見えることであり、更新する必要があります。

編集

次は SCSS を試してみます。どうなるか見てみましょう。このサイトでは、すべての CSS(3 のみ?) 構文が有効であると主張しています SCSS

edit2:わかりやすくするために。私の質問は、上記のシナリオを考えると、あなたならどうしますか? .css ファイルをインポートすることはできません(以下の注を参照してください!)。.css ファイルの名前を .less/.stylus に変更すると、エラーが発生しやすくなります。

!ノート!: それ以来、私はこの問題を回避するのではなく、この問題を修正するために何ができるかを確認するために、より少ないソースを掘り下げており、この問題に関する多数のサポート チケットに遭遇しました。主な議論は#issue 1185で行われているようですが、さらに重要なことに、この問題に対処している *(私が信じている) 変更ログをチェックしてください! 変更ログ 1.4.0 ベータ版

そうは言って@import (less) "file.css"も、ベータ版の状態のためにいくつかのバグがあるかもしれませんが、ここではおそらく勝者のシナリオです. わーい :)

4

3 に答える 3

1

あなたの最善の策は、@Lee Olayvarが言ったことか、LESSの新しい「:extend()」機能を使用することです。拡張機能を試したようですが、「SASS ディレクティブ」構文 (IMO は @ 規則の不適切な使用) を使用しましたが、LESS は CSS のような疑似セレクター構文を使用します。

.foo:extend(.bar) {}

そして、辛抱強く待っていれば (今後数日/数週間以内に)、あなたがやりたいことに最適な、LESS 独自の新機能が表示されるでしょう。外部の「サイレント」スタイルを拡張またはミックスできるようになります。つまり、「@import」と外部スタイルシートを使用できますが、スタイルを拡張するかミックスインとして使用しない限り、コンパイルされたコードにスタイルが表示されません。

私は Less.js のコア チームに所属しているので、他に質問がある場合や、さらにお役に立てることがあればお知らせください。

于 2013-03-17T18:16:05.773 に答える
0

まだベータ版ですが、新しく追加された@import (less) "file.css"構文はすべての CSS ファイルを適切に処理する必要があります。「公式」サポートにより、LESS を壊す独自の構文が修正されることも期待/仮定できます(ただし、「サポート」されていない可能性があります)

したがって、理論的にはこれが最良の選択肢です。このシナリオではまだ試していない SCSS を除きます。私のテストでは、スタイラスにはまだ問題があります。

詳細については、この問題またはこの変更ログを確認してください。

于 2013-03-16T21:11:52.150 に答える
0

インポートされたすべての.cssファイルは前処理されず、先頭lessに が追加されるだけのよう@importです。

CSS ファイルと LESS ファイルの両方をインポートできます。LESS ファイルのインポート ステートメントのみが処理され、CSS ファイルのインポート ステートメントはそのまま保持されます。CSS ファイルをインポートしたいが、LESS に処理させたくない場合は、拡張子 .css を使用してください。

ソース: http://lesscss.org/

あなたができる最善のことは、私が信じている名前の変更でしょう。

于 2013-03-16T18:06:49.953 に答える