ホームページ >ウェブフロントエンド >CSSチュートリアル >CCSS(コンポーネントCSS)の導入
を使用できます。
CCSSとは何か、そしてあなたがそれをどのように使用できるかを正確に見てみましょう。 CCSSの要素 以下は、CCSSアーキテクチャに最適な構成を実現するために完全または修正された方法で使用される主要な要素です。smacss
Jonathan Snookによって作成された SMACSSは、CSSのスケーラブルでモジュラーアーキテクチャの略です。これは、厳格なフレームワークというよりもスタイルガイドです。 CCSSがそれを使用するとき、構造の背景についてはSMACSSについて読む。 BEMは、「ブロック」、「要素」、「モディファイア」の略です。これは、Webインターフェイスを開発する際の新しい考え方であるフロントエンドの方法論です。 Yandexの人たちはBEMを思いつき、より多くの情報をハリー・ロバーツの素晴らしい記事に記載しています。
コンパス を使用する必要があります。これもまた、優れたものであり、バーボンであり、最初の外観は素晴らしい選択肢です。
CCSSの原則
コンポーネントには、UIの特定の部分に必要なすべてのものがあり、単一の焦点が必要です。各コンポーネントは分離する必要があります。つまり、別のコンポーネントを直接変更または依存しないことを意味します。
再利用は依存関係や緊密な結合を増加させ、最終的にCSSの管理しやすくするため、コンポーネント全体でコードの再利用よりも分離が重要です。
予測可能 予測可能性とは、cssを作成すると、予想通りにルールが動作することを意味します。これは、多くのページがある大規模なアプリケーションにとって重要です。過度に複雑なセレクターや一般的なクラス名を使用しないでください。これらは予測不可能なCSSにつながる可能性があるためです。
ディレクトリ構造 上記のフォルダーツリー内のSCSS/フォルダー内のファイルのみを編集/作成します。これにより、外部ライブラリを簡単に更新できます。これは、ext/フォルダーにあります。多くのアプリケーションは、BootstrapやFoundationなどの外部CSSフレームワークから始まるため、Ext/内のサンプルセットアップに追加しました。しかし、すべてのCSSをゼロから書くことは絶対に問題ありません。上記の他のすべてがまだ当てはまります。 コンポーネント/ディレクトリの例は、AngularJSアプリケーションに適していますが、他のフレームワークまたはアプリケーション用にカスタマイズできます。詳細については、以下の「アーキテクチャ」セクションにあります
命名規則 - 簡略化されたbem 。要素名とモディファイア名は、それぞれ要素名と修飾名です。ファミン( - )を使用してコンポーネント名を分離しないでください。これらは要素/要素名の開始を意味します。
アーキテクチャとデザイン
Gruntは、多くの一般的な雑用(CSSのコンパイルやHTMLの検証など)を自動化できる素晴らしいタスクランナーです。他のタスクランナーもあります。理想的なワークフローでは、開発中のファイルを監視し、変更が行われたときにCSSを再コンパイルするために1つを使用することが含まれます。
base/は、アプリケーション全体で使用されるグローバルベーススタイルを保持する場所です。
画像.SCSSは、SCSSコンパイルソースとして使用されます。すべてのサイト画像をデータURIとして定義し、インライン化する必要があります。 /app/styles/images.cssは、このファイルから生成されます
_BootStrap-Overrides.scssは、フレームワークのオーバーライドのみを保持します。フレームワークセレクターの特異性のレベルが非常に高いため、それらをオーバーライドするには長い特定のセレクターが必要です。グローバルレベルでのオーバーライドは、SCSSコンポーネントのコンテキストで行われないでください。代わりに、すべてのグローバルなオーバーライドはここにあります。 上記の再利用可能なCSSの単位は、「コンポーネント」と見なされます。 Angularjsを使用しているため、View/Page、Directive、および標準の3種類のCSSコンポーネントに分類しました。したがって、SMACSから派生したディレクトリ構造
が得られました。また、典型的なBEMスタイルを - 、 - 、および__文字で使用することから離れるとき、多くの混乱を回避しました。
また、コンポーネント内のCSSクラス定義順序がHTMLビューを反映することも重要です。これにより、クラスをスキャン、スタイル、編集、適用が簡単になります。最後に、Webアプリケーションのための広範なスタイルガイドを持ち、CSSとSASSのガイドラインに従うことをお勧めします(@extendを避けます)
これは、次のCSSにコンパイルされます:
そして、CCSSに関連するクレジットと有用なリソースについては、必ずリポジトリをチェックしてください。ご質問やコメントがある場合は、下のコメントまたはGitHubリポジトリに投稿してください。 従来のCSSは、HTMLで書かれたドキュメントの外観とフォーマットを説明するために使用されるスタイルシート言語です。レイアウト、色、フォントなど、コンテンツをプレゼンテーションから分離できるように設計されています。一方、CCSS(コンポーネントCSS)は、スタイルが特定のコンポーネントに直接リンクされているスタイリングに対する最新のアプローチです。これは、スタイルがコンポーネントに局所的にスコープされ、アプリケーション全体でスタイルが衝突するリスクを減らすことを意味します。このアプローチにより、スタイルがよりメンテナンスしやすく、モジュール化され、スケーリングが容易になります。 JavaScriptフレームワークでCCSを使用できますか? React、Angular、Vue、またはその他のフレームワークを使用している場合でも、CCSSを使用してコンポーネントをスタイリングできます。これにより、CCSSはフロントエンド開発者にとって汎用性の高いツールになります。 CCSSは主に個々のコンポーネントのスタイリングに使用されますが、グローバルスタイルも処理できます。グローバルスタイルを別のファイルに定義し、必要に応じてコンポーネントにインポートできます。これにより、CCSSのモジュール性の恩恵を受けながら、アプリケーション全体で一貫したルックアンドフィールを維持できます。使用するには、いくつかの制限があります。メディアクエリ、擬似クラス、または擬似要素を使用することはできません。また、特異性が最も高く、スタイルをオーバーライドすることの困難につながる可能性があります。一方、CCSSは、メディアクエリ、擬似クラス、擬似要素を使用する機能など、CSSの全力を提供します。また、インラインスタイルよりも特異性が低いため、必要に応じてスタイルを簡単に上書きします。 はい、SASS、Less、StylusなどのCSS Precessorsを使用できます。これにより、変数、ミキシン、ネストされたルールなどのこれらの前処理者の力を活用しながら、CCSSのモジュール性とスケーラビリティの恩恵を受けています。 bem
Yandexの開発者によって作成された
SASSは、超大国を持つCSSです。強くお勧めしますが、必要に応じて使用することもできます。詳細については、SASSドキュメントを参照してください
コンパスにはクラスの定義はありません。これは、多くのユーティリティを提供するSASSの拡張機能です。一般的な便利なミキシンとSASSコンピレーションに使用されます。コンパスミックスインは、ベンダーのプレフィックスが必要な場合には、ほぼ
常にCCSSの主要な原則を見てみましょう
コンポーネントベースモジュラーと分離
書くのに費やす時間を短縮することを目的とした方法でCSSを執筆する場合、スタイルを変更または追加するための要素のHTMLクラスを変更するのにもっと時間を費やす方法で考える必要があります。すべての開発者がCSS戦争と戦うよりもレゴブロックを組み立てるような場合、CSSを作成するのははるかに簡単です。 CSSクラスは、スタイルを構成するために使用する必要があるビルディングブロックです。
ほとんどの人は、CSSが自明であると仮定しています。実際、これは通常そうではありません! CSSコンポーネントには、それらが何をするか、どのように使用すべきかを説明する明確なドキュメントが必要です。
styles
├── bootstrap.css
├── ext
│ ├── bootstrap
│ │ ├── _settings.scss
│ │ └── bootstrap.scss
│ └── font-awesome
│ └── font-awesome.scss
├── font-awesome.css
├── images.css
├── main.css
└── scss
├── _config.scss
├── base
│ ├── _animation-classes.scss
│ ├── _base-classes.scss
│ ├── _base.scss
│ └── images.scss
├── components
│ ├── directives
│ │ ├── _empty-state.scss
│ │ ├── _legend.scss
│ │ └── _status-message.scss
│ ├── pages
│ │ ├── _404.scss
│ │ └── _redirect.scss
│ └── standard
│ ├── _alarm-state.scss
│ ├── _graph-message.scss
│ └── _panel.scss
├── main.scss
├── mixins
│ ├── _animation.scss
│ ├── _bem.scss
│ └── _icon.scss
└── themes
└── _light.scss
U-ClassName - グローバルベース/ユーティリティクラス
境界であることを示します grunt
SMACSSから派生したディレクトリ構造をもう一度調べます。すべての外部フレームワーク(Bootstrapなど)を含むExt/ディレクトリに注意してください。アップグレードを容易に保つために、これらを変更する必要はありません。代わりに、オーバーライドと拡張機能をベース/ディレクトリに配置する必要があります。
_Base-Classes.scssはすべて、多くのページ、ビュー、コンポーネントにわたってアプリケーション全体で使用されるユーティリティクラスです。 u-
を使用した接頭施設クラス名
コンポーネント
styles
├── bootstrap.css
├── ext
│ ├── bootstrap
│ │ ├── _settings.scss
│ │ └── bootstrap.scss
│ └── font-awesome
│ └── font-awesome.scss
├── font-awesome.css
├── images.css
├── main.css
└── scss
├── _config.scss
├── base
│ ├── _animation-classes.scss
│ ├── _base-classes.scss
│ ├── _base.scss
│ └── images.scss
├── components
│ ├── directives
│ │ ├── _empty-state.scss
│ │ ├── _legend.scss
│ │ └── _status-message.scss
│ ├── pages
│ │ ├── _404.scss
│ │ └── _redirect.scss
│ └── standard
│ ├── _alarm-state.scss
│ ├── _graph-message.scss
│ └── _panel.scss
├── main.scss
├── mixins
│ ├── _animation.scss
│ ├── _bem.scss
│ └── _icon.scss
└── themes
└── _light.scss
<span>.ProductRating {
</span> <span>// nested element
</span><span> <span>@include e(title) {</span>
</span> <span>...
</span> <span>}
</span> <span>// nested element
</span><span> <span>@include e(star) {</span>
</span> <span>...
</span> <span>// nested element's modifier
</span><span> <span>@include m(active) {</span>
</span> <span>...
</span> <span>}
</span> <span>}
</span><span>}</span>
貢献<span><span>.ProductRating</span> {
</span> ...
<span>}
</span><span>// nested element
</span><span><span>.ProductRating-title</span> {
</span> ...
<span>}
</span><span>// nested element
</span><span><span>.ProductRating-star</span> {
</span> ...
<span>}
</span>// nested element's <span>modifier
</span><span><span>.ProductRating-star--active</span> {
</span> ...
<span>}</span>
コンポーネントCSS(CCSS)
に関するよくある質問
CCSSと従来のCSSの主な違いは何ですか?
CCSSは、プロジェクトのスケーラビリティをどのように改善しますか?従来のCSSでは、プロジェクトが成長するにつれて、CSSファイルも成長し、管理が困難になります。ただし、CCSSでは、各コンポーネントには独自のスタイルがあり、管理と拡張が容易になります。アプリケーションの残りの部分に影響を与えることなくコンポーネントを簡単に更新または変更できます。
CCSSはグローバルスタイルをどのように処理しますか?
CCSSは、個々のコンポーネント、CCSSにスタイルをスコープすることにより、Webアプリケーションのパフォーマンスをどのように改善しますか? Webアプリケーションのパフォーマンスを大幅に改善できます。従来のCSSでは、ブラウザはCSSファイル全体を解析してページをレンダリングする必要があります。これにより、レンダリングプロセスが遅くなる可能性があります。ただし、CCSSを使用すると、ブラウザは現在レンダリングされているコンポーネントのスタイルを解析するだけで、ページの読み込み時間が速くなります。
CCSSを使用してCSS Pre-Processorsを使用できますか?
以上がCCSS(コンポーネントCSS)の導入の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。