マクロのレイアウト

マクロ レイアウトは、ページ全体にわたるインターフェースの大きな構成を記述します。

2 列レイアウトのワイヤーフレームと、狭いビュー用の 1 列レイアウト。

レイアウトを適用する前に コンテンツの流れに間違いがないか確認しましょう この 1 列のデフォルトの順序が、小さい画面で取得されます。

<body>
  <header>…</header>
  <main>
    <article>…</article>
    <aside>…</aside>
  </main>
  <footer>…</footer>
</body>

これらの個々のページレベルのコンポーネントを配置すると、ページの概要であるマクロ レイアウトを設計できます。メディアクエリを使用すると、このビューをさまざまな画面サイズに合わせて調整する方法を表すルールを CSS で指定できます。

グリッド

CSS グリッドは、ページにレイアウトを適用するための優れたツールです。 上記の例では、画面の幅が十分に確保されたら 2 列のレイアウトにしたい場合を考えてみましょう。ブラウザの幅が十分に広くなったらこの 2 列レイアウトを適用するには、メディアクエリを使用して、指定したブレークポイントより上のグリッドスタイルを定義します。

@media (min-width: 45em) {
  main {
    display: grid;
    grid-template-columns: 2fr 1fr;
  }
}

Flexbox

この特定のレイアウトでは、flexbox も使用できます。 スタイルは次のようになります。

@media (min-width: 45em) {
  main {
    display: flex;
    flex-direction: row;
  }

  main article {
    flex: 2;
  }

  main aside {
    flex: 1;
  }
}

ただし、Flexbox バージョンでは、より多くの CSS が必要になります。各列には、占有するスペースを記述する個別のルールがあります。グリッドの例では、同じ情報が、要素を含む 1 つのルールにカプセル化されています。

メディア クエリが必要ですか?

必ずしもメディアクエリを使用する必要はありません。 メディアクエリは、一部の要素だけに変更を適用する場合や、 しかし、レイアウトを頻繁に更新する必要がある場合、メディアクエリは多くのブレークポイントで手に負えなくなります。

多くのカード コンポーネントが掲載されているページがあるとします。 カードの幅は 15em を超えることはなく、1 行に収まるだけ多くのカードを配置します。たとえば、30em45em60em というブレークポイントでメディアクエリを記述できます。 かなり面倒でメンテナンスが困難です

代わりに、カード自体が自動的に適切なスペースを占めるようにルールを適用できます。

.cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(15em, 1fr));
  grid-gap: 1em;
}

同様のレイアウトは flexbox でも実現できます。この場合 最後の行にカードが足りない場合は 残りのカードは列に合わせて並べられるのではなく、利用可能なスペースいっぱいに引き伸ばされます。 行と列を並べる場合はグリッドを使用します。

.cards {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: 1em;
}
.cards .card {
  flex-basis: 15em;
  flex-grow: 1;
}

Flexbox またはグリッドでスマートルールを適用すると、メディアクエリを使用せずに、最小限の CSS で動的マクロ レイアウトを設計できます。計算はブラウザが行うため、作業量を減らすことができます。メディアクエリを必要とせずに柔軟な最新の CSS レイアウトの例については、1linelayouts.com をご覧ください。

理解度を確認する

マクロ レイアウトに関する知識をテストします。

マクロのレイアウトの説明として最も適切な文は次のうちどれですか。

他のレイアウトを含むレイアウト。
もう一度考えてみましょう。ほとんどのレイアウトには他のレイアウトが含まれています。
デザインでフレックスボックスまたはグリッドを使用する場合。
もう一度考えてみましょう。Flexbox とグリッドには、マクロ レイアウトに固有の機能はありません。
画面の一部を覆う低レベルのレイアウト。
もう一度考えてみましょう。
画面の大部分を占める大まかなレイアウト。
🎉 マクロ レイアウトは、ページの基本レイアウトであり、広範囲の表示領域にまたがります。多くの場合、ページサイズのメディア クエリで調整されます。

マクロ レイアウトでは、さまざまな画面サイズに適応するために常にメディアクエリが使用されますか?

正しい
もう一度考えてみましょう。マクロ レイアウトは、メディアクエリの使用によって定義されません。
False
🎉 マクロ レイアウトは、メディアクエリを使用せずに、コンテンツに合わせて適応したり、使用可能なスペースを埋めたりできます。

ページレベルのマクロ レイアウトに関するアイデアがわかったところで、 ページ内のコンポーネントに注目してくださいここが、 マイクロ レイアウト: