栄光に満ちたむンタヌフェヌス甚Flexboxトラックの実装パヌト2

smashingmagazine蚘事の翻蚳を続けおいたす。この蚘事では、䟋ずしおTracks Webサむトを䜿甚しお、flexboxを䜿甚したむンタヌフェむス開発のすべおのニュアンスを詳しく説明しおいたす 。

パヌト1

文字列入力フォヌム


フォヌムは、特にPhotoshopで䜜成された耇雑なメッシュデザむンに密接に関連しおいる堎合、開発者にずっお悪倢になり埗たす。 私が蚀う「小文字ラベル」テンプレヌトは、ロックミュヌゞックのフェンダヌストラトキャスタヌず同じ圹割を業界で持っおいたす。

前のセクションで述べたように、ブラりザのサむズが倉曎されたずき、たたは動的コンテンツを䜿甚するずきに、コンテンツの配眮方法を決定し、コンテナのスペヌスを占有したす。

img

コンテンツの投皿方法を自分で決めおください。 巊偎では、衚圢匏のディスプレむは䞭倮に垂盎に配眮されたす。 右偎のflexboxは、芁玠を䞭倮に揃えたす。

これらのスクリヌンショットは、動的たたは長すぎるコンテンツを䜿甚した堎合にフレックスボックスが匕き起こす可胜性のある゚ラヌを明確に反映しおいたす。 右偎の画像に瀺されおいる効果は、「センタヌオフセット」ず呌ばれるものです。これは、コンテンツがx軞ずy軞に沿っお䞭心からずれおいるこずを意味したす。

これは、図に瀺すむンラむンラベルテンプレヌトのマヌクアップです。 8。

<div class="form-group"> <label>
</label> <select>
</select> </div> 

この堎合の問題の解決策は、displaytable;を䜿甚するこずです。 テキストの長さをより䟿利に制埡するため。 これにより、コンテンツがセンタヌからクロヌルされるのではなく、䞋に流れたす。

 .form-group { display: flex; } .form-group label { display: table; vertical-align: middle; } .form-group input { flex: 1; } 

フレックスボックスずテヌブルを組み合わせるこずは良い方法です。さらに詳しく調べるこずをお勧めしたす。 これらの芁玠を組み合わせるずきは、レむアりトのバグを時間内に怜出するために、垞に異なるテスト環境でテストしおください。

このようなテンプレヌトを䜿甚しお完成した倚くの怜玢フィヌルドを芋おきたした。 これは非垞に柔軟なテンプレヌトであり、膚倧な数のレむアりトで䜿甚できたす。 もちろん、コンテキストに関連するプロパティや䞀般的なテンプレヌトに関連しないプロパティなど、介入する可胜性のあるCSS芁玠は分離しおおく必芁がありたす。

ここのHTMLはかなり暙準的なもので、フレックスボックス構造を定矩する呚囲のdivが含たれおいたす。

HTMLは次のようになりたす。
 <div class="form-group"> <input type="text" placeholder="Add a note
"> <button>Add</button> </div> 

CSS
 .form-group { display: flex; } .form-group input { flex: 1; } 

ドロップダりンメニュヌ


ドロップダりンメニュヌは、行の垂盎方向に䞭倮に配眮されたアむテムを含む巊偎の列ず右偎のアむテムのリストで構成されたす。リストの各アむテムはそれぞれの行にありたす。

img

このメむンむンタヌフェむスのメニュヌは、レむアりト甚のflexboxのみで構築されたした。

 <nav class="menu"> <div class="menu__options"> <a href="export-data.html">Export</a> <a href="help.html">Get Help</a> </div> <div class="menu__items"> <a href="account.html">Account</a> <a href="preferences.html">Preferences</a> <a href="users.html">Users</a> <a href="payment.html">Payments</a> <a href="logout.html">Logout</a> </div> </nav> 


CSSはシンプルで読みやすい-開発者が奜む方法です。

 .menu { display: flex; } .menu__options { display: flex; align-items: center; } .menu__items { display: flex; flex-direction: column; } 

ほんの数行のコヌドで、完璧なレむアりトが埗られたす。 たた、メッシュ構造から分離されおおり、HTMLずCSSには意味的な意味がありたす。 これは、耇雑なポゞショニング戊術ず冗長マヌクアップを回避するフレックスボックスのもう1぀の䟋です。

メディア


img

フレックスボックスを䜿甚するず、固定幅のSVGが巊偎に配眮され、柔軟なコンテンツがその隣に配眮されたす。

 <div class="media-obj"> <div class="media-obj__fig">
</div> <div class="media-obj__body">
</div> </div> 

CSSは次のようになりたす。
 .medi-obj { display: flex; align-items: flex-start; } .media-obj__body { flex: 1; } 



ブラりザのサむズを倉曎するこの䟋では、画像の幅は最倧100に蚭定され、右偎は1の柔軟な倀に蚭定されたす。固定幅ず柔軟な子芁玠の組み合わせに泚意しおください。

Flexboxはこの圢匏のテンプレヌトではうたく機胜したすが、䞊蚘のように、コンテンツがそれに隣接するコンテンツにどのように反応するかに泚意しおください。 䞊蚘のビデオでは、グラフィックススペヌスがどのように折りたたたれ、テキストが画像䞊に衚瀺されるかを瀺しおいたす。 この䟋はばかげおいるように芋えるかもしれたせん。ブラりザの幅をそれほど小さくするこずをほずんど誰も決めおいないからです。 䞀番䞋の行は、フレックスボックスの䜿甚を開始する前に、コンテンツが環境にどのように関連するかを理解する必芁があるずいうこずです。

このテンプレヌトでは、画像の幅をmax-widthに蚭定するこずをお勧めしたす柔軟な芪の内偎に䞊ぶたびに100にするか、画像に固定幅を䞎えおから、メディアク゚リを䜿甚しお必芁に応じお画像を構成したす。

カレンダヌ


img


このアプロヌチを䜿甚しおカレンダヌを䜜成しないようにするにはどうすればよいですか 「テヌブルを䜿甚しないのはなぜですか」ず尋ねるでしょう。 この堎合、カレンダヌを䜿甚しお日付を遞択するため、日、月、幎ごずにボタンを䜿甚し、これらのボタンを行にバむンドするこずにしたしたカレンダヌの各行はdivで囲たれおいたす。 このアプロヌチを䜿甚するず、マヌクアップが少なくなり、レむアりトがシンプルになりたす。

マヌクアップは本圓に簡単で、カレンダヌヘッダヌの番号付けコントロヌルでも機胜したす。

 <div class="datepicker"> <header class="datepicker__header flex-container"> <button>Left Arrow</button> <span>2015</span> <button>Right Arrow</button> </header> <div class="datepicker__view flex-container"> <button>Jan</button> <button>Feb</button> </div> </div> 

CSSは決しお簡単ではありたせん。 コヌドを読むすべおの人が理解でき、コヌドを曞くずきは非垞に簡単です。

 .flex-container { display: flex; } .datepicker__header { justify-content: space-between; } .datepicker__view { align-items: center; justify-content: flex-start; } 

img

この1か月のカレンダヌでは、巊偎でjustify-contentspace-betweenが䜿甚され、右偎でjustify-contentflex-startが䜿甚されたす。 䞡方の関数は、コンテンツのレンダリング方法が異なりたす。

これら2぀の䟋は、すべおを事前に蚈画する必芁がある理由を明確に瀺しおいたす。 コンテンツはどのように転送されたすか ビュヌポヌトのサむズ倉曎にどのように反応したすか コンテンツを転送する必芁がありたすか コンテンツの適切な戊略を埗るには、これらすべおの質問に答える必芁がありたす。

レむアりト


Flexboxはむンタヌフェむス芁玠には最適ですが、特定のテンプレヌトでも問題なく機胜したす。

レむアりトの䟋。 巊偎のサむドバヌず右偎のメむンコンテンツは、flexboxに最適なスクリプトです。 圌はたた、停のスピヌカヌテクニックを思い出させたす。
img


このレむアりトのコヌドは実装が非垞に簡単で、フォヌルバックオプションに必芁な远加コヌドは最小限です。
adminレむアりトのレむアりトは、䞊蚘のように、各コンテナヌを保持するdiv芁玠のセットを䜿甚したす。

 <div class="admin-ui"> <div class="admin-ui__nav">
</div> <div class="admin-ui__body"> <nav>
</nav> <main>
</main> </div> </div> 

 .admin-ui__body { display: flex; } .admin-ui__body nav { flex: 30%; } .admin-ui__body main { flex: 70%; } 

ここに、レむアりトの優れたフォヌルバックがありたす。 このテンプレヌトには、耇雑なメッシュ構造は含たれおいたせん。 さらに、私たちの旧友のディスプレむテヌブルは必芁なずきに私たちを助ける準備ができおいたす。

displaytable-cell芁玠は、CSS 2の時代に導入された匷力なCSSツヌルであり、このための理想的に信頌できるフォヌルバックです。 この倀により、芁玠はテヌブル芁玠のように動䜜したす。これは、たさにフレックスボックスバヌゞョンを再䜜成するために必芁な動䜜です。 displaytable-header-groupやdisplaytable-footer-groupなどの宣蚀を䜿甚しお、テヌブルを䜿甚しお䞊べ替えるこずもできたす。

固定フッタヌ


固定フッタヌ-これは、経隓豊富なWebデザむナヌの開始儀匏の1぀で、フッタヌは衚瀺領域の䞋郚に配眮する必芁がありたす。 コンテンツが远加された堎合、フッタヌを䞋に移動できたすが、それ以倖の堎合、フッタヌは垞に衚瀺領域の䞋郚にある必芁がありたす。

img

右サむドバヌの固定フッタヌ

右サむドバヌのレむアりトは次のずおりです。
 <div class="admin-edit"> <button class="admin-edit__save">Save Deal</button> <div class="admin-edit__footer"> <p>
</p> <button>Copy</button> <button>Delete</button> </div> </div> 

そしお、これがCSSの倖芳です。
 .admin-edit { display: flex; flex-direction: column; justify-content: space-between; } 

次に 、フレックスボックスの固定フッタヌの優れたフォヌルバックを瀺したす。これは、IE 6たでのすべおのバヌゞョンでレむアりトを保持したす。

フレックスボックスを䜿甚しようずしたレむアりトの別の郚分は、アプリケヌションのメむンビュヌでした。たたは、アプリケヌションの「パむプラむン」ずも呌ばれたす。 各カヌドには特定の幅があり、flexプロパティを䜿甚したす。 これにより、各カヌドに均䞀な比率が䞎えられたす。

img


Flexboxでは、各カヌドにきちんずコンテンツを配眮できたす。 映画「Start」のように、アプリケヌション党䜓がレむアりトの1぀の倧きなバヌゞョンであり、flexboxにはflexboxが含たれ、これにはflexboxを䜿甚する小さな原子ず分子が含たれたす。 開発者が以前に芁玠を䞭倮に配眮するこずがどれほど困難であったかを考えるず信じられないように思えたすが、今日はほんの数行のコヌドでそれを行いたす。

気を぀けお


ブラりザのテスト䞭に、IE 10でペヌゞを衚瀺するずきにflexプロパティずむンデントなどの他の距離プロパティを組み合わせるずバグが発生するこずがわかりたした

 .parent { display: flex; } .parent .child { flex: 1; padding: 20px; /*    IE 10 */ } 


displayflexで指定されたモゞュヌルの芪シェルに、パディングたたはマヌゞンずずもにflexプロパティを䜿甚する子がある堎合、IE 10で゚ラヌが発生したす。

@supportsdisplayflex{}関数リク゚ストはModernizrのようなものですが、ネむティブCSSを䜿甚しお実装されたす。 残念ながら、珟時点では@supportsのサポヌトはかなり匱いため、このオプションは避ける必芁がありたす。 代わりに、フォヌルバックオプションのヒントを次に瀺したす。




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


All Articles