2009-04-02 14 views
0

可能性の重複:
Avoiding repeated constants in CSSCSSクラスを変更しますか?

私は、クラス内のクラスを含める - ソートのクラスをvariablizingのように - 私は一度何かを定義し、シート全体でそれを使用できるように、 。私が色を変えると、すべてが変わります。

.myFontColor{color:blue;} 
.myTitle{font-size:large; myFontColor} 
.myHeader{font-weight:bold; myFontColor} 

これを行うには唯一の方法があります。定義にすべてのクラス名を含めるには、その色を参照するシートに20または30の項目がある場合、それは本当に醜いです。

.myFontColor, .myTitle, .myHeader{color:blue;} 
.myTitle{font-size:large;} 
.myHeader{font-weight:bold;} 

また、要素を作成するときに各クラスをリストすることも少し難解です。

<div class="myFontColor myTitle myHeader"> 

ありがとうございました。

答えて

2

私が考えることができる唯一の方法は、javascriptを使用して属性を動的に割り当てることです。たとえば、あなたが(例えばcolor, font-size, font-weightなど)を構成するすべての属性のリストと、あなたは(そのようなど.myHeadermyTitle、など)設定できるようにしたいすべてのクラスのリストを作ります。そして、このような何かを:

for (x=0; x< cssClasses.length; x++) 
{ 
    addAttribs(cssClasses[x]); 
} 

function addAttribs(class) 
{ 
    $("." + class).css("color","#444"); 
    $("." + class).css("font-weight","bold"); 
    //And so on.. 
} 

これはあなたが得ることができる最も近いとすることができ、あなたがそれを変更した場合、それは他のどこでも更新されますので、それは、1つの関数に格納されているすべての属性の利点を持っています。

編集:ところで、私はaddAttribs()の機能の中でJqueryを使用して、CSSの属性に簡単にアクセスして設定します。

+0

私はこれを考えましたが、スタイルモデルに組み込まれた何かを必死に望んでいました...:| |例は素晴らしいですが、私はそれを使用するかもしれません。 – Praesagus

+0

私は残念ながら、これはあなたが得ることができる最も近いかもしれないと思います。あなたは 'styles.js'のような独自のjavascriptファイルに関数を置くことで改善することができます –

+0

これは最高です。 JSでvarsのリストを作成し、CSSページの特定のクラス属性をそのページに置き換えることができます。 以下のコード方法を使用すると効果的ですが、前述したように、ページ全体で書式が変更され、組織が難しくなります。 – Praesagus

0

現時点では、CSSでは変数は(必要に応じて)使用できません。これまでのようにカスケードを使用し、すべてのクラスを定義に含める必要があります。

1

あなたは要素を定義する際に、いくつかのクラスを記述することができます、あなたがSassを見てみたいことがあり

<div class="blue w210pt"> 
</div> 
<p class="green w210pt"> 
</p> 

<style> 
.green{color:green;} 
.blue{color:blue;} 
.w210pt{width:210px;} 
</style> 
+0

あなたが答える有効ですが、あまりにもしばらく厄介傾向にあります。これは私が今やることであり、より良い方法を望んでいたことです。私はこれに関する私の質問を編集しました。応答していただきありがとうございます。 – Praesagus

+0

これはCSSの貧弱な例です。クラスはスタイルではなく要素を記述する必要があります。もしあなたがこれをやろうとしたら、あなたはそれをハードコードするかもしれません。 –

+0

私はそれがベストで最も美しい解決策ではないことに同意しますが、私は小規模なウェブサイトでこの方法を成功させています。私のスピードと生産性を高め、クライアントを幸せにし、銀行口座を太ってしまった。 – chosta

0

をあなたは少し異なる構文を使用しますが、のようないくつかの知性が可能になりますRailsのコミュニティから何かこの。 Ruby/Railsのことをやっていないなら、コマンドラインのプリプロセッサとしてSassを使ってSassファイルをCSSに変換することができます。

1

あなたが疑われるとして、あなたは直接的な方法で記述するものを行うことはできません - あなたが望む結果を得るためにCSSのカスケード側面を使用する必要があります。しかし、あなたはCSSをある程度悪用しているかもしれないと思います。あなたはセマンティクスを定義し、それらのセマンティクスにごプレゼンテーションを接続する必要があります。たとえば、.myFontColorのようなクラスを見ると、セマンティクスを表現するために実際にクラスを使用していないことが大きなヒントになります(これは例ではおそらく単純です)。

+0

はい私のクラス名はイラストレーションのためのものです。 :) – Praesagus

0

宣言を繰り返さないための最も簡単な解決策は、あなたが知っているように、いくつかのクラスを組み合わせることです。

はたぶん、あなたはcss variablesを探していますか?

1

また、PHPなどのサーバー側のソリューションを使用することもできます。

phpを使用すると、スタイルシートをphpファイルとして保存し、要求されるたびに「実行」されます。すべての変数を一番上に置き、いつでも必要な場所にエコーすることができます。

ブラウザには通常のスタイルシートが表示されますが、サーバーには余分な作業が必要です。そして、実際にスタイルシートの可読性を向上させるものではありません。

非常に洗練されたソリューションではありませんが、機能します。

+0

これはアプリケーションによって異なりますが、PHPスタイルシートを使用して一連の静的CSSファイルを生成し、運用サイトで使用する方法があります。変数を変更して出力CSSを保存することで、新しいバージョンを作るのは簡単です。サーバーはPHPのヒットを受けません。 –

+0

本当ですが、これは生産サイトのスタイルシートが修正されている場合にのみ可能です。 OPはそうは言っていませんが、質問を読んだ後で私の最初の考えはテーマでした(それは言葉ですか?)。 – jeroen

+0

実際これは非常にエレガントで柔軟性があります。私はそれをテストし、それが標準のシートよりもうまく動作するかどうかを見ます。 – Praesagus

0

一つの解決策は、PHPのスタイルシートを使用することです:

<? 
header('Content-type: text/css'); 

$color1 = '#123456'; 

echo <<<EOS 

.myTitle {color: $color1} 

EOS; 
?> 
関連する問題