2016-11-25 15 views
0

class1class2の2つのクラスを用意しましょう。また、私はid="responsive_element"の要素を持っています。スクリーンサイズが768px未満の場合はclass1を割り当て、そうでない場合はclass2を割り当てます。異なる画面サイズで異なるクラスをCSSで割り当てる

私のようなレスで行うことができます。

@media screen and (max-width:768px){ 
    #responsive_element{ 
    .class1() 
    } 
} 

@media screen and (min-width:769px){ 
    #responsive_element{ 
    .class2() 
    } 
} 

これを達成するための任意の「CSSのみ」方法はありますか?

編集:私は十分に私の質問を説明することができなかったと思う。私はそれほどコンパイルすることなくこれを行うことができますが、cssファイルのサイズは長いクラス定義のために大きくなり、あまりにも多く使います。私は単に要素のクラスを変更するだけでそれを処理したいです。

+0

私はこの問題に間違った方法で近づいていると思います。画面サイズに基づいてクラスを割り当てません。クラスを割り当て、各クラスが画面サイズに基づいて何を行うかを定義します。 –

+0

@ JordiNebotいいえ、2つのクラスが既に定義されていて、他の要素で使用されていますが、画面サイズとは関係ありません。 '.class1 {color:red;} .class2 {color:blue;}'と同様です。しかし私は、私の要素が大きいスクリーンや小さいスクリーンでそれらの1つを使うことを望みます。私は何度も何度も同じことを書かずにそれをしたい。 –

+0

少ない生産量を使用する目的の方法は、LessスタイルシートをCSSに変換することです。だから、あなたが「同じことを何度も書かずに」このことをしたいと言うと、Less for *は*のようになります。プログラマーとして、最終的な制作CSSでは、CSSの固有の制限のために何度も何度も書き直さなくても、同じことを繰り返し書く必要はありません。 –

答えて

0

.class1().class2()の呼び出しを除いて、Lessコードは既にCSSです。具体的には、画面サイズに基づいてスタイリングを適用する@mediaクエリは、あまり具体的ではありません。したがって、たとえば、次のように純粋なCSSです:

@media screen and (max-width:768px){ 
    #responsive_element{ 
    color: blue; 
    } 
} 

@media screen and (min-width:769px){ 
    #responsive_element{ 
    color: red; 
    } 
} 

あなたがCSSにあなたのレスを変換したい場合は、すべてを行う必要が.class1()の代わりに.class1.class2からCSSコードをコピーして.class2()ですコール。実際、LessはCSSのコンバーターとして実装されているので、変換を行うにはLESS2CSSでオンラインコンバータを使うことができます。

プレーンなCSSにこれらのクエリを書き込んで、コピーしないで既存の.class1.class2スタイル定義を使用する方法があるかどうかを尋ねる場合は、答えは「いいえ」です。 Lessが発明された主な理由は、CSSがこのようなスタイル情報の再利用をサポートしていないためです。

0

もし意味があるのであれば、画面サイズの変更に応じて要素のクラスを変更するためにCSSを単独で使用する方法があります(文字通り、要素のHTML「クラス」属性に新しいクラス名を追加または削除する)その要素に対して有効になります)、答えは単に「いいえ、CSSだけではできません」です。

(lessはこれを行うこともできません。元のLessコードでは、生成されたCSSを見れば分かるように、要素のclass属性は変更されません。

あなたが望むような方法で要素のクラスを変更する唯一の方法は、DOMに変更を加えることです(JavaScriptを使って行うことはできますが、CSSだけではできません)。

関連する問題