目次
if()で何ができるかを探る
if()vs。コンテナスタイルのクエリ
if()でできる追加のこと(しかし、気付かないかもしれません)
if()and calc():数学が数学でない場合
閉じる考え
ホームページ ウェブフロントエンド CSSチュートリアル CSSでの突出if()機能もう少し:条件付き色のテーマ

CSSでの突出if()機能もう少し:条件付き色のテーマ

Jun 26, 2025 am 09:34 AM

CSSでの突出if()機能もう少し:条件付き色のテーマ

Chrome 137はif()css関数を出荷したため、他のブラウザが実装するのを見ることは完全に可能ですが、いつ正確に知るのは難しいです。いずれにせよ、場合、()が条件付きで値を使用できる場合は、クエリやその他の機能(メディアクエリやライトダーク()関数などで既に行うことができます。

Sunkanmiは、昨日、この機能の素晴らしい概要を教えてくれました。この記事では、実際の使用の可能性のある使用に陥り、もう少し難しくなりたいと思います。

要約すると、if()は、CSS変数の値に基づいてプロパティに値を条件付きで割り当てます。たとえば、-theme:の値に基づいて、色と背景のプロパティに異なる値を割り当てることができます。

  • - テーマ:「シャムロック」
    • 色:‌HSL(146 50%3%)
    • 背景:HSL(146 50%40%)
  • -Theme:それ以外のこと
    • 色:HSL(43 74%3%)
    • 背景:HSL(43 74%64%)
 :根 {
  / *「else」値に戻るために変更 */
  -Theme:「Shamrock」;

  体 {
    色:if(style( - テーマ: "shamrock"):hsl(146 50%3%); else:hsl(43 74%3%));
    背景:if(style( - テーマ: "shamrock"):hsl(146 50%40%); else:hsl(43 74%64%));
  }
}

私は構文(あまりにも多くのコロン、ブラケットなど)が好きではありませんが、このようにフォーマットすることができます(これは少し明確だと思います):

色:if(
  スタイル( - テーマ:「シャムロック」):HSL(146 50%3%);
  その他:HSL(43 74%3%)
);

if()でクレイジーな数のことをすることができるはずです。最終的にはそうなることを願っていますが、私はテストを行い、上記の構文が機能する唯一のものであることを知りました。通常のCSSプロパティの値(カスタムプロパティの代わりに)、HTML属性(ATTR()を使用して)、またはその他の値に基づいて条件を基づいていません。少なくとも今のところ、条件はカスタムプロパティ(CSS変数)の値に基づいている必要があります。

if()で何ができるかを探る

その最初の例から判断すると、テーマ(および設計システム全体)にif()を使用できることは明らかです。このためにLight-Dark()関数を利用することはできますが、テーマが厳密に明るく暗くない場合、または各テーマに3つ以上のテーマまたは明るいモードと暗いモードが必要な場合はどうなりますか?まあ、それは()を使用できる場合です。

まず、より多くのテーマ/その他の条件を作成しましょう。

 :根 {
  /*シャムロック|サフラン|アメジスト */
   - テーマ:「サフラン」; /* ...私はあなたを選びます! */

  体 {
    色:if(
      スタイル( - テーマ:「シャムロック」):HSL(146 50%3%);
      スタイル( - テーマ:「サフラン」):HSL(43 74%3%);
      スタイル( - テーマ:「アメジスト」):HSL(282 47%3%)
    );
    背景:if(
      スタイル( - テーマ:「シャムロック」):HSL(146 50%40%);
      スタイル( - テーマ:「サフラン」):HSL(43 74%64%);
      スタイル( - テーマ:「アメジスト」):HSL(282 47%56%)
    );
    遷移:300ms;
  }
}

本当にシンプルですが、いくつかの簡単なことがあります。第一に、今回は「他の条件」はありません。つまり、テーマがシャムロック、サフラン、またはアメジストでない場合、デフォルトのブラウザスタイルが使用されます。それ以外の場合、if()関数は、この場合のサフランのテーマである最初の真のステートメントの価値に解決します。第二に、遷移はすぐに動作します。以下のデモでは、-themeを切り替えるためのユーザーインターフェイスを追加しました。遷移のために、文字通り遷移:300ms:if()関数とともに次のようになりました。

注:オプションの選択など、テーマスワッピングがユーザー制御されている場合、実際にはif()はまったく必要ありません。デモの冒頭で使用したロジックを使用できます(:root:has(#shamrock:checked){ / * styles * /})。 Amit Sheenは、Smashing Magazineで優れたデモンストレーションを行っています。

ただし、コードをより保守可能にするために、色をCSS変数にスライドさせ、if()関数で使用し、if()関数をCSS変数にスライドさせることできます。

 /* 設定 */
:根 {
  /*シャムロック|サフラン|アメジスト */
  -Theme:「Shamrock」; /* ...私はあなたを選びます! */

  / *ベースカラー */
  -Shamrock:HSL(146 50%40%);
   - サフロン:HSL(43 74%64%);
  -AMETHYST:HSL(282 47%56%);

  / *ベースカラーですが、3%の軽さ */
  -Shamrock-Complementary:HSL(var( -  shamrock)HS 3%から);
   - サフロン - 修飾:HSL(var( - サフラン)HS 3%から);
  -Methyst-Complementary:HSL(var( -  amethyst)HS 3%);

   - バックグラウンド:if(
    スタイル( - テーマ: "Shamrock"):var( -  shamrock);
    スタイル( - テーマ:「サフラン」):var( - サフラン);
    スタイル( - テーマ:「アメジスト」):var( - アメジスト)
  );

   - 色:if(
    スタイル( - テーマ: "Shamrock"):var( -  shamrock-complementary);
    スタイル( - テーマ: "Saffron"):var( -  Saffron-Complementary);
    スタイル( - テーマ:「アメジスト」):var( - アメジスト要約)
  );

  /* 使用法 */
  体 {
    /* 1つの変数、すべてifs! */
    背景:var( - 背景);
    色:var( - 色);
    アクセントカラー:var( -  color);

    /*これを忘れることはできません! */
    遷移:300ms;
  }
}

if()関数内のCSS変数を使用するだけでなく、他の関数をネストすることもできます。以下の例では、そこにLight-Dark()を投げました。これは基本的に暗いモードの色を反転させます。

 - バックグラウンド:if(
  スタイル( - テーマ: "Shamrock"):Light-Dark(var( -  shamrock)、var( -  shamrock-complementary));
  スタイル( - テーマ: "Saffron"):Light-Dark(var( -  Saffron)、var( -  Saffron-Complementary));
  スタイル( - テーマ:「アメジスト」):ライトダーク(var( - アメジスト)、var( - アメジスト補完))
);

if()vs。コンテナスタイルのクエリ

コンテナスタイルのクエリを以前に使用したことがない場合、基本的にコンテナに特定のCSS変数があるかどうかを確認します(IF()関数とよく似ています)。これはまったく同じ例/デモですが、if()関数の代わりにコンテナスタイルのクエリを使用しています。

 :根 {
  /*シャムロック|サフラン|アメジスト */
  -Theme:「Shamrock」; /* ...私はあなたを選びます! */

  -Shamrock:HSL(146 50%40%);
   - サフロン:HSL(43 74%64%);
  -AMETHYST:HSL(282 47%56%);

  -Shamrock-Complementary:HSL(var( -  shamrock)HS 3%から);
   - サフロン - 修飾:HSL(var( - サフラン)HS 3%から);
  -Methyst-Complementary:HSL(var( -  amethyst)HS 3%);

  体 {
    /* ContainerがShamrockを選択しました! */
    @Containerスタイル( - テーマ: "Shamrock"){
       - バックグラウンド:ライトダーク(var( -  shamrock)、var( -  shamrock-complementary));
      -color:light-dark(var( -  shamrock-complementary)、var( -  shamrock));
    }

    @Containerスタイル( - テーマ:「サフラン」){
       - バックグラウンド:ライトダーク(var( - サフラン)、var( - サフラン補完));
      -color:light-dark(var( -  Saffron-Complementary)、var( -  Saffron));
    }

    @Containerスタイル( - テーマ:「アメジスト」){
       - バックグラウンド:ライトダーク(var( - アメジスト)、var( -  amethyst-complementary));
      -color:light-dark(var( -  amethyst-complementary)、var( -  amethyst));
    }

    背景:var( - 背景);
    色:var( - 色);
    アクセントカラー:var( -  color);
    遷移:300ms;
  }
}

ご覧のとおり、if()が条件付き値を促進する場合、コンテナスタイルのクエリは条件付きプロパティ値を促進します。それ以外は、本当に別の構文です。

if()でできる追加のこと(しかし、気付かないかもしれません)

CSS変数が存在するかどうかを確認します。

 / *変数が設定されていない場合にアイコンを非表示 */
.icon {
  表示:if(
    スタイル( - アイコンファミリー):インラインブロック;
    その他:なし
  );
}

より複雑な条件ステートメントを作成します:

 H1 {
  font-size:if(
    スタイル( - より大きな頭:true):xxx-large;
    スタイル( - テーマ: "themewithlargerheadings"):xxx-large
  );
}

2つのCSS変数が一致するかどうかを確認します。

 / *#s2が#s1と同じ背景を持っている場合、境界線を追加 */
#s2 {
  ボーダートップ:if(
    スタイル( -  s2バックグラウンド:var( -  s1-background)):薄い固体赤
  );
}

if()and calc():数学が数学でない場合

これはうまくいきません(誰かが私を特定するのを助けることができるかもしれません):

 div {
  / * 3/3 = 1 */
   -  calc:calc(3/3);
  / *青、if()が-calc */
  背景:if(style( -  calc:1):red; else:blue);
}

if()を計算するには、-calcを計算するには、最初に @propertyを使用してCSS変数を登録する必要があります。

 @property  -  calc {
  構文: "<number> ";
  初期値:0;
  継承:false;
}</number>

閉じる考え

私は構文に熱心ではなく、時には読みにくいことがありますが(特に1つのラインでフォーマットされている場合)、()がどのように進化するかを見て興奮しています。私はそれを通常のプロパティ(例:color:if(style(background:white):black:background:black):white);)で使用できるようにしたいと思います。

また、変数を登録せずにCalc()計算をその場で計算できれば、それは素晴らしいことです。

そうは言っても、私はまだ()が現在行っているwhatに非常に満足しており、さらにシンプルな設計システムを構築するのが待ちきれません。

以上がCSSでの突出if()機能もう少し:条件付き色のテーマの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

ユーザーエージェントスタイルシートとは何ですか? ユーザーエージェントスタイルシートとは何ですか? Jul 31, 2025 am 10:35 AM

ユーザーエージェントスタイルシートは、カスタムスタイルを追加していないHTML要素がまだ基本的な読み取り可能であることを確認するために、ブラウザーが自動的に適用するデフォルトのCSSスタイルです。それらはページの最初の外観に影響しますが、ブラウザには違いがあり、一貫性のないディスプレイにつながる可能性があります。開発者は、多くの場合、スタイルをリセットまたは標準化することにより、この問題を解決します。 Developer ToolsのComputeまたはStyleパネルを使用して、デフォルトのスタイルを表示します。一般的なカバレッジ操作には、内側および外側のマージンのクリア、リンクのアンダースコアの変更、タイトルサイズの調整、統一ボタンスタイルが含まれます。ユーザーエージェントスタイルを理解することで、クロスブラウザーの一貫性を改善し、正確なレイアウト制御を可能にすることができます。

CSSバックドロップフィルタープロパティを使用する方法は? CSSバックドロップフィルタープロパティを使用する方法は? Aug 02, 2025 pm 12:11 PM

バックドロップフィルターは、要素の背後にあるコンテンツに視覚効果を適用するために使用されます。 1。バックドロップフィルター:Blur(10px)およびその他の構文を使用して、つや消しガラス効果を実現します。 2。ぼやけ、明るさ、コントラストなどの複数のフィルター関数をサポートし、重ねることができます。 3.ガラスカードの設計でよく使用されており、要素が背景と重複するようにする必要があります。 4.最新のブラウザには優れたサポートがあり、@Supportsを使用してダウングレードソリューションを提供できます。 5。パフォーマンスを最適化するために、過度のぼかしと頻繁な再描画を避けてください。この属性は、要素の背後にコンテンツがある場合にのみ有効になります。

CSSダークモードのトグル例 CSSダークモードのトグル例 Jul 30, 2025 am 05:28 AM

まず、JavaScriptを使用して、ユーザーシステムの設定とローカルに保存されたテーマ設定を取得し、ページテーマを初期化します。 1. HTML構造には、トピックの切り替えをトリガーするボタンが含まれています。 2。CSSの使用:rootは明るいテーマ変数を定義し、.dark-modeクラスは暗いテーマ変数を定義し、これらの変数をvar()を介して適用します。 3. JavaScript検出は、カラーのスchemeを好み、LocalStorageを読み取り、最初のテーマを決定します。 4.ボタンをクリックするときにHTML要素のダークモードクラスを切り替え、現在の状態をLocalStorageに保存します。 5.すべての色の変更には、ユーザーを強化するために0.3秒の移行アニメーションが伴います

CSSでVWおよびVHユニットの使用方法 CSSでVWおよびVHユニットの使用方法 Aug 07, 2025 pm 11:44 PM

VWおよびVHユニットは、要素サイズをビューポートの幅と高さに関連付けることにより、レスポンシブな設計を実現します。 1VWはビューポート幅の1%に等しく、1VHはビューポートの高さの1%に等しくなります。フルスクリーン領域、レスポンシブフォント、弾性間隔で一般的に使用されています。 1.フルスクリーン領域で100VH以下100dVHを使用して、モバイルブラウザーアドレスバーの影響を避けます。 2。レスポンシブフォントは、5VWで制限され、クランプ(1.5REM、3VW、3REM)と組み合わせて、最小サイズと最大サイズを制限できます。 3。幅などの弾性間隔:80VW、マージン:5VHAUTO、パディング:2VH3VW、レイアウトを適応可能にすることができます。モバイルデバイスの互換性、アクセシビリティ、固定幅コンテンツの競合に注意してください。最初にDVHを使用することを優先することをお勧めします。

CSSアスペクト比プロパティとの使用方法は何ですか? CSSアスペクト比プロパティとの使用方法は何ですか? Aug 04, 2025 pm 04:38 PM

Theaspect-ratioCSSpropertydefinesthewidth-to-heightratioofanelement,ensuringconsistentproportionsinresponsivedesigns.1.Itisapplieddirectlytoelementslikeimages,videos,orcontainersusingsyntaxsuchasaspect-ratio:16/9.2.Commonusecasesincludemaintainingres

CSSの使用方法:空の擬似クラス? CSSの使用方法:空の擬似クラス? Aug 05, 2025 am 09:48 AM

The:emptypseudo-classselecteselementswithnochildrenorcontent、includingspacesorcomments、aonterlytrulyelementslikematchit;

CSSの要素をオーバーラップする方法は? CSSの要素をオーバーラップする方法は? Jul 30, 2025 am 05:43 AM

CSS要素のオーバーラップを実現するには、ポジショニングとz-index属性を使用する必要があります。 1。位置とZ-indexを使用します。要素を非静的な位置(絶対、相対など)に設定し、z-indexを介してスタッキング順序を制御すると、値が大きくなるほど値が高くなります。 2。一般的な位置決め方法:絶対は正確なレイアウトに使用されます。 3.実際の例:親コンテナの位置を設定することにより:相対、子要素の位置:絶対および異なるZインデックスでは、カードのオーバーラップ効果を実現できます。

CSSでバウンスアニメーションを作成する方法は? CSSでバウンスアニメーションを作成する方法は? Aug 02, 2025 am 05:44 AM

@keyframesbouncewith0%、100%attranslatey(0)および50%attranslatey(-20px)tocreateabasicbounce.2.applytheanimation to nelementusinginimation:Bounce0.6 sease-inutinfiniteforsmoth.

See all articles