CSSグリッドとフレックスボックスを使用してTrelloレイアウトを構築します
キーテイクアウト
- チュートリアルでは、CSSグリッドとFlexBoxを使用してTrelloボードの基本レイアウトを実装する方法を示しており、レスポンシブなCSSのみのソリューションを提供します。レイアウトは、アプリバー、ボードバー、およびカードリストを含むセクションで構成されています。 チュートリアルでは、3×1グリッドを使用してレイアウト構造を構築する方法について説明します。最初の2行は固定された高さと、使用可能なビューポートの高さの残りの部分に及ぶ3番目の行です。また、ビューポートユニットを使用して、コンテナが常にブラウザのビューポートと同じくらい高くなっていることを確認しています。
- チュートリアルでは、フルビューポート幅のフレックスボックスシングルラインの行コンテナを使用して、カードリストをフォーマットする方法を示しています。また、リストがViewportの幅に適合しない場合、Overflow-Xプロパティを使用して画面の下部に水平スクロールバーを表示する方法も示しています。 チュートリアルは、最大高さの制約を内部の順序リストに適用して、リストの高さを管理することを示唆しています。また、リストを親コンテナと同じ高さにする方法と、必要なときにのみカードスクロールバーを表示するためにオーバーフローYプロパティを使用する方法についても説明しています。
- このチュートリアルでは、Trelloボード画面の基本的なレイアウトの実装について説明します(ここの例を参照)。これは応答性の高いCSSのみのソリューションであり、レイアウトの構造的特徴のみが開発されます。 プレビューについては、最終結果のCodepenデモを次に示します。
- グリッドレイアウトとFlexBoxに加えて、ソリューションは計算およびビューポートユニットを採用しています。コードをより読みやすく効率的にするために、SASS変数も活用します。
画面レイアウト
Trelloボードの画面は、アプリバー、ボードバー、およびカードリストを含むセクションで構成されています。次のマークアップスケルトンでこの構造を構築します:

最初の2行はそれぞれ固定された高さですが、3行目は利用可能なビューポートの高さの残りの部分に及びます。
ビューポートユニット.UIコンテナが常にブラウザのビューポートと同じくらい高くなることを確認してください。
グリッドフォーマットコンテキストがコンテナに割り当てられ、上記のグリッド行と列が定義されています。より正確には、一意の列を宣言する必要がないため、行のみが定義されます。行のサイジングは、バールとFRユニットの高さのいくつかのSASS変数で行われ、。リスト要素の高さを使用可能なビューポートの高さの残りの部分に及ぼします。
カードにはセクションにリストされています 前述のように、画面グリッドの3行目は、カードリストのコンテナをホストします。マークアップの概要は次のとおりです
フルビューポート幅のフレックスボックスシングルラインの列コンテナを使用して、リストをフォーマットしています。
<span><span><span><div</span> class<span>="ui"</span>></span> </span> <span><span><span><nav</span> class<span>="navbar app"</span>></span>...<span><span></nav</span>></span> </span> <span><span><span><nav</span> class<span>="navbar board"</span>></span>...<span><span></nav</span>></span> </span> <span><span><span><div</span> class<span>="lists"</span>></span> </span> <span><span><span><div</span> class<span>="list"</span>></span> </span> <span><span><span><header</span>></span>...<span><span></header</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span>></span>...<span><span></li</span>></span> </span> ... <span><span><span><li</span>></span>...<span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span><footer</span>></span>...<span><span></footer</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span></div</span>></span> </span><span><span><span></div</span>></span></span>
次に、リスト間に水平な分離を追加する必要があります。リストの正しいマージンが設定されている場合、水平オーバーフローのあるボードの最後のリストの後のマージンはレンダリングされません。これを修正するために、リストは左マージンで区切られ、最後のリストと右のビューポートエッジの間のスペースは、各.Lists要素に擬似エレメントの後に追加することにより処理されます。デフォルトのフレックスシュリンク:1はオーバーライドする必要があります。そうしないと、擬似要素がすべての負の空間を「吸収」し、消滅します。
Firefox <span>.ui { </span><span> <span>height: 100vh;</span> </span><span> <span>display: grid;</span> </span><span> <span>grid-template-rows: $appbar-height $navbar-height 1fr;</span> </span><span>}</span>カードリスト各カードリストは、ヘッダーバー、一連のカード、フッターバーで構成されています。次のHTMLスニペットは、この構造をキャプチャします:
ここでの重要なタスクは、リストの高さを管理する方法です。ヘッダーとフッターには固定高さがあります(必ずしも等しくない)。次に、さまざまな数のカードがあり、それぞれが変動する量のコンテンツを備えています。そのため、カードが追加または削除されると、リストは垂直に成長し、縮小します。
しかし、高さは無期限に成長することはできません。つまり、.lists要素の高さに依存する上限が必要です。この制限に達したら、リストにオーバーフローするカードにアクセスできるように垂直のスクロールバーを表示したい。
これは、最大高さとオーバーフローのプロパティの仕事のように聞こえます。ただし、これらのプロパティがルートコンテナ.listに適用されると、リストが最大高さに達すると、すべての。リスト要素、ヘッダー、フッターが含まれているすべての。リスト要素に表示されます。次の図は、左側の間違ったサイドバーと右側の正しいサイドバーを示しています。
では、代わりに内側の
- に最大高さの制約を適用しましょう。どの値を使用する必要がありますか?ヘッダーとフッターの高さは、リストの高さから差し引く必要があります親コンテナ(.list):
<span><span><span><div</span> class<span>="ui"</span>></span> </span> <span><span><span><nav</span> class<span>="navbar app"</span>></span>...<span><span></nav</span>></span> </span> <span><span><span><nav</span> class<span>="navbar board"</span>></span>...<span><span></nav</span>></span> </span> <span><span><span><div</span> class<span>="lists"</span>></span> </span> <span><span><span><div</span> class<span>="list"</span>></span> </span> <span><span><span><header</span>></span>...<span><span></header</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span>></span>...<span><span></li</span>></span> </span> ... <span><span><span><li</span>></span>...<span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span><footer</span>></span>...<span><span></footer</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><span></div</span>></span> </span><span><span><span></div</span>></span></span>
しかし、問題があります。パーセンテージ値は。リストではなく、
- 要素の親である.listを指します。この要素には明確な高さがないため、この割合は解決できません。これは、.listのように背が高くなることで修正できます。
このように、.listは常に。リストと同じくらい高いため、そのコンテンツに関係なく、その背景色のプロパティはリストの背景色に使用できませんが、子供(ヘッダー、フッター、カード)を使用することは可能です。 )この目的のために。
<span>.ui { </span><span> <span>height: 100vh;</span> </span><span> <span>display: grid;</span> </span><span> <span>grid-template-rows: $appbar-height $navbar-height 1fr;</span> </span><span>}</span>
さらに$ scrollbar-cheicknessの量を差し引いて、リストが。リスト要素の水平スクロールバーに触れないようにします。実際、Chromeでは、このスクロールバーは.Listsボックス内で「成長」します。つまり、100%の値とは、。リストの高さを指します。 Firefoxの代わりに、Scrollbarは.Listsの高さの外側に「追加」されています。つまり、100%はScrollbarを含むものではない。リストの高さを指します。したがって、この減算は必要ありません。その結果、Scrollbarが表示されると、Firefoxでは、最大高さに達したリストの境界の境界の間の視覚空間と、巻物棒の上部がわずかに大きくなります。
このコンポーネントの関連するCSSルールは次のとおりです
<span><span><span><div</span> class<span>="lists"</span>></span> </span> <span><span><span><div</span> class<span>="list"</span>></span> </span> ... <span><span><span></div</span>></span> </span> ... <span><span><span><div</span> class<span>="list"</span>></span> </span> ... <span><span><span></div</span>></span> </span><span><span><span></div</span>></span></span>
仕上げの仕上げ
単一のカードのHTMLは、単にリスト項目で構成されています:
または、カードにカバーイメージがある場合:
<span>.lists { </span><span> <span>display: flex;</span> </span><span> <span>overflow-x: auto;</span> </span> <span>> * { </span><span> <span>flex: 0 0 auto; // 'rigid' lists</span> </span><span> <span>margin-left: $gap;</span> </span> <span>} </span><span> <span>&::after {</span> </span><span> <span>content: '';</span> </span><span> <span>flex: 0 0 $gap;</span> </span> <span>} </span><span>}</span>
これは関連するCSS:
です
背景、パディング、および底部のマージンを設定した後、カバー画像レイアウトの準備が整いました。画像幅は、左のパディングエッジから右パディングの端までカード全体に及ぶ必要があります。
<span><span><span><div</span> class<span>="list"</span>></span> </span> <span><span><span><header</span>></span>List header<span><span></header</span>></span> </span> <span><span><span><ul</span>></span> </span> <span><span><span><li</span>></span>...<span><span></li</span>></span> </span> ... <span><span><span><li</span>></span>...<span><span></li</span>></span> </span> <span><span><span></ul</span>></span> </span> <span><span><span><footer</span>></span>Add a card...<span><span></footer</span>></span> </span><span><span><span></div</span>></span></span>
3番目のプラスマージン値は、カバー画像とカードテキストの間のスペースを処理します。
<span>ul { </span><span> <span>max-height: calc(100% - #{$list-header-height} - #{$list-footer-height});</span> </span><span>}</span>
結論
これは、このデザインを達成するための1つの可能な方法にすぎず、他のアプローチを見るのは興味深いでしょう。また、たとえば2つのスクリーンバーを完成させるなど、レイアウトを完成させるといいでしょう。
もう1つの潜在的な拡張機能は、カードリストのカスタムスクロールバーの実装である可能性があります。では、以下のディスカッションにデモをフォークし、リンクを投稿してください。
CSSグリッドとフレックスボックスを使用してTrelloレイアウトの構築に関するよくある質問(FAQ) CSSグリッドとフレックスボックスを使用してTrelloのようなレイアウトを作成するにはどうすればよいですか? CSSグリッドとフレックスボックスは強力なレイアウトシステムですが、いくつかの制限があります。たとえば、古いブラウザでは完全にサポートされていない場合があります。さらに、柔軟なレイアウトシステムを提供していますが、あらゆる種類のレイアウトに適していない場合があります。これらの制限を理解し、必要に応じて代替ソリューションを検討することが重要です。CSSグリッドとフレックスボックスを使用して、Trelloのようなレイアウトをレスポンシブにするには、メディアクエリを使用して画面サイズに基づいてレイアウトを調整します。メディアクエリを使用して、グリッド列の数を変更したり、リストとカードのフレックスプロパティを調整したりできます。これにより、レイアウトはさまざまな画面サイズとオリエンテーションに適応し、すべてのデバイスで一貫したユーザーエクスペリエンスを確保できます。 JavaScriptを使用して、Trelloのようなレイアウトを実現できます。 JavaScriptを使用してカードにドラッグアンドドロップ機能を追加して、ユーザーがリスト間でカードを移動できるようにします。 JavaScriptを使用して、新しいカードやリストを追加する機能など、他のインタラクティブ機能を追加することもできます。
CSSグリッドとFlexBoxを使用してTrelloのようなレイアウトを作成するために制限はありますか?
トレロのようなレイアウトの外観をカスタマイズするにはどうすればよいですか? CSSを使用します。 CSSを使用して、レイアウトの色、フォント、その他の視覚要素を変更できます。 CSSを使用して、シャドウや遷移などの効果を追加してユーザーエクスペリエンスを強化することもできます。 🎜> CSSグリッドとフレックスボックスは比較的高度なCSS機能ですが、何らかの研究と実践で学習できます。これらの機能の使用方法を学ぶのに役立つ、チュートリアルやガイドなど、オンラインで利用できる多くのリソースがあります。時間と労力があれば、初心者であっても、CSSグリッドとフレックスボックスを使用してトレロのようなレイアウトを作成できます。 🎜> Trelloのようなレイアウトでのトラブルシューティングの問題は、ブラウザの開発者ツールを使用して実行できます。これらのツールを使用すると、HTMLとCSSを検査できるため、問題を識別して修正しやすくなります。また、スタックオーバーフローなどのオンラインフォーラムやコミュニティを使用して、質問をしたり、他の開発者から助けを得たりすることもできます。パフォーマンスのためのTrelloのようなレイアウトには、いくつかの戦略が含まれます。これには、CSSとJavaScriptの最小化、効率的なCSSセレクターの使用、画像の最適化が含まれます。 Google Lighthouseなどのパフォーマンスツールを使用して、レイアウトを分析し、改善のための領域を特定することもできます。
以上がCSSグリッドとフレックスボックスを使用してTrelloレイアウトを構築しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











新しいプロジェクトの開始時に、SASSコンピレーションは瞬く間に起こります。これは、特にbrowsersyncとペアになっている場合は素晴らしい気分です。

今週のプラットフォームニュースのラウンドアップで、Chromeは、Web開発者のロード、アクセシビリティ仕様、およびBBCの動きのための新しい属性を導入します

これは私が初めてHTML要素を見ていることです。私はしばらくの間それを知っていましたが、まだスピンしていませんでした。かなりクールです

購入またはビルドは、テクノロジーの古典的な議論です。自分で物を構築することは、あなたのクレジットカードの請求書にはラインアイテムがないため、安価に感じるかもしれませんが

しばらくの間、iTunesはポッドキャストの大きな犬だったので、「ポッドキャストにサブスクライブ」をリンクした場合:

サイトの訪問者と使用データを追跡するのに役立つ分析プラットフォームがたくさんあります。おそらく、特にGoogleアナリティクスが広く使用されています

ドキュメントヘッドはウェブサイトの中で最も魅力的な部分ではないかもしれませんが、それに入るものは間違いなくあなたのウェブサイトの成功にとってそれと同じくらい重要です
