マスタードを切ることでフレックスボックスに移行します
キーテイクアウト
- この記事では、CSSフロートを使用してFlexBoxへの移行について、CSSのレイアウトを構築するための遷移について説明します。 FlexBoxの古い構文とTweener構文の制限を強調し、新しい構文を完全に実装するTweener構文とブラウザバージョンのみをターゲットにすることをお勧めします。 「マスタードの切断」または機能検出の概念は、どのブラウザー/デバイス/ユーザーエージェントが使用されており、利用可能なテクノロジーに最も適切なソリューションを提供するかを特定する方法として導入されています。これは、Plain JavaScriptまたはModernizrを使用して実行できます。
- 著者は、SASSを使用してCSS出力のサイズを縮小し、維持を容易にすることを提案しています。また、FlexBoxの実装は、プログレッシブエンハンスメントの概念により、各エクスペリエンスでまったく同じように見えないことも言及しています。 この記事は、ブラウザ向けに新機能が開発されているため、機能検出に対するこのアプローチが将来の要件に合わせて適応および進化できることを強調することで締めくくります。それは、読者が次のプロジェクトでFlexBoxに精通していることを奨励しています。
- フロントエンド開発者として、CSSフロートを使用してFlexBoxの新しいエキサイティングな世界に飛び込むことから離れる時が来ました。 CSSフロートは、レイアウトのスタイリングへの時代遅れのアプローチです。バージョン4.0以来、インターネットエクスプローラーで利用可能であり、回避策は順応性があります(ClearFixハックを含み、列をラッピングするためにnth-child pseudo-classを使用しています)。 この記事の主なトピックは、その断片化を考慮して複数のブラウザにFlexBoxを実装する方法です。 FlexBoxに精通したい場合は、多くの優れたリソースがあります。次のことを強くお勧めします。
- FlexBoxを使用する準備はできていますか? SitePointのNick Salloum
この記事の終わりまでに、できるはずです:
- レスポンシブWebサイトのターゲットにするFlexBoxのバージョンを理解してください。 機能検出(マスタードの切断)を介してFlexBoxを使用し、レガシーブラウザーにフォールバックを提供します。
- ほとんどの状況でIE条件付きコメントを使用することから離れて移動します。 レガシーフォールバックを備えた基本的な2×2グリッドを作成することにより、FlexBoxの実用的な使用を示します。
- flexboxの簡単な歴史
- フレキシブルボックスレイアウトモジュール(別名FlexBox)は、CSSのレイアウトを構築する新しい方法です。複数の改訂を受け、比較的短い存在が大幅に進化しています。執筆時点では、FlexBoxはまだW3Cワーキングドラフトですが、他の基準と同様に、生産環境で魅力的ではないはずです。 標準には3つの反復があり、一般に古い構文、Tweener構文、新しい構文と呼ばれます。
古い構文はFlex-Wrapをサポートしていません
Tweener構文は、IE 10(モバイルを含む)でのみサポートされています。新しい構文は、Firefox(22-27)にFlex-wrapおよびFlex-flowの特性が欠落しているため、完全には実装されていません。
ラッピング(Flex-Wrap)は、レスポンシブグリッドを作成するために必要な仕様の重要な機能です。このため、新しい構文を完全に実装するTweenerの構文とブラウザーのバージョンのみをターゲットにすることをお勧めします。
これにより、次のブラウザバージョンが残ります- Internet Explorer 10(-ms-プレフィックスを使用した構文のtweener)
- Internet Explorer 11およびEdge(新しい構文)
- firefox 28(新しい構文)
Chrome 29(新しい構文)
safari 6.1(-webkit -prefixを使用した新しい構文)
- iOS Safari 7.0(-webkit-プレフィックスを備えた新しい構文)
- FlexBoxをサポートしていない重要な市場シェアを持つブラウザがあるため、これらはCSSフロートを使用することにフォールバックするはずです。しかし、これはコードでどのように表現できますか? FlexBoxの代わりにフロートを使用してCSSを受信する必要があるブラウザバージョンを区別する最良の方法は何ですか?新しい構文をサポートするがラッピングをサポートしないFirefoxのバージョンを確実に保証するために使用できる戦略は、レガシーとして識別されますか?
- 紹介:マスタードを切る。 マスタードの切断(機能検出)
- 以前に技術用語として聞いたことがない場合、「マスタードのカット」はBBC Newsの開発チームによって造られました。この用語は、BBCのWebサイトが膨大な国際的な視聴者に対応し、ブラウザバージョンとデバイスをターゲットにしなければならないという事実に由来しています。
- [B]ラウザー検出は不可能な絡み合いになり、ほとんど使用されなくなり、はるかに優れたものに取って代わられます - 機能検出。
- […]機能検出も完全に信頼できません。失敗する場合があります。 -
- styleSheets/legacy.css - レガシーブラウザ用のスタイル(メディアクエリなし、フレックスボックスなし)
- Scripts/Dependencies.js - 機能検出
- を実行します
- index.htmlファイルがどのように見えるかは次のとおりです
コンセプトの核心は、どのブラウザ/デバイス/ユーザーエージェントが使用されているかを識別し、サイトを機能させるためにポリフィルを提供しています。特定の機能の存在がクライアント側で検出されるため、利用可能な技術に最も適したソリューションが提供されます。
機能検出は新しいものではありません。前述のBBCの記事は2012年3月に公開され、人気が高まっていますが、2008年にPaul Irishによって普及しているIE固有の条件付きクラスをまだ実装しているWebサイトを見るのは驚くべきことです。Modernizr(Paul Irishによる貢献)はすべて機能検出に関するものです。
クールな新しいWebテクノロジーを利用することは、遅れているブラウザをサポートする必要があるまで、とても楽しいです。 Modernizrを使用すると、ブラウザが機能をサポートするかどうかにかかわらず、条件付きJavaScriptとCSSを簡単に作成して各状況を処理できます。プログレッシブエンハンスメントを簡単に行うのに最適です。
CSSにはネイティブの機能検出がありますが、現在、実際の使用に実行可能になるのに十分な市場シェアがありません。この記事の残りの部分では、JavaScriptでの機能検出を支持して、IE条件付きコメントを捨てる方法について説明します。すべてのプロジェクトでは、機能するために異なる機能セットが必要です。機能検出を実現できる複数の方法があり、その中で最も簡単な方法は次のとおりです。機能とブラウザの識別
Plain JavaScript(BBCで使用されている)を使用して
を使用しています
Modernizrを使用して(この記事で使用されます)
- 最も効率的なアプローチは、Vanilla JavaScriptの実装です。高速で(クライアントが追加のライブラリをダウンロードする必要はないため)、追加の処理は必要ありません。このアプローチは、既知の問題があるため、完全ではありません。ただし、一般的な機能検出の問題を克服する方法があります。
マスタードを切断するための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の使用に戻ります。スクリプトタグがHTMLページの上部にあることにも気付くかもしれません。これは、Modernizrがブラウザが初めてペイントする前にスタイルシートを処理して注入する必要があるためです。これにより、塗り直しが減少し、スタイルのないコンテンツ(FOUC)のフラッシュを回避するのに役立ちます。ただし、ほとんどのスクリプトタグはページの下部にあることを忘れないでください。
Legacy.cssファイルには、次のものが含まれますこの実装には、ClearFixハックと、ラッピング用のNth-Child Pseudo-Classが含まれます。ほとんどのブラウザで動作します。ただし、インターネットエクスプローラー8には、セレクターを動作させるためにSelectIVizrまたは同等のソリューションが必要です。<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>ログイン後にコピー次に、Modern.cssファイル:
このファイルのサイズで延期されないでください。コメントにより大きく見えるようになりますが、これらは各セクションがターゲットにしているものを理解することを開発しやすくします。
次に、dependencies.js。
のコードを書きます前述のように、Flex-Rapプロパティのサポートを検出するModernizr(バージョン3)のバージョンを生成する必要があります。 JavaScriptファイルの上部にコードを含めてください。<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>ログイン後にコピーログイン後にコピーオプションで、Ismodern Booleanに追加することで、最新の体験の要件を増やすことができます。たとえば、
SASS Solutions<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>ログイン後にコピー
<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条件付きコメントへの依存度を低下させる非常に効果的な方法です。FlexBoxのサポートを検出することには強く焦点を当てていますが、ブラウザ向けに新しい機能が開発されているため、マスタードを切断するこのアプローチは、将来の要件に合わせて適応および進化させることができることに注意することが重要です。<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>ログイン後にコピーログイン後にコピーインターネットエクスプローラー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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









最近GraphQLの作業を開始した場合、またはその長所と短所をレビューした場合、「GraphQLがキャッシュをサポートしていない」または

Svelte Transition APIは、コンポーネントがカスタムSVELTE遷移を含むドキュメントを入力または離れるときにアニメーション化する方法を提供します。

あなたのウェブサイトのコンテンツプレゼンテーションの設計にどれくらいの時間に費やしますか?新しいブログ投稿を書いたり、新しいページを作成したりするとき、あなたは考えていますか

最近のビットコインの価格が20k $ $ USDを超えており、最近30Kを破ったので、イーサリアムを作成するために深く掘り下げる価値があると思いました

NPMコマンドは、サーバーの開始やコンパイルコードなどの1回限りのプロセスまたは継続的に実行されるプロセスとして、さまざまなタスクを実行します。

この記事では、影やグラデーションなどのテキスト効果にCSSを使用し、パフォーマンスのために最適化し、ユーザーエクスペリエンスの向上について説明します。また、初心者向けのリソースもリストしています。(159文字)

開発者としての段階に関係なく、私たちが完了したタスクは、大小を問わず、個人的および専門的な成長に大きな影響を与えます。

先日、エリック・マイヤーとおしゃべりをしていたので、形成期のエリック・マイヤーの話を思い出しました。 CSS特異性に関するブログ投稿を書きました
