2012-02-14 22 views
2
私は、単一の、中央の場所に、言いたい

複数のCssResource CSSファイルで同じ@defを使用するにはどうすればよいですか?

@def mainColor = #f00; 

をしてから、私の他のcssファイルのすべてで、それを再定義することなく、mainColorを参照してください。その後、私は一度の場所でmainColorを変更すると、私のアプリ全体の色が変わります。

これまで考えることのできる最良の方法は、すべてのCssResource宣言に2つの@Sourceファイルを含め、常にグローバルなdefファイルを含めることです。他の方法はありますか?

+0

を使用することができますか? – checketts

+1

Danny Kirchmeierの答えにコメントとして追加しました。基本的に同じテクニックで、構文とコンテキストが異なります。 –

答えて

5

私の知る限りでは、これはあなたの唯一のオプションです:

のstyle.css

@def mainColor #f00; 

* .ui.xml

<ui:style src="../../../styles/style.css"> 
    .widget{ color: mainColor; } 
</ui:style> 

この方法の欠点相対パスです。各ui.xmlには異なるsrcパスが必要です。あなたはConstants.javaファイル(代わりのCSS)、 を使用して、心をいけない場合

また、あなたは、比較のために別の「答え」として独自の@Source例を追加してもらえ@eval

<ui:style> 
    @eval mainColor com.myproject.client.Styles.INSTANCE.mainColor(); 
    .widget{ color: mainColor; } 
</ui:style>  
+0

Oof。提案していただきありがとうございます。これらはかなり粗いです;) –

+2

@Thomas Broyerはhttps://groups.google.com/forum/#!msg/google-web-toolkit/c8XdDoxDNZA/dWtkdAENYXMJでこのメソッドを使用しています。 uibindersの外で、彼は複数の@Sourceテクニックについて言及しました: '@Source({" path/to/definitions.css "、" foo.css "})FooStyles foo;' –

関連する問題