目次
ルールネスト
カスタムセレクター
:matches()プラグインは、新しい
カスタムメディア
ホームページ ウェブフロントエンド CSSチュートリアル PostCSSガイドは、セレクターとメディアクエリを改善します

PostCSSガイドは、セレクターとメディアクエリを改善します

Feb 21, 2025 am 10:05 AM

<p> <img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174010351218537.jpg" class="lazy" alt="The PostCSS Guide to Improving Selectors and Media Queries "></p> <p><strong>コアポイント</strong></p> <ul> <li>PostCSSは、最新のCSS機能にポリフィルを提供するさまざまなプラグインを提供し、開発者が広範なブラウザサポートがない場合でも新しい機能を試してみることができます。 </li> <li> <code>postcss-nesting</code>プラグインは、W3Cネストされたモジュールの提案に従ってネストされたスタイルルールを実装し、親セレクターを参照して新しい<code>&amp;amp;</code>ネストされたセレクターを導入します。 </li> <li> <code>postcss-custom-selectors</code>プラグインを使用すると、変数の重複セレクターを定義し、コードの複製を減らし、コードメンテナンスを改善できます。 </li> <li> <code>postcss-custom-media</code>および<code>postcss-media-minmax</code>プラグインは、メディアクエリを改善して、スタイルシートの使用を容易にし、重複を減らすことができます。 </li> </ul> <p>CSS仕様の最新の変更には、いくつかの興味深い機能が紹介されています。残念ながら、これらの機能のいくつかはまだドラフト段階にありますが、他の機能は広範なブラウザのサポートを欠いています。多くの場合、新しい提案は、ブラウザによってレビュー、受け入れ、実装されるまでに時間がかかります。ただし、待ち時間を節約し、PostCSSを使用してこれらの機能の一部を試すことができます。 </p> <p>PostCSSには、最新のCSS機能にポリフィルを実装するように設計されたさまざまなプラグインがあります。これらのプラグインは非常に広いため、1つの記事ですべてのプラグインをカバーすることは困難です。代わりに、セレクターとメディアクエリに新しい機能を追加することに焦点を当てたプラグインに焦点を当てます。多くのプラグインを使用すると、スタイルシートの構造を大幅に改善できますが、他のプラグは上部にきれいな構文砂糖を追加するだけです。 </p> <p>この記事では、PostCSの構成とインストールを詳細に紹介しません。これは、「PostCSSから始まる」および「PostCSSによるCSS品質の向上」で説明されています。簡単な参照として、GitHubのPostCSSページをチェックすることもできます。 </p> <h2 id="ルールネスト">ルールネスト</h2> <p>最も基本的な機能から始めましょう。すべてのプリプロセッサユーザーに馴染みがあります。 <code>postcss-nesting</code>プラグインは、W3Cネストされたモジュールの提案に従ってネストするスタイルルールを実装します。 </p> <p>提案では、親セレクターを参照する新しい<code>&amp;amp;</code>ネストされたセレクターが導入されます。少ないまたはSASSに反して、このセレクターは仕様によって必要であり、ネストを有効にするためにセレクターチェーンで最初の基本セレクターでなければなりません。ネストされたセレクターが含まれていないセレクターは無視されます。たとえば、</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>.article { color: #333; &amp;amp;amp;.popular { background: #DDD; } &amp;amp;amp; .title { font-weight: bold; } }</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div> <p>は次のように変換されます </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>.article { color: #333 } .article.popular { background: #DDD } .article .title { font-weight: bold }</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>指定されているように<p>セレクターを使用しないため、次のコードが無効であることに注意してください。 <code>&amp;amp;</code> </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>.article { color: #333; /* no nested-selector */ .popular { background: #DDD; } /* the nested selector is not the fist selector in the chain */ .latest &amp;amp;amp;amp; { border: 1px solid red; } }</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>親セレクターをセレクターのどこにでも挿入できるようにするため(最初だけでなく)、提案はネストされたATルール<p>を使用する代替構文を定義します。前の例で<code>@nest</code>セレクターを次のように修正できます。 <code>.latest &amp;amp;amp;</code> </p>これは次のようにコンパイルされます <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>.article { color: #333; @nest .latest &amp;amp;amp;amp; { border: 1px solid red; } }</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div> <p></p>文法も<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>.article { color: #333 } .latest .article { border: 1px solid red }</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>よりも表現力があります。 <p><h2 id="カスタムセレクター">カスタムセレクター</h2> <p> CSSを書くとき、私たちは多くの重複したセレクターを書く傾向があります。これは、すべてのリンクまたは任意のボタンを選択する単純なボイラープレートコード、または繰り返し繰り返しを必要とするより複雑なセレクターである可能性があります。これにより、多くのコードの重複と関連するすべてのコードメンテナンスの問題が導入される場合があります。新しいCSS拡張仕様は、セレクターを変数に保存し、スタイルシートの他の部分から参照する方法を紹介します。したがって、繰り返しセレクターは一度だけ定義する必要があり、その後、他の場所で安全に再利用できます。 </p> <p>postcssには、この機能を実装する<code>postcss-custom-selectors</code>プラグインがあります。これは、すべてのタイトル要素セレクターを定義する簡単な例です。 </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>.article { color: #333; &amp;amp;amp;.popular { background: #DDD; } &amp;amp;amp; .title { font-weight: bold; } }</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>次のようにコンパイルされます <p> </p>カスタムセレクターは擬似クラスとして実装されているため、構文は奇妙に見えます<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>.article { color: #333 } .article.popular { background: #DDD } .article .title { font-weight: bold }</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>。 <p> <code>:--</code>カスタムセレクターは、基本的なセレクターで効果的に使用できます。たとえば、</p> <p> </p>にコンパイルされています:<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>.article { color: #333; /* no nested-selector */ .popular { background: #DDD; } /* the nested selector is not the fist selector in the chain */ .latest &amp;amp;amp;amp; { border: 1px solid red; } }</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div> <p> </p>複数のカスタムセレクターを単一のセレクターに組み合わせて、より複雑な配置をとることもできます。 <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>.article { color: #333; @nest .latest &amp;amp;amp;amp; { border: 1px solid red; } }</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div> <p> </p>は生成されます:<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>.article { color: #333 } .latest .article { border: 1px solid red }</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div> <p> </p>この例は少し誇張されているかもしれませんが、この機能の力を非常によく示しています。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>@custom-selector :--heading h1, h2, h3, h4, h5, h6; :--heading { font-weight: bold; }</pre><div class="contentsignin">ログイン後にコピー</div></div> <p>新しい擬似クラス</p> セレクターレベル4の仕様では、多くの新しい擬似クラスを紹介しますが、ほとんどの擬似クラスの動的な性質により、PostCSプラグインとして利用できるものはごくわずかです。 <h2> </h2><p>pseudoclass </p> <h3 id="code-matches-code-プラグインは-新しい"><code>:matches()</code>プラグインは、新しい</h3>pseudoクラスを実装します。これは、パラメーター内のセレクターに一致する要素のみをフィルタリングする関数クラスです。複数のセレクターを渡す場合、要素は少なくともそのうちの1つと一致する必要があります。要するに:<p> <code>postcss-selector-matches</code> <code>:matches()</code>にコンパイルされています:</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>h1, h2, h3, h4, h5, h6 { font-weight: bold; }</pre><div class="contentsignin">ログイン後にコピー</div></div> <p></p>pseudoclass <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>.article :--heading .author { color: blue; }</pre><div class="contentsignin">ログイン後にコピー</div></div> 特定のパラメーターと一致しない擬似クラスフィルタリング要素。 <h3>プラグインに実装されています。 <code>:not()</code> </h3> <p>結果は次のとおりです <code>:not()</code> <code>postcss-selector-not</code></p>pseudoclass <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>.article h1 .author, .article h2 .author, .article h3 .author, .article h4 .author, .article h5 .author, .article h6 .author { color: blue; }</pre><div class="contentsignin">ログイン後にコピー</div></div> <p></p>プラグインは<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>@custom-selector :--links a, a:focus, a:visited, a:hover, a:active; article :--heading :--links { color: #333; }</pre><div class="contentsignin">ログイン後にコピー</div></div> pseudoクラスを実装します。それは、<h3>擬似クラスの周りの混乱を解決するのに役立つために導入されました。後者とは異なり、訪問したリンクを含むすべてのリンクと一致します。 <code>:any-link</code> </h3> <p>にコンパイルされています:<code>postcss-pseudo-class-any-link</code> <code>:any-link</code> <code>:link</code>メディアクエリの改善</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>article h1 a, article h2 a, article h3 a, article h4 a, article h5 a, article h6 a, article h1 a:focus, article h2 a:focus, article h3 a:focus, article h4 a:focus, article h5 a:focus, article h6 a:focus, article h1 a:visited, article h2 a:visited, article h3 a:visited, article h4 a:visited, article h5 a:visited, article h6 a:visited, article h1 a:hover, article h2 a:hover, article h3 a:hover, article h4 a:hover, article h5 a:hover, article h6 a:hover, article h1 a:active, article h2 a:active, article h3 a:active, article h4 a:active, article h5 a:active, article h6 a:active { color: #333; }</pre><div class="contentsignin">ログイン後にコピー</div></div>メディアクエリを使いやすくするためのPostCSSのためのライブラリにプラグインがあります。それらは<p>と</p>です。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>button:matches(:hover, :focus) { color: red; }</pre><div class="contentsignin">ログイン後にコピー</div></div> <h2 id="カスタムメディア">カスタムメディア</h2> <p>メディアクエリを書くことは、通常のセレクターと同じ問題を作成します - それらはしばしばスタイルシートで繰り返されます。おそらく通常のセレクターよりも頻繁です。幸いなことに、カスタムセレクターに似たソリューションがあります。 <code>postcss-custom-media</code>プラグインは、メディアクエリを変数に保存する機能を高めるカスタムメディアクエリ仕様を実装します。 <code>postcss-media-minmax</code> </p>構文はカスタムセレクターに非常に似ています。簡単な例を次に示します:<h3> </h3> <p>にコンパイルされています:<code>postcss-custom-media</code><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>.article { color: #333; &amp;amp;amp;.popular { background: #DDD; } &amp;amp;amp; .title { font-weight: bold; } }</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div> <p>もちろん、複数のカスタムメディアクエリを一度に使用できます。 </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>.article { color: #333 } .article.popular { background: #DDD } .article .title { font-weight: bold }</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>は生成されます:<p> </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>.article { color: #333; /* no nested-selector */ .popular { background: #DDD; } /* the nested selector is not the fist selector in the chain */ .latest &amp;amp;amp;amp; { border: 1px solid red; } }</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>ご覧のとおり、「中ビューポート」の定義を変更して、関連するCSSコードを見つける方がはるかに簡単になりました。 <p> </p>最小および最大構文<h3> </h3>メディアの質問は素晴らしいものですが、最小および最大の文法はコミュニティから多くの批判を受けています。 W3Cは、比較演算子を使用して、より直感的な構文を導入することで応答します。 <p>プラグインは、<code>postcss-media-minmax</code>、<code>></code>、<code>>=</code>、<code><</code>、<code><=</code>のサポートを追加します。 </p> <p>(記事の残りの部分は記事の長さのために省略されていますが、画像リンクは変更されていません)</p>

以上がPostCSSガイドは、セレクターとメディアクエリを改善しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

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)

Vue 3 Vue 3 Apr 02, 2025 pm 06:32 PM

それは&#039; Vueチームにそれを成し遂げてくれておめでとうございます。それは大規模な努力であり、長い時間がかかったことを知っています。すべての新しいドキュメントも同様です。

ブラウザから有効なCSSプロパティ値を取得できますか? ブラウザから有効なCSSプロパティ値を取得できますか? Apr 02, 2025 pm 06:17 PM

私はこの非常に正当な質問で誰かに書いてもらいました。 Leaは、ブラウザから有効なCSSプロパティ自体を取得する方法についてブログを書いています。それはこのようなものです。

CI/CDで少し CI/CDで少し Apr 02, 2025 pm 06:21 PM

「ウェブサイト」は「モバイルアプリ」よりも適していると言いますが、Max Lynchからのこのフレーミングが好きです。

WordPressブロックエディターでのマークダウンとローカリゼーションを使用します WordPressブロックエディターでのマークダウンとローカリゼーションを使用します Apr 02, 2025 am 04:27 AM

WordPressエディターでユーザーに直接ドキュメントを表示する必要がある場合、それを行うための最良の方法は何ですか?

粘着性のあるポジショニングとサスのダッシュを備えた積み重ねられたカード 粘着性のあるポジショニングとサスのダッシュを備えた積み重ねられたカード Apr 03, 2025 am 10:30 AM

先日、Corey Ginnivanのウェブサイトから、この特に素敵なビットを見つけました。そこでは、スクロール中にカードのコレクションが互いに積み重ねられていました。

レスポンシブデザインのブラウザを比較します レスポンシブデザインのブラウザを比較します Apr 02, 2025 pm 06:25 PM

これらのデスクトップアプリがいくつかあり、目標があなたのサイトをさまざまな次元ですべて同時に表示しています。たとえば、書くことができます

スティッキーヘッダーとフッターにCSSグリッドを使用する方法 スティッキーヘッダーとフッターにCSSグリッドを使用する方法 Apr 02, 2025 pm 06:29 PM

CSS Gridは、レイアウトをこれまで以上に簡単にするように設計されたプロパティのコレクションです。何でもするように、少し学習曲線がありますが、グリッドは

Googleフォント変数フォント Googleフォント変数フォント Apr 09, 2025 am 10:42 AM

Google Fontsが新しいデザイン(ツイート)を展開したようです。最後の大きな再設計と比較して、これははるかに反復的です。違いをほとんど伝えることができません

See all articles