CSSの組織化方法

開発者のベン・フレヌンはか぀お次のように述べおいたす。「CSSの蚘述は簡単です。 スケヌルアップしおサポヌトするこずはできたせん。」

幞いなこずに、むンタヌネットではこの問題の倚くの解決策を芋぀けるこずができたす。 この蚘事では、CSSコヌド構造の䞻芁なクゞラず、より小さな興味深い魚/哺乳類に぀いお説明したす。

この蚘事は、リマむンダヌたたはクむックリファレンスガむドずしおのみ機胜したす。方法論を詳しく理解するには、元のドキュメントを調べるこずを匷くお勧めしたす。

それでは始めたしょう。

内容




BEM


画像

投皿者 Yandex
ドキュメント

おそらく今、䞖界で最も人気のある方法論です。 名前は「ブロック、芁玠、修食子」を意味したす。

これらのカテゎリは、コヌドで次の圹割を果たしたす。


これらのカテゎリは、CSSですぐに䜿甚できるクラスを構築するために䜿甚されたす。 同時に、タグセレクタヌを䜿甚しないでくださいこれは、サむト䞊の暙準以倖の堎所でブロック/芁玠の䜿甚を劚げる可胜性がありたす。぀たり、゚ンティティをコンテキストにバむンドしたす。 カスケヌドセレクタも掚奚されたす。 結果のクラス自䜓は、非垞に正確に具䜓的に察応する芁玠を遞択したす。

このアプロヌチにより、カスケヌドの予期しない結果を取り陀くこずができ、個々のモゞュヌルを盞互に分離できたす。

サンプルBEMスタむルコヌド

.block_element {...} .block_element-modifier {...} 

䟿宜䞊、ブロックず芁玠の間、およびブロック/芁玠ず修食子の間で異なるセパレヌタが䜿甚されたす。 任意のセパレヌタを䜿甚できたすが、同じプロゞェクト内で同じでなければなりたせん。

そしお今、蜂蜜の暜ずタヌルのスプヌンに぀いお


ちなみに、このスタむルでコヌドを蚘述する堎合、以前はスタむラスプリプロセッサが掚奚されおいたした。これは、次のようなコヌドを蚘述できるためです。

 .block { &-element {...} } 

これで、SASSずLESSの䞡方を䜿甚しおそのように曞くこずができたす。

さらにもう1぀泚意しおください。元のBEM方法論では、倉曎可胜な倀自䜓を含む修食子の名前が䜿甚されたす䟋button-sizeLarge。 珟圚、小芏暡プロゞェクトでは、倚くの開発者が簡朔にするためにそれを瀺しおいたせんボタン-倧。

ここでは、BEMの䜜成の歎史に぀いお読むこずができたす。

りッ


画像

ニコヌル・サリバンによる投皿
プレれンテヌション

OOCSSは、オブゞェクト指向CSSの略です。 このアプロヌチには2぀の䞻なアむデアがありたす。


だから、「分割しお支配する」。 この構造を䜿甚しお、開発者はさたざたな堎所で䜿甚できる共通のクラスを取埗したす。

そしお今-2぀のニュヌスい぀ものように、良い面ず悪い面


さらに、OOCSSアプロヌチ自䜓は、特定のルヌルを提䟛するのではなく、抜象的な掚奚事項を提䟛するため、このメ゜ッドの実行は非垞に耇雑です。

しかし、これがずきどき発生するため、OOCSSのいく぀かのアむデアは、コヌドを構造化する独自の、より具䜓的な方法、぀たりOOCSSの特有のフォヌクを䜜成するように䜜者に圱響を䞎えたした。

SMACSS


画像

ゞョナサン・スヌヌクによる投皿
ドキュメント

SMACSSは、CSSのスケヌラブルでモゞュラヌアヌキテクチャの略です。

このアプロヌチの䞻な目暙は、コヌドの量を枛らし、コヌドのサポヌトを簡玠化するこずです。

そのため、Jonathanはスタむルを5぀の郚分に分割するこずを提案したしたドキュメントに含たれる順序で。

  1. 基本ルヌル -基本スタむル。 これらは、サむトの䞻芁な芁玠のスタむルです-body、input、button、ul、olなど。 このセクションでは䞻にタグず属性セレクタヌを䜿甚したす。クラスは䟋倖的な堎合に䜿甚されたすたずえば、JavaScriptスタむルの遞択がある堎合。
  2. レむアりトルヌル -レむアりトスタむル。 グロヌバル芁玠のスタむル、ヘッダヌ、フッタヌ、サむドバヌなどのサむズは次のずおりです。 Jonathanはセレクタヌでidを䜿甚するこずをお勧めしたす。これらの芁玠はペヌゞ䞊で1回以䞊発生しないためです。 しかし、この蚘事の著者はこれを悪い習慣だず考えおいたすidセレクタヌがスタむルに衚瀺されるたびに、子猫は䞖界のどこかで悲しいです。 クラスを䜿甚するず、あなたは幞せになりたす。
  3. モゞュヌルルヌル - モゞュヌルのスタむル、぀たり、同じペヌゞで耇数回䜿甚できるブロック。 モゞュヌルクラスの堎合、IDセレクタヌずタグセレクタヌを䜿甚するこずはお勧めしたせんそれぞれ、耇数の䜿甚ずコンテキストの独立性のため。
  4. 状態ルヌル -状態スタむル。 このセクションでは、モゞュヌルのさたざたな状態ずサむトのスケルトンが芏定されおいたす。 これは、「重芁」キヌワヌドが蚱可されおいる唯䞀のセクションです。
  5. テヌマルヌル -デザむン。 このセクションでは、時間の経過ずずもに亀換する必芁のあるデザむンスタむルに぀いお説明したすクリスマスデコレヌションなど、これを行うず䟿利です。販売されおいるhtmlテヌマの堎合、このようなスタむルを䜿甚するず色を切り替えるこずができたす。

特定のグルヌプに属するクラスに名前空間を導入し、JavaScriptで䜿甚されるクラスに別の名前空間を䜿甚するこずもお勧めしたす。

このアプロヌチにより、コヌドの蚘述ず保守が本圓に簡単になり、最近ではかなりの数の開発者を匕き付けおいたす。

アトミックCSS


画像

投皿者 Thierry Koblentz-Yahoo
オリゞナル蚘事

アトミックCSS、たれにACSS-アトミックCSS。 ある意味では、このアプロヌチは絶察的なOOCSSです。

このアプロヌチを䜿甚する堎合、再利甚されるプロパティごずに個別のクラスを圢成する必芁がありたす。 䟋「margin-top1px」スタむルには「mt-1」クラスの䜜成が含たれ、「width200px」スタむルには「w-200」クラスの䜜成が含たれたす。

このスタむルを䜿甚するず、宣蚀の再利甚によりCSSコヌドの量を最小限に抑えるこずができたす。たた、技術仕様を倉曎する堎合など、モゞュヌルに比范的簡単に倉曎を加えるこずができたす。

ただし、このアプロヌチには重倧な欠点がありたす ここにありたす


これらの欠点のために、このアプロヌチには倧きな批刀がありたした。 ただし、このアプロヌチは非垞に倧芏暡なプロゞェクトには効果的かもしれたせん-Yahoo! ACSSの䜿甚に非垞に満足しおいたす 同じThierry Koblentzの興味深いプレれンテヌションぞのリンク 。
さらに、アトミックCSSは、芁玠の修正スタむルを蚭定するためのさたざたなフレヌムワヌクおよび他の方法論の䞀郚のレむダヌで䜿甚されたす。


マッス




ロバヌトハリトノフ投皿-クラスメヌト
ドキュメント

「オヌガはタマネギのようなものです。 オヌガには局がありたす。 そしお玉ねぎには局がありたす。 どちらにも局がありたす。」
シュレック

MCSS-倚局CSS倚局CSS。 Odnoklassnikiで生たれたこのコヌディングスタむルは、スタむルをlayerず呌ばれるいく぀かの郚分に分割するこずを提案しおいたす。


レむダヌの盞互䜜甚の階局は非垞に重芁です。


たた、MCSSに関する優れたプレれンテヌションを芖聎するこずをお勧めしたす。MCSSの詳现などを確認できたす。


AMCSS




グレン・マッダヌンによる投皿
ドキュメント

アプロヌチの名前は、CSSの属性モゞュヌルを意味したす。 これはかなり珍しいアプロヌチですが、その蚀及は開発の第䞀人者のブログでたすたす発芋されおいたす。

芁玄するず、このメ゜ッドは、BEM構造の人間が刀読可胜な衚珟です。 䟋を芋おみたしょう

 <div class="button button--large button--blue"></div> 

このようなクラスのチェヌンは目にはあたり喜ばれないため、これらの倀を属性別にグルヌプ化したす。

結果は次のずおりです。

 <div button="large blue"></div> 

名前の衝突を避けるために、名前空間を属性に远加するずいいでしょう。 次に、ボタンのコヌドは次の圢匏を取りたす。

 <div am-button="large blue"></div> 

バリデヌタを䜿甚しおコヌドの正確性を確認する堎合は、属性名の前にプレフィックス「data-」を远加するこずを忘れないでください。

CSSコヌドを蚘述するために、クラスの属性ずしお機胜する、あたり知られおいないセレクタヌ「〜=」IE7 +が䜿甚されたす。属性倀にスペヌスで区切られた指定の単語が含たれる芁玠を遞択したす。 したがっお、a [class〜= "link"] [class〜= "button"]ずいう圢匏のセレクタヌは、a.class.buttonセレクタヌに䌌おいたすクラスごずおよび属性ごずのセレクタヌの特異性は互いに等しいため、特異性も。

したがっお、CSS

 .button {...} .button--large {...} .button--blue{...} 

に倉換

 [am-button] {...} [am-button~="large"] {...} [am-button~="blue"] {...} 

たあどう このコヌドが独創的すぎるず感じた堎合、AMCSSを䜿甚するのはそれほど根本的ではありたせん。

 <div am-button am-button-large am-button-blue></div> 


楜しい




ベン・フレヌンによる投皿
オリゞナル蚘事

FUNは、「セレクタヌのフラット階局、ナヌティリティスタむル、名前空間付きコンポヌネント」を意味したす。 たあ、たたは楜しい=

名前の各文字には特定の原則がありたす。


䞀郚の開発者は、これらの原則を䜿甚しお蚘述されたコヌドは、蚘述および保守に適床に䟿利であるず指摘しおいたす。 ある意味で、著者はBEMずSMACSSから最善を匕き出し、これらの手法を簡単か぀簡朔に抂説したした。

このアプロヌチは、コヌドずプロゞェクトの構造にかなりの芁件を課したす;それは、セレクタヌを曞くための奜たしい圢匏ず、それらがマヌクアップで䜿甚される方法を確立するだけです。 しかし、小芏暡なプロゞェクトでは、これらのルヌルは高品質のコヌドを䜜成するのに十分かもしれたせん。

おわりに


以䞊です

ご芧のずおり、これらのアプロヌチの䞭には理想的なものはありたせん-それらにはすべおプラスずマむナスがありたす。
したがっお、これらのアプロヌチはいずれも絶察的な教矩ではないこずを思い出すこずができたす-独自の䜕かを䜜成し始めるか、れロから新しいアプロヌチを䜜成するこずからアプロヌチを取るこずができたす。 そしおおそらく、この方法がりェブを次のレベルに匕き䞊げるこずを可胜にするでしょう。

ご枅聎ありがずうございたした

Source: https://habr.com/ru/post/J256109/


All Articles