検索

ホームページ  >  に質問  >  本文

「クラシック」CSS ルールを同じスタイルを含むメディア クエリとマージすることはできますか?

同じ要素に適用され、同じスタイルを含む 2 つのルールを組み合わせることができるかどうか疑問に思っていますが、ルールの 1 つがメディア クエリ内にあり、次のような結果が得られます。

リーリー

ルールは次のとおりです:

リーリー リーリー

prefer-color-scheme

が暗い場合、または #dark-theme がチェックされている場合、ここの .content は黒の背景と白の色になります。 。 どちらのルールも同じスタイルを適用します。

これらのルールを組み合わせる方法はありますか?

P粉129168206P粉129168206296日前470

全員に返信(2)返信します

  • P粉163951336

    P粉1639513362024-02-04 17:54:23

    :root {
      --dark-color: white;
      --dark-bg: black;
      --light-color: black;
      --light-bg: white;
    }
    
    @media (prefers-color-scheme: dark) {
      #default-theme:checked~.content {
        color: var(--dark-color);
        background-color: var(--dark-bg);
      }
    }
    #dark-theme:checked~.content {
      color: var(--dark-color);
      background-color: var(--dark-bg);
    }
    
    @media (prefers-color-scheme: light) {
      #default-theme:checked~.content {
        color: var(--light-color);
        background-color: var(--light-bg);
      }
    }
    #light-theme:checked~.content {
      color: var(--light-color);
      background-color: var(--light-bg);
    }
    
    
    
    
    
    
    
    
    Test

    返事
    0
  • P粉543344381

    P粉5433443812024-02-04 09:45:35

    ネイティブ CSS を使用してこれを行うことはできません。ただし、問題が記述量の減少に関連している場合は、CSS コンパイラーがすでにそのニーズに対応しています。 試してみたい場合は、Sass で書かれた簡単なコードを次に示します。

    まず、コンテンツを @mixin でラップします。選択したテーマに基づいて変更する変数を使用してクラスを保存します。

    リーリー

    その後、それを別のミックスインで使用してテーマ スタイルを定義できます:

    リーリー

    最後に、変数を変更するだけで、これを使用して必要なだけテーマを作成できます:

    リーリー

    元のコードと同じ出力を見たい場合は、ここで試してください

    完全なコードをコピーして貼り付けて、変換を確認します:

    リーリー

    返事
    0
  • キャンセル返事