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

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

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

Apr 05, 2025 am 09:49 AM

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

カスタムプロパテ?!弗攻骏氓工蚴褂盲筏?、カスケードを飼いならします

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

この記事では、カスタムプロパテ?!弗攻骏氓工蚴褂盲筏?、スコープされたコンポーネントスタイルからより明示的な意図階層まで、カスケードのいくつかの一般的な問題を解決する方法を示します。

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

ブラウザは、ベンダープレフィックス(-webkit-または-moz-など)を使用して新しいプロパティを同じ方法で定義し、「空」(プレフィックス」を使用して獨自のカスタムプロパティを定義できます。 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)築する

フォールバック値を定義するこの機能は、フォントファミリープロパティで使用される「フォントスタック」に似ています。最初のシリーズが利用できない場合、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>

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

近接範(fàn)囲

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

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

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

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

一部のボタンは両方のコンテキストにあり、.lightと.darkの祖先があります。この場合、私たちが望むのは、最近のトピックに引き継ぐこと(近接動作を継承する)ですが、最初のセレクター(カスケードの動作)を上書きする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スタイルは最も高いソースを持ち、次に重要なユーザーの好みを持ち、次に著者の重要なスタイル、何よりも通常のレイヤーよりも重要です。他にもいくつかの情報源がありますが、ここでは詳しく説明しません。

カスタムプロパテ?!弗攻骏氓工蜃鞒嗓工毪取⒎浅¥摔瑜皮縿幼鳏驑?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è)計します
  • ステータス?タイプ?デフォルト値

いくつかのボタンを見てみましょう。デフォルトのボタンスタイル、障害のある狀態(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

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

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

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

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

外部対內(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。

CSSケース感度:重要なことを理解する CSSケース感度:重要なことを理解する Jun 20, 2025 am 12:09 AM

cssismostlycase-inssensitive、buturlsandfontfamilynamesarecase-sensitive.1)propertiesandvalueslikecolor:red; areotcase-sensitive.2)urlsmustmatchtheserver'scase、例えば、/畫像/logo.png.3)

Autoprefixerとは何ですか?それはどのように機能しますか? Autoprefixerとは何ですか?それはどのように機能しますか? Jul 02, 2025 am 01:15 AM

Autoprefixerは、ターゲットブラウザスコープに基づいてCSS屬性にベンダープレフィックスを自動的に追加するツールです。 1.エラーで接頭辭を手動で維持する問題を解決します。 2. PostCSSプラグインフォーム、CSSを解析し、プレフィックスする必要がある屬性を分析し、構(gòu)成に従ってコードを生成する屬性を分析します。 3.使用手順には、プラグインのインストール、ブラウザーリストの設(shè)定、ビルドプロセスでそれらを有効にすることが含まれます。 4。メモには、接頭辭を手動で追加しない、構(gòu)成の更新を保持すること、すべての屬性ではなくプレフィックスを維持することが含まれ、プリ??プロセッサでそれらを使用することをお勧めします。

CSSカウンターとは何ですか? CSSカウンターとは何ですか? Jun 19, 2025 am 12:34 AM

csScountersCantAnationally-bersectionSandLists.1)usecounter-resettoinitialize、counter-incrementtoincrease、andcounter()orcounters()todisplayvalues.2)を組み合わせたjavascriptfordynamiccontenttoensureaCurateupdatesと組み合わせます。

CSS:ケースはいつ重要ですか(いつそうではありませんか)? CSS:ケースはいつ重要ですか(いつそうではありませんか)? Jun 19, 2025 am 12:27 AM

CSSでは、セレクターと屬性名はケースに敏感ですが、値、名前の色、URL、およびカスタム屬性はケースに敏感です。 1.バックグラウンドカラーや背景色など、セレクターと屬性名はケース非感受性です。 2。値の16進(jìn)數(shù)色は大文字と小文字を區(qū)別しますが、赤と赤などの名前の色は無効です。 3. URLは癥例に敏感であり、ファイルロードの問題を引き起こす可能性があります。 4.カスタムプロパティ(変數(shù))はケースに敏感であり、使用する場合はケースの一貫性に注意を払う必要があります。

CSSの癥例感度:説明されたセレクター、プロパティ、および値 CSSの癥例感度:説明されたセレクター、プロパティ、および値 Jun 19, 2025 am 12:38 AM

cssselectors andpropertynamesarecase-inssensitive、whilevaluescanbecase-sensitivedingoncontext.1)selectorslike'div'andiv'areequivalent.2)propertiessuchas'background-color'and'background-color'arecase-sensens

See all articles