12

イントロ:

asp.netmvc環境でLESSを試しています。

私はサーバー側の処理にドットレスを使用しています(特にプロジェクト全体の公開後にクライアント側の処理を使用したくありません)。

物事(時間帯など)によって配色が異なるデザインを適用する必要があります。

この場合、パラメーター化されたcssを設計し、すべてのテーマのファイルの先頭で10個の変数のように変更するだけで、非常に強力であるとは感じられませんでした。

問題:

しかし、私はどういうわけか外部パラメータから色のテーマを変更する必要があります。

アイデア:

最初は、style.less?theme = fuschiaのようなURLパラメーターが良いと思いましたが、このようなものを解析する方法が見つかりませんでした。

次に、宣言された色変数のみで構成される非常に短いblue.less、green.less、orange.lessを作成し、それらすべてにmain.lessを含めることが固溶体になると思いました。

2番目の解決策を試す機会はありませんでしたが、これを行うための最も堅牢な方法についてアドバイスを求める良い機会になると思いました。

ここでも問題は、lessファイル内のいくつかのものを外部から制御したいということです。

4

2 に答える 2

24

はい、できます(まさにその理由でその機能を実装したため)。

Dotlessは、querystringパラメーターを介して外部からのパラメーターをサポートします。

<link rel="stylesheet" href="style.less?foo=bar" />

次の使用量を減らします。

@foo = bar;

パラメータインジェクションコードは非常に単純です。通常のlessファイルの前に変数宣言を追加するだけなので、querystringパラメーターとして提供されるものはすべて上記の構文に従います。

問題のコードは非常に単純です:https ://github.com/dotless/dotless/blob/master/src/dotless.Core/Engine/ParameterDecorator.cs

于 2012-02-12T20:48:41.807 に答える
5

AFAIK、コンパイルを行うために使用するdotnetlessのパラメーターを渡すことはできません。

提案として、異なるlessファイルを呼び出すだけではどうでしょうか。これは、Viewbagプロパティを使用することでかなり簡単に実行できます。

異なるlessを作成するには、最初に、色の各セットを含むlessファイルを作成します。次に、ベースのcssファイルをインポートします。dotnetlessは、親ファイルの色の定義をベースファイルの使用法とマージします。だからあなたは次のようなものを持っています-

@baseGray: #ddd;
@baseGrayDark: darken(@baseGray, 15%);
@baseGrayLight: lighten(@baseGray, 10%);
@import "baseCss.less";

私はこれをMVC3プロジェクトでテストしたところ、動作します。

于 2012-02-12T17:06:24.113 に答える