ホームページ >ウェブフロントエンド >CSSチュートリアル >マスタードを切ることでフレックスボックスに移行します
この記事の終わりまでに、できるはずです:
古い構文はFlex-Wrapをサポートしていません
Tweener構文は、IE 10(モバイルを含む)でのみサポートされています。新しい構文は、Firefox(22-27)にFlex-wrapおよびFlex-flowの特性が欠落しているため、完全には実装されていません。
ラッピング(Flex-Wrap)は、レスポンシブグリッドを作成するために必要な仕様の重要な機能です。このため、新しい構文を完全に実装するTweenerの構文とブラウザーのバージョンのみをターゲットにすることをお勧めします。
これにより、次のブラウザバージョンが残りますChrome 29(新しい構文)
safari 6.1(-webkit -prefixを使用した新しい構文)
コンセプトの核心は、どのブラウザ/デバイス/ユーザーエージェントが使用されているかを識別し、サイトを機能させるためにポリフィルを提供しています。特定の機能の存在がクライアント側で検出されるため、利用可能な技術に最も適したソリューションが提供されます。
機能検出は新しいものではありません。前述のBBCの記事は2012年3月に公開され、人気が高まっていますが、2008年にPaul Irishによって普及しているIE固有の条件付きクラスをまだ実装しているWebサイトを見るのは驚くべきことです。Modernizr(Paul Irishによる貢献)はすべて機能検出に関するものです。
クールな新しいWebテクノロジーを利用することは、遅れているブラウザをサポートする必要があるまで、とても楽しいです。 Modernizrを使用すると、ブラウザが機能をサポートするかどうかにかかわらず、条件付きJavaScriptとCSSを簡単に作成して各状況を処理できます。プログレッシブエンハンスメントを簡単に行うのに最適です。
CSSにはネイティブの機能検出がありますが、現在、実際の使用に実行可能になるのに十分な市場シェアがありません。この記事の残りの部分では、JavaScriptでの機能検出を支持して、IE条件付きコメントを捨てる方法について説明します。すべてのプロジェクトでは、機能するために異なる機能セットが必要です。機能検出を実現できる複数の方法があり、その中で最も簡単な方法は次のとおりです。機能とブラウザの識別
Plain JavaScript(BBCで使用されている)を使用して
マスタードを切断するためのModernizrの選択はそれほど効率的ではないかもしれません(ダウンロードとクライアントの処理が必要なため)が、手動でFlex-Rapサポートを検出することは簡単なタスクではありません。また、Modernizrバージョン2はFlex-Wrapを検出しないが、バージョン3はそうであることに注意することも重要です。この機能には、フレックスラインラッピングとラベル付けされていますこのオプションは、Modernizrが作成したドキュメントルートに添付されたCSSクラスを使用するために存在しますが(例:html.flexwrap)、サイトのダウンロードサイズを削減するために、各エクスペリエンスに個別のCSSファイルを提供することをお勧めします。
BBCニュース開発者は、2種類のブラウザを参照してください。この根拠は、2012年のブラウザの風景の気候を考えると、完全に有効でした。ただし、新機能が利用可能になると、部門は必ずしも明確ではありません。たとえば、FlexBoxはすべての「HTML5」ブラウザで完全にサポートされていません。チームの誰かが「HTML4ブラウザ」および「HTML5ブラウザ」と呼び始めました。
-BBCレスポンシブニュース
堅牢なアプローチは、「レガシー」と「モダン」ブラウザバージョンを区別することです。さらに、一部のプロジェクトでは、中途半端(または「遷移」)ブラウザを識別できる複数の部門が必要になる場合があります。
アプローチの実装以下のファイルを作成することから始めます:
index.html - メインのHTMLファイル
styleSheets/modern.css - 最新のブラウザ用のスタイル(メディアクエリ、ラッピング付きのフレックスボックス)
条件付きコメントがないことに注意してください。クリーンで有効なHTMLコードだけです。また、ブラウザがJavaScriptを有効にしていない場合、サポートのレベルに関係なく、Legacy.cssの使用に戻ります。- styleSheets/legacy.css - レガシーブラウザ用のスタイル(メディアクエリなし、フレックスボックスなし)
- Scripts/Dependencies.js - 機能検出
- を実行します
- index.htmlファイルがどのように見えるかは次のとおりです
スクリプトタグがHTMLページの上部にあることにも気付くかもしれません。これは、Modernizrがブラウザが初めてペイントする前にスタイルシートを処理して注入する必要があるためです。これにより、塗り直しが減少し、スタイルのないコンテンツ(FOUC)のフラッシュを回避するのに役立ちます。ただし、ほとんどのスクリプトタグはページの下部にあることを忘れないでください。
Legacy.cssファイルには、次のものが含まれます<span><span><!DOCTYPE html></span> </span><span><span><span><html</span> class<span>="no-js"</span>></span> </span> <span><span><span><head</span>></span> </span> <span><span><span><title</span>></span>Cutting the mustard<span><span></title</span>></span> </span> <span><span><span><script</span> src<span>="javascripts/dependencies.js"</span>></span><span><span></script</span>></span> </span> <span><span><span><noscript</span>></span> </span> <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="stylesheets/legacy.css"</span>></span> </span> <span><span><span></noscript</span>></span> </span> <span><!-- ... --> </span> <span><span><span></head</span>></span> </span> <span><span><span><body</span>></span> </span> <span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><div</span> class<span>="cell cell-1"</span>></span>Cell 1<span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="cell cell-2"</span>></span>Cell 2<span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="cell cell-3"</span>></span>Cell 3<span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="cell cell-4"</span>></span>Cell 4<span><span></div</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span></body</span>></span> </span><span><span><span></html</span>></span></span>この実装には、ClearFixハックと、ラッピング用のNth-Child Pseudo-Classが含まれます。ほとんどのブラウザで動作します。ただし、インターネットエクスプローラー8には、セレクターを動作させるためにSelectIVizrまたは同等のソリューションが必要です。次に、Modern.cssファイル:
このファイルのサイズで延期されないでください。コメントにより大きく見えるようになりますが、これらは各セクションがターゲットにしているものを理解することを開発しやすくします。
次に、dependencies.js。
のコードを書きます<span><span>.container</span> { </span><span>} </span> <span>/* clearfix */ </span><span><span>.container:after</span> { </span> <span>content: ""; </span> <span>display: table; </span> <span>clear: both; </span><span>} </span> <span><span>.cell</span> { </span> <span>width: 50%; </span> <span>float: left; </span><span>} </span> <span>/* wrapping */ </span><span><span>.cell:nth-child(<span>2n+1</span>)</span> { </span> <span>clear: left; </span><span>} </span> <span>/* for visiblity */ </span><span><span>.cell-1</span> { background-color: #000; color: #fff; } </span><span><span>.cell-2</span> { background-color: #666; color: #fff; } </span><span><span>.cell-3</span> { background-color: #ccc; color: #000; } </span><span><span>.cell-4</span> { background-color: #fff; color: #000; }</span>前述のように、Flex-Rapプロパティのサポートを検出するModernizr(バージョン3)のバージョンを生成する必要があります。 JavaScriptファイルの上部にコードを含めてください。オプションで、Ismodern Booleanに追加することで、最新の体験の要件を増やすことができます。たとえば、
<span><span>.container</span> { </span> <span>/* Internet Explorer 10 </span><span> */ </span> <span>display: -ms-flexbox; </span> <span>-ms-flex-wrap: wrap; </span> <span>/* Chrome 21-28 </span><span> * Safari 6.1+ </span><span> * Opera 15-16 </span><span> * iOS 7.0+ </span><span> */ </span> <span>display: -webkit-flex; </span> <span>-webkit-flex-wrap: wrap; </span> <span>/* Chrome 29+ </span><span> * Firefox 28+ </span><span> * Internet Explorer 11+ </span><span> * Opera 12.1 & 17+ </span><span> * Android 4.4+ </span><span> */ </span> <span>display: flex; </span> <span>flex-wrap: wrap; </span><span>} </span> <span><span>.cell</span> { </span> <span>-webkit-flex: 1 0 50%; </span> <span>-ms-flex: 1 0 50%; </span> <span>flex: 1 0 50%; </span><span>} </span> <span>/* for visiblity */ </span><span><span>.cell-1</span> { background-color: #000; color: #fff; } </span><span><span>.cell-2</span> { background-color: #666; color: #fff; } </span><span><span>.cell-3</span> { background-color: #ccc; color: #000; } </span><span><span>.cell-4</span> { background-color: #fff; color: #000; }</span>SASS Solutions
<span><span><!DOCTYPE html></span> </span><span><span><span><html</span> class<span>="no-js"</span>></span> </span> <span><span><span><head</span>></span> </span> <span><span><span><title</span>></span>Cutting the mustard<span><span></title</span>></span> </span> <span><span><span><script</span> src<span>="javascripts/dependencies.js"</span>></span><span><span></script</span>></span> </span> <span><span><span><noscript</span>></span> </span> <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="stylesheets/legacy.css"</span>></span> </span> <span><span><span></noscript</span>></span> </span> <span><!-- ... --> </span> <span><span><span></head</span>></span> </span> <span><span><span><body</span>></span> </span> <span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><div</span> class<span>="cell cell-1"</span>></span>Cell 1<span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="cell cell-2"</span>></span>Cell 2<span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="cell cell-3"</span>></span>Cell 3<span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="cell cell-4"</span>></span>Cell 4<span><span></div</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span></body</span>></span> </span><span><span><span></html</span>></span></span> プログレッシブエンハンスメントとブラウザテスト
FlexBoxとCSSのフロートの違いを理解することが重要です。実装はそれぞれの経験でまったく同じように見えませんが、進歩的な強化の概念は、必ずしもそうする必要はないことを意味します。 たとえば、
デフォルトでは、FlexBoxはすべてのセルを同じ列に伸ばして同じ高さを持つようになります。したがって、1つのセルが長さ3行で、隣接する列の長さが10行の場合、背景は両方のセルで10行まで伸びます。 CSSフロートのフォールバックはこれを行わず、両方のセルは不均一な高さを持っています。複数のブラウザでレイアウトをテストすることは依然として要件ですが、JavaScriptでISModernの値をFalseに強制することで、あらゆるブラウザでレガシーソリューションをテストするのに役立つことを忘れないでください。
結論
この記事では、同じHTMLコードベースで2つの異なるスタイルシートを提供するために機能検出を使用するための基本を提供しました。これは、CSSフロートから離れてアップグレードプロセスを開始し、IE条件付きコメントへの依存度を低下させる非常に効果的な方法です。<span><span>.container</span> { </span><span>} </span> <span>/* clearfix */ </span><span><span>.container:after</span> { </span> <span>content: ""; </span> <span>display: table; </span> <span>clear: both; </span><span>} </span> <span><span>.cell</span> { </span> <span>width: 50%; </span> <span>float: left; </span><span>} </span> <span>/* wrapping */ </span><span><span>.cell:nth-child(<span>2n+1</span>)</span> { </span> <span>clear: left; </span><span>} </span> <span>/* for visiblity */ </span><span><span>.cell-1</span> { background-color: #000; color: #fff; } </span><span><span>.cell-2</span> { background-color: #666; color: #fff; } </span><span><span>.cell-3</span> { background-color: #ccc; color: #000; } </span><span><span>.cell-4</span> { background-color: #fff; color: #000; }</span>FlexBoxのサポートを検出することには強く焦点を当てていますが、ブラウザ向けに新しい機能が開発されているため、マスタードを切断するこのアプローチは、将来の要件に合わせて適応および進化させることができることに注意することが重要です。インターネットエクスプローラー10がターゲットセクターのブラウザ市場シェアで人気がなくなったら、Tweenerの構文を捨てて、新しい構文の使用だけを通じてよりlear的なコードを提供できるかもしれません。
それで、あなたはすべての理論を持っているので、次のプロジェクトでFlexBoxに精通してみませんか?FlexBoxに移住し、レガシーJavaScriptを回避することについてのよくある質問 FlexBoxに移行することの重要性は何ですか?
レガシーJavaScriptを最新のブラウザに提供することを避けるにはどうすればよいですか?
レガシーJavaScriptを最新のブラウザに提供することを避けるために、モジュール/ノモジュールパターンを使用できます。このパターンを使用すると、JavaScriptの2つの個別のバンドルを作成できます。モダンな「モジュール」バンドルとレガシー「Nomodule」バンドルです。 「type =” module "'属性を理解する最新のブラウザは最新のバンドルをダウンロードしますが、古いブラウザーはそれを無視し、代わりにレガシーバンドルをダウンロードします。 FlexBoxは、従来のレイアウト方法よりもいくつかの利点を提供します。これにより、柔軟なレイアウト構造が可能になり、レスポンシブWebサイトの設計が容易になります。また、コンテナ内の要素のアライメント、分布、および順序付けも簡素化されます。 FlexBoxを使用すると、従来のCSSで難しい複雑なレイアウトとアラインメントを簡単に実現できます。特に大規模な既存のプロジェクトのプロセス。移行を開始する前に、フレックスボックスモデルを徹底的に理解することが重要です。より複雑なレイアウトに徐々に移動するシンプルなレイアウトを実験することから始めます。ステップバイステップアプローチを使用して、1つのコンポーネントを一度に移動し、各変更を徹底的にテストします。レガシーJavaScriptを最新のブラウザに提供しているかどうかを確認するために使用できますか? > Google Lighthouse、Gtmetrix、WebPageTestなどのツールは、最新のブラウザにレガシーJavaScriptを提供しているかどうかを特定するのに役立ちます。これらのツールは、ウェブサイトのパフォーマンスを改善できる領域を強調して、詳細なパフォーマンスレポートを提供します。古いブラウザでのサポートの。ただし、いくつかの矛盾とバグがあるかもしれません。必要なベンダープレフィックスをCSSに追加し、古いブラウザーとの互換性を確保できるAutoprefixerなどのツールを使用することをお勧めします。 SEO。レスポンシブで高速で積み込まれたWebサイトは、より優れたユーザーエクスペリエンスを提供します。これはSEOの重要な要素です。さらに、より速くロードされるウェブサイトは、検索エンジンによってrawい回り、インデックス化される可能性が高くなります。新しいレイアウトモデル、ブラウザの不一致に対処し、後方互換性を確保します。さまざまなブラウザやデバイスでウェブサイトを徹底的にテストして、一貫したユーザーエクスペリエンスを確保することが重要です。
FlexBoxとModern JavaScriptの詳細については、FlexBoxとModern JavaScriptについて学ぶための多くのオンラインリソースがあります。 CSS-Tricks、MDN Web Docs、SitePointなどのWebサイトは、包括的なガイドとチュートリアルを提供します。さらに、CodecademyやFreeCodecampなどのオンラインコーディングプラットフォームは、これらのトピックに関するインタラクティブなレッスンを提供します。
以上がマスタードを切ることでフレックスボックスに移行しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。