2017-03-14 6 views
1

特定のクラスに基づいて異なるサスファイル(テーマ)を含めるにはどうすればいいですか?cssクラスに基づいて異なるsassファイルを実行するにはどうすればよいですか?

今、私たちはすべてがそのスタイリングのためのユニークなCSSクラス(.app1 {選択図】図色:赤;})が3つのアプリを得た

は、今私はSASSのフレームワークが含まれており、すべてのCSS/SASSを区切るしたいですアプリラベルごとにこれを達成するためにbase.scssを定義します。 .app3その後executrが 他の空

誰でもapp3.scss場合.app2はその後、他のapp2.scss を実行した場合.app1はその後、他のapp1.scss を実行した場合

:このSCSSでは、我々はこれを到達したいですアイディア?

+0

これがあなたの質問に答えるかどうかわからないので、これをコメントとして記入します。私はあなたのアプリがどのように構築されているのか分からないが、条件付きでアイテムを読み込むことができると思う唯一の方法は、特定のファイルに対して特定の機能を読み込むことができるWebpackのようなものを使うことです。 – zik

+0

Sassはプリコンパイルされているので、ブラウザが見ているHTMLに基づいて出力するCSSを動的に選択することはできません。あるいは、別の言い方をすると、 '.app'クラスがあなたのページにある時に、SassはCSSにコンパイルされ、あなたのページにリンクされています。 あなたの目標が必要なものだけを含めることによってファイルサイズを制限することである場合、JavaScriptソリューションはHTMLコンテンツを見て、CSSを動的に含めることができます。しかし、ファイルサイズに関心がなければ、Sassクラス( '.app'のような)の中でSassファイル*を実際にインポートすることができます。 –

+0

SASSのif文を使用してテーマ間で選択できます。これはあなたが始めるのを助けるかもしれません。 https://www.youtube.com/watch?v=AaVxSc11t3Y – Brad

答えて

0

名前空間を使用し、それをクラスとしてルート要素に適用します。適切な名前空間にSASSステートメントをラップします。それらを別々のファイル(部分)に分割し、コンパイル時にそれらを結合することができます。 _app1.scss_app2.scssなどに

// in file _app1.scss 
.app1 { 
    // rules you want applied in the "app1" case 
} 

// in file _app2.scss 
.app2 { 
    // rules you want applied in the "app2" case 
} 

... 

あなたの別々のファイルであれば、その後base.scss含まれます:

@import 'app1'; 
@import 'app2'; 
... 

を使用すると、コンパイル時にこれが1に部分的にファイルを兼ね備えています。 (あなたはそれらを分ける必要はありませんが、それを行うのがよりクリーンかもしれません)。のような何かをして、app1名前空間を使用し、_app1.scssのルールだけが適用されます。

関連する問題