数年前、私はWebコンポーネントについて多くのことを聞き始めました。私はかなり興奮し、ノイズが落ち着くと完全に忘れてしまいました。いくつかの良い動きがあり、サポートが増加し始めていることがわかりました。特に、レスポンシブWebコンポーネントは、レスポンシブデザインにどのようにアプローチするかを単純化するように設定されています。これは有望なことに、多くの開発者が今日それらの使用を開始する前に知りたいと思う4つの質問があります:
彼らは…
になりますキーテイクアウト
Webコンポーネントを使用したい場合の良い例は、カラーピッカー、カルーセル、アコーディオン、タイプヘッドなどの要素など、ブラウザにネイティブに存在しないUIを構築している場合です。または、毎回再構築するのにうんざりしているさまざまなサイトで常に使用するコンポーネントがいくつかある可能性があります。これらは、ソーシャルボタン、購読フォーム、または通知などです。 Webコンポーネントを使用すると、
Webコンポーネントを使用すると、UIの断片を1回構築し、どこでも使用できます。これは、各コンポーネントに単一の真実のソースを備えたライブラリを構築したいリビングスタイルガイドのようなプロジェクトに最適です。このアプローチは、コードを繰り返し、あなたまたはあなたのチームがあなたのインターフェイスに参照を単純にドロップできるポータブルコンポーネントを持つことを意味します。
Webコンポーネントを使用するもう1つの大きな利点は、これらのコンポーネントをパッケージ化し、他の開発者またはWebサイトの所有者と共有することができることです。基本的に、消費者は次のようなインポートステートメントをWebページに配置できます。次に、そのコンポーネントで定義したカスタム要素タグを使用します。これがWebページにインポートされているため、ページ上にカスタムコンポーネントのインスタンスが必要な限り多くのインスタンスを作成できます。購読フォームの例では、ページの複数の場所でタグ
<span><span><span><link</span> rel<span>="import"</span> </span></span><span> <span>href<span>="http://url.com/subscribe-form.html"</span>></span></span>
デモンストレーションの最良の方法は例であると感じているので、異なるサイトと実装の間であまり変わらないUIの一般的な部分であるサブスクライブフォームを続けます。
私のWebコンポーネントテンプレート内には、フォームの基本的なマークアップがあります。
私のマークアップとCSSは、仕様のシャドードム部分を使用してコンポーネント内に押し出されています。これにより、カプセル化が得られ、他のスタイルが出血したり、親サイトに出血したりすることを心配することなく、コードでラベルセレクターと入力を使用できます。
<span><span><span><ul</span> class<span>="form"</span>></span> </span> <span><span><span><li</span> class<span>="form__item"</span>></span> </span> <span><span><span><label</span> for<span>="name"</span>></span>Name:<span><span></label</span>></span> </span> <span><span><span><input</span> id<span>="name"</span> name<span>="name"</span> type<span>="text"</span>></span> </span> <span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="form__item"</span>></span> </span> <span><span><span><label</span> for<span>="name"</span>></span>Email:<span><span></label</span>></span> </span> <span><span><span><input</span> id<span>="name"</span> name<span>="name"</span> type<span>="text"</span>></span> </span> <span><span><span></li</span>></span> </span><span><span><span></ul</span>></span></span>
私たちはすべてセットアップされています、いくつかの応答性のあるテクニックを見てみましょう。
<span><span>.form__item</span> { </span> <span>display: table; </span> <span>float: left; </span> <span>width: 50%; </span><span>} </span> <span>label { </span> <span>display: table-cell; </span> <span>width: auto; </span><span>} </span> <span>input { </span> <span>display: table-cell; </span> <span>width: 100%; </span><span>}</span>
私たちが知っていて愛する古典的なアプローチは、まだ生きており、レスポンシブなWebコンポーネントの中でうまくいっています。いくつかのブレークポイントで焼きたい場合は、コンポーネントをコーディングするときにテンプレート内に適用できます。または、その決定を消費者に任せたい場合は、コンテナにフック(クラスを使用して)を適用できます。この場合、私たちがする必要があるのは、フロートを剥ぎ取り、それらを完全な幅に調整することだけです。
<span><span><span><link</span> rel<span>="import"</span> </span></span><span> <span>href<span>="http://url.com/subscribe-form.html"</span>></span></span>
しかし、メディアのクエリは今回私たちを救うのに十分ではありません。
サインアップフォームスタイルに満足しており、体内では正常に機能しますが、ウェブサイトの著者がサイドバーにチャックしたいときはどうなりますか?突然、私のフォームは押しつぶされているように見え、実際には使用できません。
これは、コンポーネントがその境界を認識していないためです。コンテキストがありません。
Webコンポーネントの全体的なポイントは、どこにでもドロップできることです。したがって、明らかにこれはしませんが、コンポーネントが応答性があり文脈的であることを保証するために使用できるいくつかのテクニックがあります。FlexBox Trickery
容器を表示するように設定して表示します。Flex;フレックスラップ:ラップ、.form__item要素は並んで表示されますが、コンテナが小さくなりすぎるとうまくスタックするように、いくつかの調整を行う必要があります。 .form__itemの内部では、フレックスのフレックスの速記を使用しました:1 0 320px;これは、1つの成長、ゼロのフレックスシュリンク、および320ピクセルのフレックス基底に変換されます。フレックスラップをラップに設定することは、設定された基礎(320px)よりも小さくないことを意味しますが、それをフレックスに設定することは、利用可能なスペースの残りの部分を占めることを意味します。
ラベル要素と入力要素に同様の処理をしました。それらの組み合わせたフレックス値は合計320です。つまり、それらはより小さなコンテナサイズで望ましいように振る舞うことを意味します。<span><span><span><ul</span> class<span>="form"</span>></span> </span> <span><span><span><li</span> class<span>="form__item"</span>></span> </span> <span><span><span><label</span> for<span>="name"</span>></span>Name:<span><span></label</span>></span> </span> <span><span><span><input</span> id<span>="name"</span> name<span>="name"</span> type<span>="text"</span>></span> </span> <span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="form__item"</span>></span> </span> <span><span><span><label</span> for<span>="name"</span>></span>Email:<span><span></label</span>></span> </span> <span><span><span><input</span> id<span>="name"</span> name<span>="name"</span> type<span>="text"</span>></span> </span> <span><span><span></li</span>></span> </span><span><span><span></ul</span>></span></span>
ずっと良く!しかし、猫を皮を剥ぐ方法は複数あります。
要素クエリ
要素クエリを使用して、まさに私たちにできることです。かなり強力な権利?
初等
属性
<span><span><span><link</span> rel<span>="import"</span> </span></span><span> <span>href<span>="http://url.com/subscribe-form.html"</span>></span></span>
これにより、小さな実装のスタイルがトリガーされます
これにより、コンポーネントの消費者がいくつかの簡単なJavaScriptを作成して、提供したさまざまなサイズをめくることができます。これは、モジュールの内部に追加のJavaScriptをロードする代わりに、消費者に任せて、どのように接続するかを決定することを意味します。これにより、コンポーネントがより将来の証拠になることができます
自分で試してみてください!<span><span><span><ul</span> class<span>="form"</span>></span> </span> <span><span><span><li</span> class<span>="form__item"</span>></span> </span> <span><span><span><label</span> for<span>="name"</span>></span>Name:<span><span></label</span>></span> </span> <span><span><span><input</span> id<span>="name"</span> name<span>="name"</span> type<span>="text"</span>></span> </span> <span><span><span></li</span>></span> </span> <span><span><span><li</span> class<span>="form__item"</span>></span> </span> <span><span><span><label</span> for<span>="name"</span>></span>Email:<span><span></label</span>></span> </span> <span><span><span><input</span> id<span>="name"</span> name<span>="name"</span> type<span>="text"</span>></span> </span> <span><span><span></li</span>></span> </span><span><span><span></ul</span>></span></span>
このデモで言及しているFlexboxバージョンを自分のマシンで表示することに興味がある場合は、Chromeで以下を実行できます。
CORS Chrome拡張機能をインストールし、オンにします。これは、HTMLインポートが外部サイトから動作できるようにするためです。 このページを更新するか、新しいタブまたはウィンドウでWebサイトを開くと、拡張機能が開始されます。
Chrome開発者ツールでは、これをタグ内に追加します。<span><span>.form__item</span> { </span> <span>display: table; </span> <span>float: left; </span> <span>width: 50%; </span><span>} </span> <span>label { </span> <span>display: table-cell; </span> <span>width: auto; </span><span>} </span> <span>input { </span> <span>display: table-cell; </span> <span>width: 100%; </span><span>}</span>
最後に、追加:
結論
CSSコンテナクエリは、応答性コンポーネントにどのように貢献しますか?ビューポートではなく、親コンテナのサイズに基づいて適用されます。これは、コンポーネントが独自のサイズに基づいてレイアウトを適応させることができることを意味し、本当に応答します。これは、さまざまなコンテキストで再利用され、周囲に適応する必要があるコンポーネントに特に役立ちます。レスポンシブWebコンポーネントの作成。 DOMを操作し、イベントを処理し、動的なコンテンツを作成するために使用できます。また、CSSメディアクエリと組み合わせて使用して、より複雑な応答性の動作を作成することもできます。たとえば、JavaScriptを使用して、画面のサイズまたはデバイス機能に基づいてさまざまなスクリプトまたはコンテンツをロードできます。レスポンシブWebコンポーネントを設計する際の重要な考慮。これには、テキストがすべての画面サイズで読み取ることができること、インタラクティブな要素がタッチスクリーンで簡単にタップできるほど大きく、マウスを使用できない人のためのキーボードでサイトが操作できることを保証することが含まれます。さらに、セマンティックHTMLを使用して、読者をスクリーニングするためにコンテキストと意味を提供し、視覚障害のある人に色のコントラストが十分であることを確認する必要があります。克服する?
レスポンシブWebコンポーネントは、SEOにプラスの影響を与える可能性があります。 Googleのアルゴリズムは、モバイルフレンドリーでレスポンシブデザインのWebサイトがこれの重要な側面です。さらに、デスクトップとモバイルのバージョンではなく単一のレスポンシブサイトを持つことで、SEOの重複にマイナスの影響を与える可能性のある複製の問題が回避されます。 Webコンポーネントの応答性をテストするためのいくつかのツールと手法です。これには、ブラウザウィンドウのサイズを変更して、レイアウトの適応方法を確認し、ブラウザ開発者ツールでデバイスエミュレーション機能を使用し、Googleのモバイルフレンドリーテストなどのオンラインツールを使用します。 🎜>
レスポンシブWebコンポーネントの未来には、より高度な技術と技術が含まれる可能性があります。これには、現在開発中のコンテナクエリなど、ユーザーの動作と好みに基づいてレイアウトを適応させるためのAIと機械学習の使用が含まれます。 ?レスポンシブWebコンポーネントについて学習するために利用できるリソースがたくさんあります。これらには、オンラインチュートリアルとコース、書籍、コミュニティフォーラムが含まれます。さらに、独自のレスポンシブコンポーネントの作成と他者のコードを研究することを実験することは、学習するのに最適な方法です。応答性の高いWebコンポーネントの作成に役立つ多くのフレームワークとライブラリが利用可能です。これらには、Bootstrap、Foundation、Reactなどが含まれます。これらのツールは、すでに応答性が高い事前に設計されたコンポーネントとレイアウトを提供し、時間と労力を節約できます。ただし、これらのツールを効果的に使用するには、レスポンシブデザインの根底にある原則を理解することが依然として重要です。以上が今日のレスポンシブWebコンポーネントを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。