2017-02-05 5 views
0

リダイレクトによってアプリケーションが初期化されます。アプリケーションURLにはクエリパラメータが添付されており、アプリケーションが読み込まれたときにそれらを取得して使用する必要があります。パラメータの1つは、アプリケーションの原色テーマを制御するために適用する必要がある16進値です。現在、ActiveRouteのqueryParamsを使用してパラメータを取得しています。アプリケーションの読み込み時に16進数で渡されたCSS値を動的に変更します。

他のSASSファイルでtheme.scssというファイルに色を適用しています。メインのアプリケーションコンポーネントにインポートされ、これらのスタイルがすべてスタイルタグのDOMに追加されています。次のように

私のスタイルは基本的に適用されます。

.sidebar-left-item.active { 
    background-color: $pirmary-light; 
} 

.btn-pirmary-light { 
    background-color: $pirmary-light; 
} 

変数$プライマリ光がそれに適用されるリダイレクトから入ってくる進値を必要とする変数です。だから本当にどんな色でもかまいません。

どうすればこのような動作を実現できますか?アドバイスありがとう。

更新:

ここでは、私がやりたいものです。 Angular 1では、以下のことをする指示文を作成しました。私はそれをindex.htmlのbodyタグに追加して、バインディングを処理し、有効なCSSルールをスタイルタグに残します。これにより、実行時にプロパティを適用することができました。

HTLM:

<dynamic-styles id="dynamic-styles" class="ng-cloak"> 

    #ad-container:before { 
    background-color: {{ design.bgAlph }}; 
    } 

</dynamic-styles> 

角度指令:

dynamicStyles = function($interpolate, $timeout) { 
    return { 
    restrict: 'AE', 
    link: function(scope, element) { 
     $timeout(function() { 
     var domElement = element[0]; 
     // General interpolation digest cycle will take part after the directive 
     // is executed. Separate text interpolation allows not to wait for it, 
     // and apply dynamic styles as soon as possible. 
     var interpolatedFn = $interpolate(goog.dom.getTextContent(
      domElement)); 
     goog.dom.setTextContent(domElement, ''); 
     var styleElement = goog.dom.createElement(goog.dom.TagName.STYLE); 
     goog.dom.setTextContent(styleElement, interpolatedFn(scope)); 
     goog.dom.appendChild(document.head, styleElement); 
     }); 
    } 
    }; 
}; 

答えて

0

SASS/SCSSはCSSにコンパイルするので、あなたが動的にCSSため、変数の内容を変更することができる方法はありませんされます変数はありません。私は今のところ考えることができる

しかし、可能な解決策は次のとおりです。

ケース1:
編集する手上のファイルを持っています。

ストア文字列としてこれらの変数、および変数を検索し、置き換えるために.replace()を使用/

出力にこの文字列値、その後、CSS

ケース2のコンパイルを開始:同じ.replace()検索を使用して
をし、 cssファイルを直接(可能であれば)置き換えてください!

上記のいずれかの手順を実行すると、ページの読み込みが開始されます。

または他のあなたの考え

Making Sass talk to JavaScript with JSON

SassyJSON: Talk to the browser!

Sharing Data Between Sass and JavaScript with JSON

+0

ためのいくつかの食品JavaScriptでどこか他の色のプロパティを宣言し、それをやっていないことでこれを行う方法がありますSCSSファイルには? – Aaron

+0

これを行うにはいくつかの方法があります。あなたの正確なシナリオを教えてください。私はそれに応じて解決策を教えてくれます! – Chandrakant

+0

角度1でこれを行うのに使用した方法でポストを更新しました。角度2でこれを行う方法を理解しようとしていますが、まだ成功していません。 – Aaron

関連する問題