亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

ホームページ ウェブフロントエンド CSSチュートリアル CSS 変數(shù)の驚くべき詳細(xì) - var() の使用と優(yōu)れた例

CSS 変數(shù)の驚くべき詳細(xì) - var() の使用と優(yōu)れた例

Nov 15, 2024 am 05:49 AM

これは CSS 変數(shù)に関する投稿の後半です。前半はここにあります。
この記事では、var() の詳細(xì)を見ていきます。そして 2 つの素晴らしい例:

  • CSS 変數(shù)を使用したアニメーション
  • システム設(shè)定検出による純粋な CSS ダークモード切り替え

The Surprising Details of CSS Variables - Using var() and Cool Examples

var() の使用

var() はカスタム プロパティ値 (CSS 変數(shù)) にアクセスします。その構(gòu)文は次のとおりです:

var( <custom-property-name>, <fallback-value>? )

基本ルール

  1. 最初のパラメータは CSS 変數(shù)である必要があります: var() はカスタム プロパティ名のみを受け入れるため、var(20px) などの直接値はエラーになります。

  2. var() はプロパティ名を置き換えることはできません: つまり、var(--prop-name): 20px; のようなものは記述できません。 var() はプロパティ値でのみ使用できるように制限されているためです。

.foo {
  margin: var(20px); /* Error, 20px is not a CSS variable */

  --prop-name: margin-top;
  var(--prop-name): 20px; /* Error, cannot use var() this way */
}

詳細(xì)な動(dòng)作

  1. var(--b, fallback_value) Fallbacks: 2 番目のパラメーターは、--b が無効な場合に使用されるフォールバック値として機(jī)能します。

  2. 空のフォールバックを使用した var(--c,) 構(gòu)文: フォールバック値が空のままの場合、構(gòu)文は有効なままであり、--c が無効な場合はデフォルトで空の値になります。 .

  3. 複數(shù)のカンマ: var(--d, var(--e), var(--f), var(--g)) では、最初のカンマ以降はすべてフォールバックとして扱われるため、--d が無効な場合、var() 式は var(--e)、var(--f)、var(--g) を 1 つのフォールバックとして評(píng)価し、結(jié)果を決定します。

  4. 完全な CSS トークンとしての
  5. var(): この関數(shù)は、20px と同様に、完全な CSS トークンとして機(jī)能します。したがって、var(--size)var(--unit) は 20px を作成せず、無効とみなされます。

  6. CSS 変數(shù)でのイニシャルの使用: CSS 変數(shù)へのイニシャルの割り當(dāng)ては、無効であることを意味します。初期値を値として表示するには、それをフォールバックに配置する必要があります。

  7. url() および var() 使用法: url() は完全な CSS トークンとして扱われるため、変數(shù)內(nèi)で完全な url() を定義する必要があります。

:root {
  /* 1. */
  margin: var(--b, 20px); /* Uses 20px if --b is invalid */

  /* 2. */
  padding: var(--c,) 20px; /* Falls back to 20px if --c is invalid */

  /* 3. */
  font-family: var(--fonts, "lucida grande", tahoma, Arial); /* Uses fallback font stack if --fonts is invalid */

  /* 4. */
  --text-size: 12;
  --text-unit: px;
  font-size: var(--text-size)var(--text-unit); /* Invalid, as it does not resolve to 12px */

  /* 5. */
  --initialized: initial;
  background: var(--initialized, initial); /* Results in background: initial */

  /* 6. */
  --invalid-url: "https://useme.medium.com";
  background: url(var(--invalid-url)); /* Invalid, as url() cannot parse var() */

  --valid-url: url(https://useme.medium.com);
  background: var(--valid-url); /* Correct usage */
}

変數(shù)の解像度と範(fàn)囲

CSS 変數(shù)は、他の CSS プロパティと同様に、スコープと詳細(xì)性に関して CSS 固有のルールに従います。これらの要素が CSS 変數(shù)にどのような影響を與えるかを理解することで、より正確な制御が可能になります。

グローバル変數(shù)とスコープ変數(shù):
:root で定義された変數(shù)はグローバルに適用されますが、セレクターで定義された変數(shù)のスコープはより制限されています。

   :root {
     --main-color: blue; /* Globally applied */
   }

   .container {
     --main-color: green; /* Scoped, applies only within .container */
   }

特異性による優(yōu)先度:
より高い特異性は、CSS 変數(shù)のより低い特異性をオーバーライドします。

var( <custom-property-name>, <fallback-value>? )
.foo {
  margin: var(20px); /* Error, 20px is not a CSS variable */

  --prop-name: margin-top;
  var(--prop-name): 20px; /* Error, cannot use var() this way */
}

この例では、.box が --green: 0 を再定義する前に --background が rgb(255, 255, 255) に解決されたため、.box の背景色は白のままです。

疑似クラスを使用した変數(shù)の再評(píng)価:
変數(shù)は、同じレベルで定義されている場合、疑似クラスの狀態(tài)に基づいて変化します。

:root {
  /* 1. */
  margin: var(--b, 20px); /* Uses 20px if --b is invalid */

  /* 2. */
  padding: var(--c,) 20px; /* Falls back to 20px if --c is invalid */

  /* 3. */
  font-family: var(--fonts, "lucida grande", tahoma, Arial); /* Uses fallback font stack if --fonts is invalid */

  /* 4. */
  --text-size: 12;
  --text-unit: px;
  font-size: var(--text-size)var(--text-unit); /* Invalid, as it does not resolve to 12px */

  /* 5. */
  --initialized: initial;
  background: var(--initialized, initial); /* Results in background: initial */

  /* 6. */
  --invalid-url: "https://useme.medium.com";
  background: url(var(--invalid-url)); /* Invalid, as url() cannot parse var() */

  --valid-url: url(https://useme.medium.com);
  background: var(--valid-url); /* Correct usage */
}

次に、CSS 変數(shù)の高度な使用例をいくつか見てみましょう:

使用例A:アニメーション

ブラウザはデータ型を推測できないため、CSS 変數(shù)を直接アニメーション化することはできません。これを解決するには、@property を使用して変數(shù)の型と初期値を定義し、ブラウザが変數(shù)をアニメーション化する方法を理解できるようにします。

   :root {
     --main-color: blue; /* Globally applied */
   }

   .container {
     --main-color: green; /* Scoped, applies only within .container */
   }
   :root {
     --main-color: blue;
   }

   .section {
     --main-color: green; /* Overrides :root definition */
   }

   .section p {
     color: var(--main-color); /* Shows green */
   }

   p {
     color: var(--main-color); /* Shows blue */
   }

システム環(huán)境設(shè)定に合わせた手動(dòng)切り替えの追加

デフォルトではシステム設(shè)定によってテーマが制御されますが、明るいテーマと暗いテーマを手動(dòng)で切り替えるオプションをユーザーに提供したい場合があります。これを?qū)g現(xiàn)するには、狀態(tài)を切り替えるチェックボックスを追加します。理想的には、チェックボックスが選択されている場合はダーク モードを示し、選択されていない場合はライト モードを示します。

ただし、特にダーク モードでは、CSS はシステム設(shè)定を自動(dòng)的に検出して、それに応じてチェックボックスの狀態(tài)を変更することはできません。この制限に対処するには、CSS 変數(shù)と :has() セレクターを使用して、チェックボックスの狀態(tài)に基づいてテーマの切り替えを制御できます。

これを完全に CSS で実現(xiàn)したいと考えていましたが、ユーザーのシステムはライト モードまたはダーク モードに設(shè)定されている可能性があるため、CSS だけではダーク モードのチェックボックスを自動(dòng)的にチェックすることはできません。

山を動(dòng)かすことができない場合は、道を設(shè)定します?;乇懿撙洗韦韦趣辘扦?

  • CSS を使用してトグル スイッチを作成します。視覚的な「オフ」?fàn)顟B(tài)はライト モードを表し、「オン」はダーク モードを表します。

The Surprising Details of CSS Variables - Using var() and Cool Examples
The Surprising Details of CSS Variables - Using var() and Cool Examples

  • システムがライトモードに設(shè)定されている場合: チェックボックスが選択されていない場合は、「オフ」?fàn)顟B(tài) (ライトモード) に相當(dāng)します。選択すると「ON」?fàn)顟B(tài)(ダークモード)に相當(dāng)します。

  • システムがダーク モードに設(shè)定されている場合: システム設(shè)定が反転されるため、視覚的な狀態(tài)も反転します。チェックボックスがオフの場合は「ON」(ダークモード)に相當(dāng)します。選択すると「OFF」(ライトモード)に対応します。

この効果を?qū)g現(xiàn)するには、次の 2 つの主要な要素が必要です。

最初: システム設(shè)定とチェックボックスの狀態(tài)に基づいて変化する変數(shù)

var( <custom-property-name>, <fallback-value>? )

2 番目: チェックされた狀態(tài)と ON/OFF 表現(xiàn)のシステム設(shè)定に基づく動(dòng)作の切り替え

ライト モードとダーク モードの CSS プロパティは、システム設(shè)定に応じて逆になります。

.foo {
  margin: var(20px); /* Error, 20px is not a CSS variable */

  --prop-name: margin-top;
  var(--prop-name): 20px; /* Error, cannot use var() this way */
}

CSS 変數(shù)のトリックを使用して変數(shù)の設(shè)定を簡素化する

ここでは、スペース切り替えテクニックを使用して変數(shù)設(shè)定を簡素化します。以下にコードを示し、その後にその動(dòng)作の説明を示します:

:root {
  /* 1. */
  margin: var(--b, 20px); /* Uses 20px if --b is invalid */

  /* 2. */
  padding: var(--c,) 20px; /* Falls back to 20px if --c is invalid */

  /* 3. */
  font-family: var(--fonts, "lucida grande", tahoma, Arial); /* Uses fallback font stack if --fonts is invalid */

  /* 4. */
  --text-size: 12;
  --text-unit: px;
  font-size: var(--text-size)var(--text-unit); /* Invalid, as it does not resolve to 12px */

  /* 5. */
  --initialized: initial;
  background: var(--initialized, initial); /* Results in background: initial */

  /* 6. */
  --invalid-url: "https://useme.medium.com";
  background: url(var(--invalid-url)); /* Invalid, as url() cannot parse var() */

  --valid-url: url(https://useme.medium.com);
  background: var(--valid-url); /* Correct usage */
}

ここで重要なのは、行 --background-color: var(--light, #fbfbfb) var(--dark, #121212); です。ここで、背景色は --light と --dark の値に依存し、プロパティ內(nèi)の if/else を効果的にシミュレートします。

どのように機(jī)能しますか? 最初は --light: var(--ON);および --ON: 初期。 --ON を無効な狀態(tài)にします。なお、--OFFは空文字列として設(shè)定されます。 var(--light, #fbfbfb) var(--dark, #121212) に適用すると、無効な --light 変數(shù)はデフォルトで #fbfbfb になり、有効な --dark 変數(shù) (空) は --background-color を許可します。 #fbfbfb と等しくなります。

他のすべてのカラー変數(shù)は同じロジックに従い、--light と --dark の狀態(tài)に基づいて調(diào)整されます。この方法では、各カラー変數(shù)を 1 回定義するだけで済みます。

狀態(tài)の切り替えが簡単になります。ダーク モードがアクティブな場合は、--light: var(--OFF); を使用します。および --dark: var(--ON);。ライトモードでは、それらを逆にします。すぐには直感的ではありませんが、この方法は現(xiàn)在 CSS で最も効果的です。より良い解決策がある場合は、検討する価値があります。

完全な例: CodePen の例


まとめ

CSS は進(jìn)化し続けており、2016 年以降、主要なブラウザで CSS 変數(shù)が利用できるようになりました。 @property や :has() などの新機(jī)能により、CSS 変數(shù)の柔軟性がさらに拡張されています。他の新しいツールと組み合わせることで、CSS 変數(shù)はさらに強(qiáng)力になってきています。たとえば、スクロール駆動(dòng)のアニメーションを強(qiáng)化して視覚的に動(dòng)的な効果を作成できるようになりました。他のプログラミング言語の変數(shù)と同様に、CSS に狀態(tài)を保存するための中心的な要素として、CSS 変數(shù)をしっかりと理解することは、將來的により洗練されたスタイルやデザインにとって非常に貴重であることがわかります。


參考文獻(xiàn)

  • https://stackoverflow.com/questions/42330075/is-there-a-way-to-interpolate-css-variables-with-url/42331003#42331003
  • https://kizu.dev/cyclic-toggles/#was-this-always-possible
  • https://dev.to/afif/what-no-one-told-you-about-css-variables-553o
  • https://hackernoon.com/cool-css-variable-tricks-to-try-uyu35e9
  • https://lea.verou.me/blog/2020/10/the-var-space-hack-to-toggle-multiple-values-with-one-custom-property/

以上がCSS 変數(shù)の驚くべき詳細(xì) - var() の使用と優(yōu)れた例の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホット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

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

ロードスピナーとアニメーションを作成するためのCSSチュートリアル ロードスピナーとアニメーションを作成するためのCSSチュートリアル Jul 07, 2025 am 12:07 AM

CSSロード回転子を作成するには3つの方法があります。1。境界の基本回転子を使用して、HTMLとCSSを介してシンプルなアニメーションを?qū)g現(xiàn)します。 2。複數(shù)のポイントのカスタム回転子を使用して、異なる遅延時(shí)間を経てジャンプ効果を?qū)g現(xiàn)します。 3.ボタンに回転子を追加し、JavaScriptを介してクラスを切り替えて、読み込みステータスを表示します。各アプローチは、ユーザーエクスペリエンスを向上させるために、色、サイズ、アクセシビリティ、パフォーマンスの最適化などのデザインの詳細(xì)の重要性を強(qiáng)調(diào)しています。

CSSブラウザの互換性の問題とプレフィックスに対処します CSSブラウザの互換性の問題とプレフィックスに対処します Jul 07, 2025 am 01:44 AM

CSSブラウザの互換性とプレフィックスの問題に対処するには、ブラウザサポートの違いを理解し、ベンダーのプレフィックスを合理的に使用する必要があります。 1. FlexBoxやグリッドのサポート、位置:粘著性の無効、アニメーションのパフォーマンスなどの一般的な問題を理解することは異なります。 2. CANIUSE確認(rèn)機(jī)能サポートステータスを確認(rèn)します。 3. -webkit-、-moz-、-ms-、-o-およびその他のメーカーのプレフィックスを正しく使用します。 4.自動(dòng)的にプレフィックスを追加するためにAutoprefixerを使用することをお?jiǎng)幛幛筏蓼埂?5. PostCSSをインストールし、ターゲットブラウザを指定するようにBrowserSlistを構(gòu)成します。 6.建設(shè)中の互換性を自動(dòng)的に処理します。 7. Modernizr検出機(jī)能は、古いプロジェクトに使用できます。 8.すべてのブラウザの一貫性を追求する必要はありません、

CSSクリップパスでカスタムシェイプを作成します CSSクリップパスでカスタムシェイプを作成します Jul 09, 2025 am 01:29 AM

CSSのクリップパス屬性を作物要素に使用して、寫真やSVGに依存することなく、三角形、円形ノッチ、ポリゴンなどのカスタム形狀になります。その利點(diǎn)には、次のものが含まれます。1。円、楕円、ポリゴンなどのさまざまな基本的な形狀をサポートします。 2。レスポンシブ調(diào)整とモバイル端子に適応可能。 3.アニメーションが簡単で、HoverまたはJavaScriptと組み合わせて動(dòng)的効果を?qū)g現(xiàn)できます。 4.レイアウトフローには影響せず、ディスプレイエリアのみを収穫します。一般的な使用法は、円形のクリップパス:円(50pxatcenter)および三角クリップパス:ポリゴン(50%0%、100 0%、0 0%)などです。知らせ

ディスプレイの違いは何ですか:インライン、ディスプレイ:ブロック、ディスプレイ:インラインブロック? ディスプレイの違いは何ですか:インライン、ディスプレイ:ブロック、ディスプレイ:インラインブロック? Jul 11, 2025 am 03:25 AM

Themaindifferencesbetweendisplay:インライン、ブロック、およびinline-blockinhtml/cssarelayoutbehavior、spaceusage、andstylingcontrol.1.inlineelementsflowwithtext、notstartonnewlines、nagrorewidth/height、height、andonlyhorizo??ntalpadddddddddddddddding

スタイリングは、CSSとは異なるリンクを訪問しました スタイリングは、CSSとは異なるリンクを訪問しました Jul 11, 2025 am 03:26 AM

アクセスしたリンクのスタイルを設(shè)定すると、特にコンテンツ集約型のWebサイトでユーザーエクスペリエンスを向上させることができ、ユーザーがより良いナビゲートを支援します。 1。CSSを使用してください:訪問した擬似クラスは、色の変化などの訪問されたリンクのスタイルを定義します。 2。ブラウザは、プライバシーの制限により、いくつかの屬性の変更のみを許可することに注意してください。 3.突然の狀態(tài)を避けるために、色の選択は全體的なスタイルと調(diào)整する必要があります。 4.モバイル端子はこの効果を表示しない場合があり、アイコン補(bǔ)助ロゴなどの他の視覚的なプロンプトと組み合わせることをお?jiǎng)幛幛筏蓼埂?/p>

CSSを使用して応答性のある畫像を作成する方法は? CSSを使用して応答性のある畫像を作成する方法は? Jul 15, 2025 am 01:10 AM

CSSを使用してレスポンシブ畫像を作成するには、主に次の方法で達(dá)成できます。1。最大幅を使用してください:100%と高さ:自動(dòng)化して、割合を維持しながら畫像がコンテナ幅に適応できるようにします。 2。HTMLのSRCSETおよびサイズの屬性を使用して、異なる畫面に適合した畫像ソースをインテリジェントにロードします。 3.オブジェクトフィットとオブジェクトポジションを使用して、畫像のトリミングとフォーカスディスプレイを制御します。一緒に、これらの方法により、畫像がさまざまなデバイスで明確かつ美しく表示されるようになります。

CSSユニットの分解:PX、EM、REM、VW、VH比較 CSSユニットの分解:PX、EM、REM、VW、VH比較 Jul 08, 2025 am 02:16 AM

CSSユニットの選択は、設(shè)計(jì)要件と応答性の要件に依存します。 1.PXは固定サイズに使用され、正確な制御に適していますが、弾力性の欠如に適しています。 2.EMは相対単位であり、親要素の影響によって簡単に引き起こされますが、REMはルート要素に基づいてより安定しており、グローバルなスケーリングに適しています。 3.VW/VHは、レスポンシブデザインに適したビューポートサイズに基づいていますが、極端な畫面の下でのパフォーマンスに注意を払う必要があります。 4.選択するときは、応答性の調(diào)整、要素階層関係、ビューポートの依存関係に基づいて決定する必要があります。合理的な使用は、レイアウトの柔軟性とメンテナンスを改善できます。

一般的なCSSブラウザの矛盾とは何ですか? 一般的なCSSブラウザの矛盾とは何ですか? Jul 26, 2025 am 07:04 AM

さまざまなブラウザのCSS解析に違いがあるため、主にデフォルトのスタイルの違い、ボックスモデルの計(jì)算方法、フレックスボックスおよびグリッドレイアウトサポートレベル、および特定のCSS屬性の一貫性のない動(dòng)作を含む一貫性のないディスプレイ効果が得られます。 1.デフォルトのスタイル処理は一貫性がありません。解決策は、cssresetまたはremormize.cssを使用して初期スタイルを統(tǒng)合することです。 2。IEの古いバージョンのボックスモデル計(jì)算方法は異なります。 Box-Sizing:Border-Boxを統(tǒng)一された方法で使用することをお?jiǎng)幛幛筏蓼埂?3. FlexBoxとグリッドは、エッジの場合や古いバージョンでは異なる機(jī)能を示します。より多くのテストを行い、Autoprefixerを使用します。 4.一部のCSS屬性の動(dòng)作は一貫性がありません。 Caniuseは相談して格下げする必要があります。

See all articles