国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
カスタムプロパティについてすぐに學(xué)びます
変數(shù)「スタック」を構(gòu)築する
「スコープ」を定義する
近接範(fàn)囲
カスタムプロパティと近接性
コンポーネントの所有権
「ソース」を定義する
ミックスしてマッチします
ホームページ ウェブフロントエンド CSSチュートリアル カスタムプロパティ「スタック」を使用して、カスケードを飼いならします

カスタムプロパティ「スタック」を使用して、カスケードを飼いならします

Apr 05, 2025 am 09:49 AM

CSSカスタムプロパティ:カスケードと継承を制御する新しい方法

カスタムプロパテ?!弗攻骏氓工蚴褂盲筏啤ⅴ攻暴`ドを飼いならします

1994年のCSSの誕生以來、カスケードと相続は、Webページでの設(shè)計(jì)方法を定義しています。どちらも強(qiáng)力な機(jī)能ですが、開発者として、それらがどのように相互作用するかを非常に制御しています。セレクターの特異性とソースコードの順序は、最小限の「階層的」制御を提供しますが、ニュアンスがありません。現(xiàn)在、CSSカスタムプロパティにより、カスケードと継承を新しい方法で管理および制御できます。

この記事では、カスタムプロパティ「スタック」を使用して、スコープされたコンポーネントスタイルからより明示的な意図階層まで、カスケードのいくつかの一般的な問題を解決する方法を示します。

カスタムプロパティについてすぐに學(xué)びます

ブラウザは、ベンダープレフィックス(-webkit-または-moz-など)を使用して新しいプロパティを同じ方法で定義し、「空」(プレフィックス」を使用して獨(dú)自のカスタムプロパティを定義できます。 SASSやJavaScriptの変數(shù)と同様に、それらを使用して値を名前、保存、および取得することができますが、CSSの他のプロパティと同様に、 CSCADINGでDOMで継承されます。

 <code>/* 定義自定義屬性*/ html { --brand-color: rebeccapurple; }</code>

これらのキャプチャされた値にアクセスするには、var()関數(shù)を使用します。 2つの部分があります。最初にカスタムプロパティの名前、次にプロパティが定義されていない場合のフォールバック値:

 <code>button { /* 如果可用,則使用--brand-color,否則回退到deeppink */ background: var(--brand-color, deeppink); }</code>

これは、古いブラウザからのサポートフォールバックではありません。ブラウザがカスタムプロパティを理解していない場合、var()宣言全體を無視します。代わりに、これは、フォントが使用できない場合にフォールバックフォントファミリーを定義するフォントスタックと同様に、未定義の変數(shù)を処理する組み込みの方法です。フォールバック値を提供しない場合、デフォルトは設(shè)定されていません。

変數(shù)「スタック」を構(gòu)築する

フォールバック値を定義するこの機(jī)能は、フォントファミリープロパティで使用される「フォントスタック」に似ています。最初のシリーズが利用できない場合、2番目のシリーズが使用されます。 var()関數(shù)は単一のフォールバック値のみを受け入れますが、var()関數(shù)をネストして、あらゆるサイズのカスタム屬性フォールバック「スタック」を作成できます。

 <code>button { /* 嘗試Consolas,然后是Menlo,然后是Monaco,最后是monospace */ font-family: Consolas, Menlo, Monaco, monospace; /* 嘗試--state,然后是--button-color,然后是--brand-color,最后是deeppink */ background: var(--state, var(--button-color, var(--brand-color, deeppink))); }</code>

スタッキングプロパティ用のネ??ストされた構(gòu)文がかさばっているように見える場合は、SASSなどのプリプロセッサを使用してよりコンパクトにすることができます。

フォントスタックや階層的な背景畫像など、コンマを含むフォールバック値をサポートするには、単一のフォールバック値制限が必要です。

 <code>html { /* 后備值為"Helvetica, Arial, sans-serif" */ font-family: var(--my-font, Helvetica, Arial, sans-serif); }</code>

「スコープ」を定義する

CSSセレクターを使用すると、特定のネストされたコンテキストのページまたは要素のどこにでもHTML DOMツリーとスタイル要素に飛び込むことができます。

 <code>/* 所有鏈接*/ a { color: slateblue; } /* section 內(nèi)的鏈接*/ section a { color: rebeccapurple; } /* article 內(nèi)的鏈接*/ article a { color: deeppink; }</code>

これは便利ですが、「モジュラー」オブジェクト指向またはコンポーネント駆動(dòng)型スタイルの現(xiàn)実をキャプチャしません。さまざまな構(gòu)成にネストされている多くの記事と類似物があります。どのコンテキストまたはスコープが重複するときに優(yōu)先されるべきかを明確にする方法が必要です。

近接範(fàn)囲

.lightテーマとダークテーマがあるとします。ルート要素でこれらのクラスを使用して、ページ全體のデフォルト値を定義できますが、さまざまな方法でネストされた特定のコンポーネントに適用することもできます。

カラーパターンクラスの1つを適用するたびに、背景と色のプロパティがリセットされ、ネストされたタイトルと段落で継承されます。私たちの主な文脈では、色は.lightクラスから継承され、ネストされたタイトルと段落は.darkクラスから継承されます。継承は直接血統(tǒng)に基づいているため、定義された値を持つ最も近い祖先が優(yōu)先されます。私たちはそれを近接と呼びます。

近接性は継承にとって重要ですが、特異性に依存するセレクターには影響しません。內(nèi)側(cè)の暗い容器や明るい容器で何かをスタイリングしたい場合、これは問題になります。

ここでは、明るいボタンのバリエーションを定義しようとします。ライトモードのボタンは、白いテキストが付いたRebeccapurpleである必要があります。明るいコンテキストと暗いコンテキストに基づいてボタンを直接選択しますが、これは機(jī)能しません。

一部のボタンは両方のコンテキストにあり、.lightと.darkの祖先があります。この場合、私たちが望むのは、最近のトピックに引き継ぐこと(近接動(dòng)作を継承する)ですが、最初のセレクター(カスケードの動(dòng)作)を上書きする2番目のセレクターです。これら2つのセレクターは同じ特異性を持っているため、ソースコードの順序が勝者を決定します。

カスタムプロパティと近接性

トピックからこれらのプロパティを継承する方法が必要ですが、ボタンなどの特定の子要素にのみ適用します。カスタムプロパティがこれを可能にします!明るい容器と暗い容器の値を定義できますが、ボタンなどのネストされた要素に継承された値のみを使用できます。

まず、カスタムプロパティを使用するボタンを設(shè)定し、それらのプロパティが未定義の場合にフォールバックの「デフォルト」値を使用します。

 <code>button { background: var(--btn-color, rebeccapurple); color: var(--btn-contrast, white); }</code>

これで、これらの値をコンテキストに基づいて設(shè)定できます。それらは、近接性と継承に応じて、対応する祖先に範(fàn)囲を付けます。

 <code>.dark { --btn-color: plum; --btn-contrast: black; } .light { --btn-color: rebeccapurple; --btn-contrast: white; }</code>

追加のボーナスとして、全體のコードを使用するコードが少なく、統(tǒng)一ボタン定義:

これは、ボタンコンポーネントに利用可能なパラメーターを作成するためのAPIだと思います。 Sara SoueidanとLea Verouの両方が、最近の記事でこれを非常によくカバーしています。

コンポーネントの所有権

範(fàn)囲を定義するには近接性だけでは不十分な場合があります。 JavaScriptフレームワークが「スコープスタイル」を生成すると、特定のオブジェクト要素の所有権を確立しています。タブレイアウトコンポーネントにはタブ自體がありますが、各タブの背後にコンテンツがありません。これは、BEMコンベンションが複雑な.block__elementクラス名でキャプチャしようとするものでもあります。

ニコール?サリバンは、この問題について議論するために、2011年に「ドーナツスコープ」という用語を作り出しました。彼女はこの問題についてのアイデアを更新したと思いますが、根本的な問題は変わっていません。セレクターと特異性は、幅広いパターンの上に詳細(xì)なスタイルを構(gòu)築する方法を説明するのに最適ですが、所有権の明確な感覚を伝えません。

この問題を解決するために、カスタムプロパティスタックを使用できます。最初に、デフォルトの色に使用される要素に「グローバル」プロパティを作成します。

 <code>html { --background--global: white; --color--global: black; --btn-color--global: rebeccapurple; --btn-contrast--global: white; }</code>

これで、參照したい場所ならどこでも使用できます。 Data-Themeプロパティを使用して、前景と背景の色を適用します。グローバルな値がデフォルトのフォールバック値を提供することを望んでいますが、特定のトピックでそれを上書きするオプションも望んでいます。これは、「スタック」が登場する場所です。

 <code>[data-theme] { /* 如果沒有組件值,則使用全局值*/ background: var(--background--component, var(--background--global)); color: var(--color--component, var(--color--global)); }</code>

これで、 * - コンポーネントプロパティをグローバルプロパティの逆に設(shè)定することにより、逆コンポーネントを定義できます。

 <code>[data-theme='invert'] { --background--component: var(--color--global); --color--component: var(--background--global); }</code>

しかし、これらの設(shè)定が所有権ドーナツから継承することを望んでいないため、これらの値を各トピックの初期(未定義)にリセットします。各トピックがオーバーライドできるデフォルト値を提供するように、より低い特異性または以前のソースコード順序でこれを行う必要があります。

 <code>[data-theme] { --background--component: initial; --color--component: initial; }</code>

最初のキーワードは、カスタムプロパティに使用される場合に特別な意味を持ち、保証された無値狀態(tài)に戻します。これは、背景を設(shè)定するために渡されないことを意味します。初期または色:初期、カスタムプロパティは未定義になり、スタックの次の値、つまりグローバル設(shè)定に戻ります。

ボタンでも同じことをしてから、各コンポーネントにデータテーマが適用されることを確認(rèn)できます。特定のトピックが與えられない場合、各コンポーネントはデフォルトのグローバルトピックになります。

「ソース」を定義する

CSSカスケードは、同じプロパティで複數(shù)の値を定義するときに優(yōu)先されるべき値を決定するために使用される一連のフィルタリングレイヤーです。ほとんどの場合、特定のレイヤー、またはソースコードシーケンスに基づいた最終的な階層と相互作用しますが、カスケードの最初のレイヤーはスタイルの「ソース」です。ソースは、スタイルのソース(通常、ブラウザ(デフォルト)、ユーザー(優(yōu)先)、または著者(US))を説明しています。

デフォルトでは、著者スタイルはユーザーの好みをオーバーライドし、ユーザーの好みはブラウザのデフォルトをオーバーライドします。これは、誰もが適用されると変化します!importantあり、ソースが逆になります。ブラウザ!importantスタイルは最も高いソースを持ち、次に重要なユーザーの好みを持ち、次に著者の重要なスタイル、何よりも通常のレイヤーよりも重要です。他にもいくつかの情報(bào)源がありますが、ここでは詳しく説明しません。

カスタムプロパテ?!弗攻骏氓工蜃鞒嗓工毪取⒎浅¥摔瑜皮縿?dòng)作を構(gòu)築しています。既存のソースをカスタムプロパティスタックとして表現(xiàn)したい場合は、次のようになります。

 <code>.origins-as-custom-properties { color: var(--browser-important, var(--user-important, var(--author-important, var(--author, var(--user, var(--browser)))))); }</code>

これらのレイヤーはすでに存在するため、それらを再現(xiàn)する理由はありません。しかし、上記の「グローバル」スタイルと「コンポーネント」スタイルを重ねると、「グローバル」レイヤーを上書きする「コンポーネント」ソースレイヤーを作成します。同じ方法を使用して、CSSのさまざまな階層的な問題を解決することができます。これは、特異性を常に説明することはできません。

  • オーバーライド?コンポーネント?テーマ?デフォルト値
  • トピック?システムまたはフレームワークを設(shè)計(jì)します
  • ステータス?タイプ?デフォルト値

いくつかのボタンを見てみましょう。デフォルトのボタンスタイル、障害のある狀態(tài)、および危険、プライマリ、セカンダリなどのさまざまなボタン「タイプ」が必要です。障害狀態(tài)に常にタイプバリアントをオーバーライドすることを望んでいますが、セレクターはこの違いをキャプチャできません。

ただし、優(yōu)先順位を付けたい順序で「タイプ」レイヤーと「狀態(tài)」レイヤーを提供するスタックを定義できます。

 <code>button { background: var(--btn-state, var(--btn-type, var(--btn-default))); }</code>

さて、2つの変數(shù)を設(shè)定すると、狀態(tài)は常に優(yōu)先されます。

レイヤー化に基づいてカスタムテーマ設(shè)定を可能にするこの手法を使用して、カスケードカラーフレームワークを作成しました。

  • HTMLの事前定義されたトピックプロパティ
  • ユーザーの色の好み
  • 明るいモードと暗いモード
  • グローバルテーマのデフォルト

ミックスしてマッチします

これらの方法は極端になる可能性がありますが、ほとんどの毎日のユースケースは、通常上記の手法を使用して、スタック內(nèi)の2つまたは3つの値を使用して処理できます。

  • レイヤーの変數(shù)スタックを定義します
  • 継承は、近接性と範(fàn)囲に基づいてそれらを設(shè)定します
  • 初期値を注意深く適用して、ネストされた要素をスコープから削除します

Oddbirdプロジェクトでこれらのカスタムプロパテ?!弗攻骏氓工蚴褂盲筏皮い蓼埂K饯郡沥悉蓼滥K鳏筏皮い蓼工ⅴ互欹咯`と特異性だけで解決するのが難しい問題を解決するのに役立ちました。カスタムプロパティでは、カスケードや継承と戦う必要はありません。予想どおりにそれらをキャプチャして利用することができ、各インスタンスでそれらがどのように適用されるかをよりよく制御できます。私にとって、これはCSSにとって大きな勝利です。特に、スタイルフレームワーク、ツール、システムを開発する場合です。

以上がカスタムプロパテ?!弗攻骏氓工蚴褂盲筏啤ⅴ攻暴`ドを飼いならしますの詳細(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を含めるにはどうすればよいですか? Jun 11, 2025 am 12:01 AM

特定のページにCSSを選択的に含める方法は3つあります。1。インラインCSS。頻繁にアクセスされない、または一意のスタイルが必要なページに適しています。 2。柔軟性が必要な狀況に適したJavaScript條件を使用して、外部CSSファイルをロードします。 3。サーバー側(cè)に封じ込められ、サーバー側(cè)の言語を使用したシナリオに適しています。このアプローチは、ウェブサイトのパフォーマンスと保守性を最適化できますが、モジュール性とパフォーマンスのバランスが必要です。

Flexbox vsグリッド:CSSレイアウトの重要な違いを理解する Flexbox vsグリッド:CSSレイアウトの重要な違いを理解する Jun 10, 2025 am 12:03 AM

flexBoxisidealforone-dimensionAllayouts、whilegridsuitStwo-dimension、complexLayouts.useflexboxforAliingemsinasinginasindgridgridgridgridgridgridgridgrololoveroversandcolumnsintigns。

HTMLポップオーバーを使用して自動(dòng)閉鎖通知を作成します HTMLポップオーバーを使用して自動(dòng)閉鎖通知を作成します Jun 10, 2025 am 09:45 AM

HTMLポップオーバー屬性は、要素をボタンまたはJavaScriptで開閉できるトップレイヤー要素に変換します。ポップオーバーは多くの方法で卻下することができますが、それらを自動(dòng)するオプションはありません。 Preethiにはあなたができるテクニックがあります

「レンダリングブロッキングCSS」とは何ですか? 「レンダリングブロッキングCSS」とは何ですか? Jun 24, 2025 am 12:42 AM

ブラウザは、特にインポートされたスタイルシート、ヘッダーのインラインCSS、および最適化されていないメディアクエリスタイルを使用して、ブラウザがインラインおよび外部CSSをデフォルトで主要なリソースとして表示するため、ページレンダリングをブロックします。 1.重要なCSSを抽出し、HTMLに埋め込みます。 2。JavaScriptを介して非クリティカルなCSSの読み込みを遅らせる。 3.メディア屬性を使用して、印刷スタイルなどのロードを最適化します。 4.リクエストを減らすためにCSSを圧縮およびマージします。ツールを使用してキーCSSを抽出し、REL = "Preload"非同期負(fù)荷を組み合わせ、過度の分割と複雑なスクリプト制御を避けるためにメディア遅延荷重を合理的に使用することをお?jiǎng)幛幛筏蓼埂?/p>

Figmaでロットを使用する方法 Figmaでロットを使用する方法 Jun 14, 2025 am 10:17 AM

次のチュートリアルでは、FigmaでLottieアニメーションを作成する方法を紹介します。 2つのカラフルなデザインを使用して、Figmaでアニメーション化する方法を説明し、FigmaからLottie Animationsに移行する方法を示します。必要なのは無料の図だけです

境界の破壊:(s)CSSでタングラムパズルを構(gòu)築します 境界の破壊:(s)CSSでタングラムパズルを構(gòu)築します Jun 13, 2025 am 11:33 AM

少なくとも低レベルのロジックとパズルの動(dòng)作に関しては、SASSがJavaScriptを置き換えることができることが判明しました。マップ、ミックス、機(jī)能、そしてたくさんの數(shù)學(xué)だけで、私たちはタングラムのパズルを生き生きとさせることができました。

外部対內(nèi)部CSS:最良のアプローチは何ですか? 外部対內(nèi)部CSS:最良のアプローチは何ですか? Jun 20, 2025 am 12:45 AM

TheBestAppRoachforCSDependsonTheProject'sSpecificNeeds.forLargerProjects、externalCssissisbetterduetoMaintainasiladability; forsmallerProjectsOrsingLe-PageApplications、internalcsSmightBemoresuitable.it

私のCSSは小文字でなければなりませんか? 私のCSSは小文字でなければなりませんか? Jun 19, 2025 am 12:29 AM

いいえ、CSSDOESNOTHAVETOBEINLOWERCASE。

See all articles