恐竜甚の最新のCSS



-CSSでのピクセルの移動はすでに困難でした そしお今、圌らは非セマンティックなクラス名、HTMLのむンラむンスタむルを䜿甚し、さらにJavaScriptでCSSスタむルを曞くこずのすごいこずを教えおくれたす

[ここにFamily GuyのGIFを挿入]-ハ

ラむアン・ノヌスによる恐竜コミックのむラスト



奇劙なこずに、CSSは、同時にWeb開発者にずっお最も単玔な蚀語の1぀であり、最も耇雑な蚀語の1぀でもあるず考えられおいたす。 確かに、最初は非垞に簡単です。スタむルのプロパティ、特定の芁玠の倀を定矩し、...知っおいるこずはほずんどすべおです ただし、倧芏暡なプロゞェクトでは、CSSを䜕らかの意味のある方法で敎理するために、状況が非垞に耇雑で耇雑になりたす。 1぀のペヌゞの芁玠をスタむル蚭定するためにCSS行を倉曎するず、他のペヌゞの芁玠に意図しない結果が生じるこずがよくありたす。



CSSの本質的な耇雑さを理解するために、さたざたなベストプラクティスが䜜成されおいたす。 問題は、どれが最良であるかに関しおただコンセンサスがなく、それらの倚くが互いに完党に矛盟しおいるこずです。 CSSを孊習するのがこれが初めおの堎合、この状況は控えめに蚀っおも芋圓違いです。



この蚘事の目暙は、CSSの手法ずツヌルが2018幎に珟圚の状態にどのように進化したかずいう歎史的背景を瀺すこずです。 このストヌリヌを理解するこずにより、各アプロヌチずそれを有益に䜿甚する方法を理解しやすくなりたす。 それでは始めたしょう



基本スタむルにCSSを䜿甚する



別のindex.css



ファむルにリンクする単玔なindex.html



ファむルのみを䜿甚した単玔なWebサむトから始めたしょう。



 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Modern CSS</title> <link rel="stylesheet" href="index.css"> </head> <body> <header>This is the header.</header> <main> <h1>This is the main content.</h1> <p>...</p> </main> <nav> <h4>This is the navigation section.</h4> <p>...</p> </nav> <aside> <h4>This is an aside section.</h4> <p>...</p> </aside> <footer>This is the footer.</footer> </body> </html>
      
      





HTMLではクラスやIDは䜿甚したせんが、 セマンティックタグのみを䜿甚したす 。 通垞、CSSを䜿甚しない堎合、Webサむトは次のようになりたすプレヌスホルダヌテキスト付き。





実際の䟋に぀いおは、ここをクリックしおください。



機胜的ですが、あたりきれいではありたせん。 index.css



基本レむアりトを改善するためにCSSを远加できたす。



 /* BASIC TYPOGRAPHY */ /* from https://github.com/oxalorg/sakura */ html { font-size: 62.5%; font-family: serif; } body { font-size: 1.8rem; line-height: 1.618; max-width: 38em; margin: auto; color: #4a4a4a; background-color: #f9f9f9; padding: 13px; } @media (max-width: 684px) { body { font-size: 1.53rem; } } @media (max-width: 382px) { body { font-size: 1.35rem; } } h1, h2, h3, h4, h5, h6 { line-height: 1.1; font-family: Verdana, Geneva, sans-serif; font-weight: 700; overflow-wrap: break-word; word-wrap: break-word; -ms-word-break: break-all; word-break: break-word; -ms-hyphens: auto; -moz-hyphens: auto; -webkit-hyphens: auto; hyphens: auto; } h1 { font-size: 2.35em; } h2 { font-size: 2em; } h3 { font-size: 1.75em; } h4 { font-size: 1.5em; } h5 { font-size: 1.25em; } h6 { font-size: 1em; }
      
      





ここで、CSSのほずんどはデザむンスタむルフォントサむズ、行の高さなどであり、いく぀かの色スタむルず䞭倮揃えのレむアりトがありたす。 これらのパラメヌタヌの適切な倀を芋぀けるために蚭蚈を怜蚎する必芁がありたすここにsakura.cssのスタむルがありたすが、CSSコヌド自䜓はここで読むほど耇雑ではありたせん。 結果は次のようになりたす。





実際の䟋に぀いおは、ここをクリックしおください。



なんずいう違い このCSSメッセヌゞは、プログラミングや耇雑なロゞックなしで、ドキュメントにスタむルを远加する簡単な方法です。 残念ながら、デザむンや色だけでなくCSSを䜿甚し始めるず、事態はもう少し耇雑になりたす埌で説明したす。



マヌクアップにCSSを䜿甚する



1990幎代、CSSが広く採甚される前は、ペヌゞ䞊のコンテンツをマヌクアップするためのオプションはほずんどありたせんでした。 HTMLは元々、サむドメニュヌや列などを備えた動的なWebサむトではなく、単玔なドキュメントを䜜成するための蚀語ずしお蚭蚈されたした。 圓時、マヌクアップは倚くの堎合HTMLテヌブルで行われたした。ペヌゞ党䜓がテヌブルに完党に配眮され、コンテンツを列ず行に敎理するために䜿甚されおいたした。 このアプロヌチは機胜したしたが、裏偎はコンテンツずプレれンテヌションの密接なリンクでした-サむトのマヌクアップを倉曎したい堎合は、かなりの量のHTMLを曞き盎す必芁があったこずがありたした。



CSSは、コンテンツHTMLで蚘述されたずプレれンテヌションCSSで蚘述されたの分離に匷い掚進力を䞎えたした。 CSSでHTMLからすべおのマヌクアップを抜出する方法がありたしたテヌブルはもうありたせん。 HTMLのようなCSSも元々ペヌゞレむアりト甚に蚭蚈されおいなかったため、最初のレむアりトの詊みぱレガントずは蚀い難いこずに泚意するこずが重芁です。



䞊蚘の䟋で実際にこれがどのように機胜するかを芋おみたしょう。 CSSマヌクアップを定矩する前に、たずすべおのマヌゞンずむンデントマヌクアップの蚈算に圱響したすをリセットし、セクションを異なる色でマヌクしたす矎しさではなく、異なるレむアりトをテストするずきに芖芚的に区別するため。



 /* RESET LAYOUT AND ADD COLORS */ body { margin: 0; padding: 0; max-width: inherit; background: #fff; color: #4a4a4a; } header, footer { font-size: large; text-align: center; padding: 0.3em 0; background-color: #4a4a4a; color: #f9f9f9; } nav { background: #eee; } main { background: #f9f9f9; } aside { background: #eee; }
      
      





これで、Webサむトは䞀時的に次のようになりたす。





実際の䟋に぀いおは、ここをクリックしおください。



これで、CSSを䜿甚しおペヌゞ䞊のコンテンツをマヌクアップする準備ができたした。 叀兞的なフロヌトレむアりトから始めお、時系列で3぀の異なるアプロヌチを評䟡したしょう。



フロヌトベヌスのレむアりト



CSSのfloatプロパティは、元々、巊たたは右のテキスト列内に画像を配眮するために導入されたした新聞でよく芋られたす。 2000幎代初期のWeb開発者は、floatプロパティを画像だけでなく任意の芁玠に割り圓おるこずができるずいう事実を利甚したした。぀たり、コンテンツのdiv党䜓にfloatを割り圓おるこずで行ず列の錯芚を䜜成できたす。 しかし、再び、フロヌトはこの目的のために意図されおいないため、そのような錯芚は䞀貫した方法で実装するこずは困難です。



2006幎、 A List Apartは人気の蚘事「Finding the Holy Grail」を公開したした。この蚘事では、ヘッダヌ、3列、フッタヌずいうHoly Grailずしお知られるレむアりトを䜜成するための詳现か぀培底的なアプロヌチを抂説したした。 今では、このような非垞に単玔なレむアりトが聖杯ず呌ばれおいるのはおかしいようですが、玔粋なCSSで堅牢なレむアりトを䜜成するこずは非垞に困難でした。



以䞋は、蚘事で説明されおいる手法に基づいた䟋のフロヌトに基づくレむアりトです。



 /* FLOAT-BASED LAYOUT */ body { padding-left: 200px; padding-right: 190px; min-width: 240px; } header, footer { margin-left: -200px; margin-right: -190px; } main, nav, aside { position: relative; float: left; } main { padding: 0 20px; width: 100%; } nav { width: 180px; padding: 0 10px; right: 240px; margin-left: -100%; } aside { width: 130px; padding: 0 10px; margin-right: -100%; } footer { clear: both; } * html nav { left: 150px; }
      
      





CSSを芋るず、レむアりトが機胜するために必芁ないく぀かのハック負の境界線、 clear: both



プロパティ、ハヌドコヌドされた幅の蚈算などを芋るこずができたす-これらの各ハックの必芁性に぀いお詳しく説明しおいたす。 結果は次のずおりです。





実際の䟋に぀いおは、ここをクリックしおください。



悪くはありたせんが、3぀の色は列の高さが異なっおいるこずを瀺しおおり、ペヌゞは画面の高さ党䜓を埋めおいたせん。 フロヌトアプロヌチを䜿甚する堎合、これらは避けられない問題です。 フロヌトでできるこずは、コンテンツをセクションの巊たたは右の境界にプッシュするこずだけです。CSSには、他のセクションのコンテンツの高さに圱響を䞎える方法はありたせん。 䜕幎もの間、フレックスボックスベヌスのレむアりトが登堎するたで、この問題には単玔な解決策が欠けおいたした。



フレックスボックスベヌスのレむアりト



CSSフレックスボックスプロパティは2009幎に初めお提案されたしたが、2015幎頃たでブラりザでの広範なサポヌトを受けおいたせんでした。 このプロパティは、1぀の列たたは行にスペヌスがどのように配分されるかを決定するように蚭蚈されおいるため、フロヌトよりも適切なレむアりトメ゜ッドになりたす。 したがっお、フロヌトに基づいたレむアりトを10幎間䜿甚した埌、Web開発者は、フロヌト䞊のレむアりトに固有のハッキングなしでレむアりトにCSSを䜿甚できるようになりたした。



以䞋は、この䟋のフレックスボックスベヌスのレむアりトです。 これは、 Solved by Flexbox Webサむト flexboxでさたざたな䟋を公開しおいる䞀般的なリ゜ヌスで説明されおいる手法に基づいおいたす。 flexboxには、HTMLの3぀の列を囲む远加のラッパヌdivが必芁であるこずに泚意しおください。



 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Modern CSS</title> <link rel="stylesheet" href="index.css"> </head> <body> <header>This is the header.</header> <div class="container"> <main> <h1>This is the main content.</h1> <p>...</p> </main> <nav> <h4>This is the navigation section.</h4> <p>...</p> </nav> <aside> <h4>This is an aside section.</h4> <p>...</p> </aside> </div> <footer>This is the footer.</footer> </body> </html>
      
      





CSSのflexboxコヌドは次のずおりです。



 /* FLEXBOX-BASED LAYOUT */ body { min-height: 100vh; display: flex; flex-direction: column; } .container { display: flex; flex: 1; } main { flex: 1; padding: 0 20px; } nav { flex: 0 0 180px; padding: 0 10px; order: -1; } aside { flex: 0 0 130px; padding: 0 10px; }
      
      





これは、フロヌトベヌスのレむアりトに比べおはるかにコンパクトなコヌドです flexboxのプロパティず倀は䞀芋混乱したすが、負の境界のような倚数のハックの必芁性を排陀したす-倧きな勝利です。 結果は次のずおりです。





実際の䟋に぀いおは、ここをクリックしおください。



はるかに良い すべおの列は同じ高さで、ペヌゞの高さ党䜓を占めたす。 ある意味、これは完璧に芋えたすが、このアプロヌチにはいく぀かの小さな欠陥がありたす。 たず、ブラりザヌのサポヌト-珟圚、すべおの最新ブラりザヌがflexboxをサポヌトしおいたすが、䞀郚の叀いブラりザヌはflexboxをサポヌトしたせん。 幞いなこずに、ブラりザヌ開発者は叀いバヌゞョンのラむフサむクルを終了するために重芁なステップを取っおいるため、Webデザむナヌの開発環境がより安定したす。 別の欠点- <div class="container">



をマヌクアップに远加する必芁があるずいう事実-それなしで行うのは良いこずです。 理想的な䞖界では、どのCSSレむアりトでもHTMLマヌクアップを線集する必芁はたったくありたせん。



しかし、最倧の欠陥はCSSコヌド自䜓にありたす。 Flexboxは倚くのフロヌトハックを排陀したすが、コヌドはレむアりトを説明するほど衚珟力がありたせん。 Flexbox CSSは読みにくく、すべおの芁玠がペヌゞにどのように衚瀺されるかを芖芚的に理解するのは困難です。 このため、正しいパラメヌタヌを掚枬しようずしおいたす-そしお䜕が起こったのかを確認しおください。



フレックスボックスは、芁玠を単䞀の列たたは行に配眮するように蚭蚈されおいるこずをもう䞀床匷調するこずが重芁です。ペヌゞ党䜓をレむアりトするように蚭蚈されおいるわけではありたせん。 圌はそれにうたく察応しおいたすがフロヌトアプロヌチよりもはるかに優れおいたす、他の仕様はいく぀かの列たたは行のレむアりト甚に特別に開発されたした。 CSSグリッドず呌ばれたす。



グリッドベヌスのレむアりト



CSSグリッドは2011幎に最初に提案されたしたがフレックスボックスほど遅くはありたせんでした、ブラりザヌがサポヌトを開始するたでに長い時間がかかりたした。 2018幎の初めに、CSSグリッドは最新のブラりザヌのほずんどでサポヌトされおいたす1幎たたは2幎前の状況ず比范しお倧きな前進です。



以䞋は、この䟋のグリッドベヌスのレむアりトです。 これは、CSSトリックに関するこの蚘事で説明した最初の方法に基づいおいたす。 この䟋では、 <div class="container">



を取り陀くこずができるこずに泚意しおください。これは、フレックスボックスベヌスのレむアりトに远加する必芁がありたした。 ここでは、倉曎せずに元のHTMLを䜿甚しおいたす。 CSSは次のようになりたす。



 /* GRID-BASED LAYOUT */ body { display: grid; min-height: 100vh; grid-template-columns: 200px 1fr 150px; grid-template-rows: min-content 1fr min-content; } header { grid-row: 1; grid-column: 1 / 4; } nav { grid-row: 2; grid-column: 1 / 2; padding: 0 10px; } main { grid-row: 2; grid-column: 2 / 3; padding: 0 20px; } aside { grid-row: 2; grid-column: 3 / 4; padding: 0 10px; } footer { grid-row: 3; grid-column: 1 / 4; }
      
      





結果は、flexboxベヌスのレむアりトず芖芚的に同じです。 ただし、ここでは、CSSコヌドは、目的のレむアりトを明確に衚瀺するずいう意味ではるかに優れおいたす。 列ず行のサむズず圢状はボディセレクタで定矩され、各グリッド芁玠はその䜍眮によっお盎接決定されたす。



混乱を招く可胜性のある唯䞀のものは、 grid-column



の開始䜍眮ず終了䜍眮を決定するgrid-column



プロパティです。 この䟋には3぀の列がありたすが、1〜4の数字が䜿甚されおいるため、混乱を招く可胜性がありたす。





実際の䟋に぀いおは、ここをクリックしおください。



最初の列は䜍眮1で始たり、䜍眮2で終わり、2番目の列は2で始たり3で終わり、3番目の列は䜍眮3で始たり、䜍眮4で終わりたす。ヘッダヌは、拡匵のため1 / 4



倀1 / 4



持぀grid-column



プロパティを瀺したすペヌゞ党䜓で、navは1 / 2



倀1 / 2



持぀grid-column



を瀺し、最初の列などに展開したす。



グリッド構文に慣れるず、これがCSSでレむアりトを実装する理想的な方法であるこずが明らかになりたす。 唯䞀の本圓の欠点は、すべおのブラりザヌでサポヌトされおいないこずです。 ただし、この1幎で状況は倧幅に改善されたした。 CSSグリッドの䟡倀を、CSSの最初の実際のツヌルずしお過倧評䟡するこずは困難です。CSSグリッドは、レむアりト、぀たりペヌゞ党䜓のレむアりト甚に䜜成されたものです。 ある意味で、Webデザむナヌはクリ゚むティブレむアりトを䜜成するずきは垞に非垞に保守的でなければなりたせんでした。最近たでツヌルは非垞に壊れやすく、さたざたなハックや非暙準の抜け穎が必芁だったからです。 CSSグリッドの登堎により、これたでに䜜成できなかった創造的なデザむンレむアりトの新しい波が生たれる可胜性がありたす-玠晎らしい時です









-わかった CSSで䜕かを倉曎するず、他の䜕かが壊れおしたうのは面癜いこずです

「たぶん、しかしフレックスボックスやグリッドのような新しい仕様で、状況はずっず良くなった」

-ハ CSSには、レむアりトだけでなく、さらに困難がありたす



新しい構文にCSSプリプロセッサを䜿甚する



これたで、単玔なスタむルずレむアりトにCSSを䜿甚するこずを芋おきたした。 次に、CSS蚀語自䜓を操䜜するのに圹立぀ツヌルに぀いお説明したす。 CSSプリプロセッサから始めたしょう。



CSSプリプロセッサを䜿甚するず、スタむルを他の蚀語で蚘述できたす。その埌、スタむルはCSSに倉換され、ブラりザが理解できるようになりたす。 これは、ブラりザが新機胜のサポヌトをあたりにもゆっくりず導入したずきに非垞に重芁でした。 最初の人気のあるCSS Sassプリプロセッサは2006幎にリリヌスされたした。 新しい短い構文括匧の代わりにむンデント、セミコロンがないなどを実装し、倉数、補助関数、蚈算など、CSSでは利甚できない高床な関数を远加したした。 Sassを倉数ずずもに䜿甚した堎合、前の䟋のカラヌセクションは次のようになりたす。



 $dark-color: #4a4a4a $light-color: #f9f9f9 $side-color: #eee body color: $dark-color header, footer background-color: $dark-color color: $light-color main background: $light-color nav, aside background: $side-color
      
      





$



蚘号が再利甚可胜な倉数を瀺しおいるこずに泚意しおください。 䞭括匧やセミコロンはないため、構文がわかりやすくなりたす。 玔粋な構文は玠晎らしいですが、倉数のような関数は、クリヌンで保守可胜なCSSを曞くための新しい可胜性を開いたので、その時に真の革呜を起こしたした。



Sassを䜿甚するには、Rubyをむンストヌルする必芁がありたす。 このプログラミング蚀語は、Sassコヌドを通垞のCSSにコンパむルするために䜿甚されたす。 次に、 Sass gemをむンストヌルし、コマンドラむンでコマンドを実行しお、.sassファむルを.cssファむルに倉換する必芁がありたす。 このコマンドの衚瀺䟋を次に瀺したす。



sass --watch index.sass index.css







このコマンドは、 index.sass



ファむルのSassコヌドをindex.sass



ファむルの通垞のCSSにindex.css



たす --watch



匕数は、保存埌に入力が倉曎されるたびに開始するこずを瀺したす。これは䟿利です。



このようなプロセスはアセンブリフェヌズず呌ばれ、2006幎には参入にずっおかなり重芁な障壁でした。 Rubyのようなプログラミング蚀語が䞍足しおいる堎合は、すべおが簡単です。 しかし、圓時の倚くのフロント゚ンド開発者は、そのようなツヌルが䞍芁なHTMLずCSSのみで䜜業しおいたした。 したがっお、これは、CSSプリプロセッサ機胜を䜿甚するために、開発者が゚コシステム党䜓を調査するためのかなりの芁件です。



2009幎に、CSS Lessプリプロセッサがリリヌスされたした。 たた、Rubyで蚘述されおおり、Sassず同様の機胜を備えおいたす。 䞻な違いは、可胜な限りCSSに類䌌した構文でした。 これは、CSSコヌドも有効なLessコヌドであるこずを意味したす。 以䞋に、Less構文を䜿甚した同じ䟋を瀺したす。



 @dark-color: #4a4a4a; @light-color: #f9f9f9; @side-color: #eee; body { color: @dark-color; } header, footer { background-color: @dark-color; color: @light-color; } main { background: @light-color; } nav, aside { background: @side-color; }
      
      





ほずんど違いはありたせん倉数の$



代わりに@



プレフィックスのみが、Sassの䟋ほどきれいに芋えたせん。 ここでは、CSSず同じ䞭括匧ずセミコロンが衚瀺されたす。 しかし、CSSに近いずいう事実により、Webデザむナヌはこのプリプロセッサを習埗しやすくなりたした。 2012幎、Lessは、コンパむル時にRubyの代わりにJavaScript具䜓的にはNode.js を䜿甚するように曞き盎されたした。 その埌、LessはRubyの競合他瀟よりも速く動䜜し始め、プリプロセッサ自䜓は、すでにNode.jsを䜿甚しおいる開発者にずっおより魅力的になりたした。



䞊蚘のコヌドを通垞のCSSに倉換するには、たずNode.jsをむンストヌルし 、次にLessをむンストヌルしおコマンドを実行する必芁がありたす。



lessc index.less index.css







このコマンドは、 index.less



ファむルのlessコヌドをindex.less



ファむルの通垞のCSSにindex.css



たす。 sass



、ファむルの倉曎を監芖するlessc



コマンドがないこずに泚意しおください。 そのため、他のツヌルを䜿甚しお.less



ファむルを自動的に远跡およびコンパむルする.less



があり、プロセスが少し耇雑になりたす。 繰り返しになりたすが、コマンドラむンツヌルの䜿甚に慣れおいるプログラマヌにずっお耇雑なこずはありたせんが、これは、CSSプリプロセッサヌを単に䜿甚したい普通のデザむナヌにずっお倧きな障壁です。



Lessが人気を博したずき、Sass開発者は2010幎にプリプロセッサに新しいSCSS構文を远加したしたLessに䌌たCSSのスヌパヌセット。 たた、C / C ++のRuby Sass゚ンゞンの移怍版であるLibSassもリリヌスしたした 。これにより、䜜業が加速され、さたざたな蚀語でのプログラミングが可胜になりたした。



別の代替CSS Stylusプリプロセッサが2010幎にリリヌスされたした。 Node.jsで蚘述されおおり、SassたたはLessよりも簡朔な構文です。 通垞、CSSプリプロセッサの説明では、これらの3぀のプログラムが最も䞀般的なものずしお蚀及されおいたすSass、Less、およびStylus。 最終的に、それらはすべお機胜が非垞に䌌おいるため、いずれを遞択しおも間違えられたせん。



ただし、ブラりザが最終的に機胜倉数や蚈算などの䞀郚を実装し始めたため、CSSプリプロセッサの䟡倀が最近䜎䞋したず考える人もいたす。 さらに、反察のアプロヌチがありたす-CSS埌凊理。これは、CSSプリプロセッサが完党に時代遅れになる可胜性があるためです明らかにこれは論点です。 これから怜蚎するCSSポストプロセッサ。



倉換関数にCSSポストプロセッサを䜿甚する



CSSポストプロセッサは、JavaScriptを䜿甚しおCSSを解析し、有効なCSSに倉換したす。 この意味では、CSSプリプロセッサに非垞に䌌おいたす-同じ問題を解決する別の方法ず考えるこずができたす。 䞻な違いは、CSSプリプロセッサが特別な構文を䜿甚しお倉換オブゞェクトを定矩し、CSSポストプロセッサが元のCSSコヌドを解析しお特別な構文なしで倉換できるこずです。 䟋でこれを瀺すのが最善です。 ヘッダヌタグのスタむルを定矩した䞊蚘の䟋のCSS郚分を芋おみたしょう。



 h1, h2, h3, h4, h5, h6 { -ms-hyphens: auto; -moz-hyphens: auto; -webkit-hyphens: auto; hyphens: auto; }
      
      





2行目から4行目はベンダヌプレフィックスず呌ばれたす。 ブラりザは、新しいCSS機胜をテストするずき、たたは実隓モヌドで䜿甚するずきにベンダヌプレフィックスを䜿甚したす。 このようにしお、開発者はこれらの機胜をテストしおから、ブラりザに最終的に実装できたす。 Microsoft Internet Explorerの-ms



プレフィックス、Mozilla Firefoxの-moz



プレフィックス、WebkitブラりザヌGoogle Chrome、Safari、Operaの最新バヌゞョンなどの-webkit



プレフィックスは-webkit



です。



これらのさたざたなベンダヌプレフィックスを埋め蟌んでCSSプロパティを䜿甚するのはかなり䞍䟿です。 必芁に応じお、いく぀かのツヌルがこれを自動的に行っおくれたら嬉しいです。 これは、CSSプリプロセッサを䜿甚しお実行できたす。 たずえば、SCSS構文では



 @mixin hyphens($value) { -ms-hyphens: $value; -moz-hyphens: $value; -webkit-hyphens: $value; hyphens: $value; } h1, h2, h3, h4, h5, h6 { @include hyphens(auto); }
      
      





ここでは、Sassのmixin関数を䜿甚したす。この関数は、CSSの䞀郚を䞀床定矩し、それをあらゆる堎所で再利甚したす。このファむルが通垞のCSSにコンパむルされるず、挔算子@include



は察応するCSSコヌドに眮き換えられ@mixin



たす。これは䞀般に適切な゜リュヌションですが、ベンダヌプレフィックスを必芁ずする各CSSプロパティのミックスむンを定矩するのはナヌザヌの責任です。これらのミックスむン定矩にはサポヌトが必芁です。ブラりザがいく぀かのCSS機胜を公匏に実装しおいる堎合、䞍芁なベンダヌプレフィックスを削陀するこずができたす。



ミックスむンの代わりに、通垞のCSSを䜜成しお、ツヌルがプレフィックスを必芁ずするプロパティを自動的に怜出し、必芁に応じお远加するようにしたす。 CSSポストプロセッサはこの方法で機胜したす。たずえば、䜿甚する堎合autoprefixerプラグむンを䜿甚したPostCSSを䜿甚するず、ベンダヌプレフィックスなしで完党に通垞のCSSを蚘述でき、ポストプロセッサがゞョブを実行したす。



 h1, h2, h3, h4, h5, h6 { hyphens: auto; }
      
      





このコヌドでCSSポストプロセッサを実行するず、行の代わりにhyphens: auto;



関連するすべおのベンダヌプレフィックスが衚瀺されたすautoprefixerプラグむンの自動修正ルヌルに埓っお、手動で倉曎する必芁はありたせん。぀たり、互換性や特別な構文を心配するこずなくプレヌンなCSSを曞くこずができたす。



autoprefixerに加えお、PostCSS甚のプラグむンが他にもありたす。これらのプラグむンを䜿甚するず、本圓にすばらしいこずができたす。cssnextプラグむンを䜿甚するず、実隓的なCSS機胜を適甚できたす。CSSモゞュヌルプラグむンは、名前の競合を回避するためにクラスを自動的に倉曎したす。StylelintプラグむンCSSで゚ラヌず競合する条件を芋぀けたす。これらのツヌルは実際に昚幎たたは2幎で開始され、これたで利甚できなかった開発者のワヌクフロヌの機胜を実蚌したした



ただし、進捗は支払わなければなりたせん。 PostCSSのようなCSSポストプロセッサをむンストヌルしお䜿甚するには、CSSプリプロセッサよりも倚くの劎力が必芁です。コマンドラむンからツヌルをむンストヌルしお実行するだけでなく、個々のプラグむンをむンストヌルしお構成し、より耇雑なルヌルセット怜蚎するブラりザヌなどを定矩する必芁がありたす。代わりに、コマンドラむンから盎接PostCSSを実行するので、倚くの開発者は次のように蚭定可胜なビルドシステムに統合うなり声、ガルプたたはWebPACKの。これにより、フロント゚ンドに䜿甚できるさたざたなビルドツヌルをすべお管理しやすくなりたす。



泚フロント゚ンドに最新のビルドシステムを䜿甚したこずがない堎合は、倚くの情報を孊習する必芁があるように思われるかもしれたせん。最初から始めたい堎合は、「恐竜甚のモダンなJavaScript」ずいう蚘事を読んでください。フロント゚ンド開発でこれらの最新機胜を䜿甚するために必芁なすべおのJavaScriptツヌルに぀いお説明しおいたす。


CSSポストプロセッサに関する論争が展開しおいるこずは泚目に倀したす。甚語がわかりにくいず蚀う人もいたすこれらのツヌルはすべおCSSプリプロセッサず呌ばれるべきだず蚀う人もいれば、単にCSSプロセッサなどず呌ばれるべきだず蚀う人もいたす。 CSSポストプロセッサはCSSプリプロセッサの必芁性を完党に排陀するず信じおいる人もいれば、CSSプリプロセッサを䞀緒に䜿甚すべきだず信じおいる人もいたす。いずれにせよ、CSSからできる限りすべおを圧瞮したい堎合は、CSSポストプロセッサヌを孊ぶ必芁がありたす。









— ! , CSS .

— , !

— ! , ?

— , CSS , , !

— ! CSS!

— CSS!




CSS



CSSプリプロセッサやCSSポストプロセッサなどのツヌルは、CSS開発の䜿いやすさを向䞊させるための長い道のりを歩んできたした。しかし、これらのツヌルだけでは、倧芏暡なCSSコヌドベヌスをサポヌトする問題を解決するには䞍十分です。この問題を解決するために、圌らはCSSの曞き方に関するさたざたなガむドラむンを䜜成し始めたした。通垞はCSS方法論ず呌ばれおいたす。



特定のCSS方法論を掘り䞋げる前に、長期のCSSサポヌトがなぜそれほど耇雑なのかを理解するこずが重芁です。重芁な問題は、CSSのグロヌバルな性質です。蚭定した各スタむルは、ペヌゞのすべおの郚分にグロヌバルに適甚されたす。䞀意のクラス名をサポヌトするために詳现な呜名芏則を導入するか、CSSの特異性ルヌルを導入する仕事を任されおいたす。どのスタむルを各芁玠に適甚するかを決定したす。CSS方法論は、倧芏暡なコヌドベヌスでこれらの問題を回避するために、CSSを䜓系的に䜜成する方法を提䟛したす。いく぀かの䞀般的な方法論を時系列で怜蚎しおください。



りッ



OOCSSObject Oriented CSSは、2぀の䞻芁な原則に基づいお、2009幎に方法論ずしお初めお導入されたした。最初の原則は、構造をシェルから分離するこずです。これは、レむアりトずしおの構造の定矩を含むCSSを、シェル色、フォントなどを定矩するCSSず混合しないこずを意味したす。シェル、぀たりアプリケヌションの倖芳を再䜜成する方が簡単です。 2番目の原則は、コンテンツをコンテナから分離するこずです。これは、ペヌゞ䞊の䜍眮に関係なく、オブゞェクトは同じように芋えるずいう重芁な考えを持぀、再利甚可胜なオブゞェクトずしお芁玠を衚すこずを意味したす。



OOCSSは、適切に蚭蚈されたガむドラむンを提䟛したすが、このアプロヌチの詳现をあたり正確に説明しおいたせん。SMACSSのような埌続の方法論では、重芁な抂念を取り入れ、詳现を远加しお䜜業を容易にしたした。



SMACSS



SMACSSCSSのスケヌラブルおよびモゞュラヌアヌキテクチャは、基本芏則、レむアりト芏則、モゞュヌル、状態芏則、テヌマ芏則の 5぀の個別のカテゎリにCSSを蚘述するこずを掚奚する方法論ずしお2011幎に登堎したした。SMACSS方法論では、特定の呜名芏則も掚奚されおいたす。たずえば、レむアりトルヌルでは、クラス名の前にl-



たたはを付ける必芁がありたすlayout-



。状態ルヌルでは、クラス名の前に、状態を説明するプレフィックスを付ける必芁がありたす䟋is-hidden



たたはis-collapsed



。



SMACSSにはOOCSSよりもはるかに特異性がありたすが、この方法論では、どのCSSルヌルを分類するかを慎重に怜蚎する必芁がありたす。BEMのような埌続のアプロヌチは、郚分的に決定を行うため、より簡単に実行できたす。



ベム



2010幎に導入されたBEMブロック、芁玠、修食子方法論は、ナヌザヌむンタヌフェむスを独立したブロックに分割するこずに基づいおいたす。ブロックは再利甚可胜なコンポヌネントです䟋ずしお定矩される怜玢フォヌム<form class="search-form"></form>



。芁玠はブロックの小さな郚分であり、それ自䜓で再利甚するこずはできたせん䟋ずしお、怜玢フォヌムのボタンがありたす<button class="search-form__button">Search</button>



。修食子は、ブロックたたは芁玠の倖芳、状態、たたは動䜜を決定する゚ンティティです䟋は、<button class = "search-form__button search-form__button-disabled"> Search </ button>ずしお定矩された怜玢フォヌムの無効なボタンです。



BEMの方法論は、特定の呜名芏則を䜿甚しお理解しやすく、初心者が耇雑な決定を行うこずなく適甚できたす。コむンの裏返しは、䞀郚のクラス名はかなり冗長であり、セマンティック名を指定するための埓来の芏則に察応しおいないこずです。その埌、アトミックCSSなどの新しい方法論が登堎し、この型にはたらないアプロヌチがたったく新しいレベルに到達したした



アトミックCSS



Atomic CSS方法論Functional CSSずも呌ばれたすは2014幎に登堎したした。これは、芖芚機胜に基づいた名前を持぀、小さく高床に特殊化されたクラスを䜜成するずいう考えに基づいおいたす。このアプロヌチは、前述のOOCSS、SMACSS、およびBEMずはたったく逆です。ペヌゞ䞊の芁玠を再利甚可胜なオブゞェクトずしお扱う代わりに、Atomic CSSは通垞これらのオブゞェクトを無芖し、再利甚可胜な高床に特殊化されたナヌティリティクラスを適甚しお各芁玠をスタむルしたす。代わり<button class="search-form__button">Search</button>



に、次のようになり<button class="f6 br3 ph3 pv2 white bg-purple hover-bg-light-purple">Search</button>



たす。



この䟋に察する最初の反応が恐怖で反動するこずである堎合、あなたは䞀人ではありたせん。倚くの人は、この方法論を確立されたCSSベストプラクティスの絶察違反ず芋なしおいたす。ただし、堎合によっおはこれらの慣行の有効性に疑問を投げかける倚くの実䜓的な議論がありたした。この蚘事では、埓来のタスク分離がどのようにHTML䟝存のCSSを䜜成するかBEMのような方法論を䜿甚する堎合でもに焊点を圓お、「アトミック」たたは機胜的アプロヌチはCSS䟝存のHTMLの䜜成を匷制したす。䞡方のオプションを䜿甚できたすが、よく芋るず、原則ずしおCSSずHTMLを完党に分離するこずはできたせん。



JSのCSSのような他のCSS方法論には、実際にはCSSずHTMLは垞に互いに䟝存するずいう理解が含たれおいたす。この認識により、これたでで最も物議を醞す方法論の1぀が䜜成されたした...



JSのCSS



2014幎に導入されたJSのCSS方法論。CSSスタむルを個別のスタむルシヌトではなく、各コンポヌネント内で定矩するこずに基づいおいたす。この方法論は、React JavaScriptフレヌムワヌク独自のHTMLファむルではなくJavaScriptで盎接コンポヌネントのHTMLを定矩するずいう曖昧なアプロヌチを遞択したのために開発されたした。圓初、方法論ではネストされたスタむルを䜿甚しおいたしたが、埌の実装では、JavaScriptがCSSコンポヌネントコンポヌネントごずの䞀意のクラス名を生成し、スタむルタグずずもにドキュメントに挿入したした。



JSのCSS方法論も、コンテンツ共有に関する確立されたCSSベストプラクティスに完党に反しおいたす。実際、時間の経過ずずもに、Webの䜿甚方法は劇的に倉化したした。圓初、りェブは䞻に静的サむトで構成されおいたした。そこでは、HTMLコンテンツずCSSプレれンテヌションを分離するこずは完党に理にかなっおいたす。珟圚、Webは動的なWebアプリケヌションに䜿甚されおいたす。ここでは、再利甚可胜なコンポヌネントが有効です。



JSのCSS方法論の目暙は、カプセル化された独自のHTML / CSS / JSで構成されるハヌドバむンドコンポヌネントの定矩を可胜にし、あるコンポヌネントのCSSが他のコンポヌネントに圱響を䞎えないようにするこずです。 Reactは、これらのコンポヌネントを狭い境界で宣䌝した最初の人気のあるフレヌムワヌクの1぀でした。圌の圱響で、Angular、Ember、Vue.jsなどの他の䞀般的なフレヌムワヌクに同じコンポヌネントが導入されたした。 JSのCSS方法論は比范的新しいため、この分野で倚くの実隓が続けられおいるこずに泚意するこずが重芁です。開発者は、Webアプリケヌションのコンポヌネントの時代にCSSの新しいベストプラクティスを確立しようずしおいたす。






非垞に倚くの異なるCSS方法論で混乱するのは簡単ですが、正しいアプロヌチが唯䞀ではないこずを芚えおおくこずが重芁です。かなり耇雑なCSSコヌドベヌスがある堎合に䜿甚できるさたざたなアクセス可胜なツヌルずしお提瀺する必芁がありたす。この分野での最新の実隓はすべお、長期的にはすべおの開発者に利益をもたらすように、さたざたな思慮深いアプロヌチを遞択できるず䟿利です。



おわりに



これは、珟代のCSSの抂芁です。我々は議論しおきた基本的なスタむルのためのCSSを䜿甚する意匠性の、レむアりトのCSSを䜿甚するフロヌトを䜿甚しお、フレキシボックスずグリッドの、新しい構文の利甚CSSプリプロセッサ倉数やmixin'y、䜿甚など、機胜の転換のためのCSS-ポストプロセッサなどの远加などを、ベンダヌプレフィックスず信頌できるメンテナンスのためのCSS方法論CSSスタむルのグロヌバルな性質を克服したす。高床なセレクタヌ、トランゞション、アニメヌション、フォヌム、動的倉数など、他の倚くのCSS関数を詳现に理解する機䌚はありたせんでした-リストは延々ず続きたす。 CSSで議論すべきこずはたくさんありたす。誰かが簡単だず蚀ったずしおも、圌はおそらく半分も知らないでしょう



珟代のCSSは、倉化し続け、急速に進化し続けおいるため、間違いなく扱いにくいものです。しかし、りェブが長幎にわたっおどのように進化したかずいう歎史的背景を芚えおおくこずは重芁です。たた、倚くの賢い人が特定のツヌルや方法論に取り組んでおり、最良のCSSプラクティスがりェブずずもに進化するこずを知っおいるのは玠晎らしいこずです。今がりェブ開発者になるための゚キサむティングな時間です。この情報があなたの旅の地図ずしお圹立぀こずを願っおいたす





-ハしかし、すべおのタフな人はただCSSを嫌っおいたすよね

-私が蚀ったように、䞀床にすべおではありたせん

-...倧䞈倫。少なくずもので、CSS-ミヌムを楜しむ䞎えるCSSのCOOL [境界のサむンアりト]



All Articles