ホーム自己紹介ブログ
NO.130
DATE2024. 11. 16

Every Layoutを読みました

先日、『Every Layout - モジュラーなレスポンシブデザインを実現するCSS設計論』を読みました。 CSS設計に関する深い洞察が詰まった一冊で、多くの学びを得られました。本記事では、その中で特に印象に残ったポイントを紹介します。

CSS設計の基本方針: ブラウザに計算させる

CSSを書く際に、"height: 100px;" や "width: 100px;" のような絶対値を使うと、表示するデバイスやビューポートによって崩れる可能性があります。 これを防ぐには、相対的な値を活用するのが有効です。

例えば、以下のような単位や手法を使うことで、レスポンシブなデザインを実現できます。

  • 相対単位: em、ch、vw、cqw など
  • パーセンテージ:"width: 100%"
  • 関数:"calc() で動的な値を計算
  • コンテナクエリ:親要素に応じたスタイリングを可能にする

相対的な指定にすることで、ブラウザが親要素やビューポートのサイズを元にスタイルを計算してくれるため、デザインの柔軟性が向上します。 特にコンテナクエリは、より精密なレスポンシブデザインを可能にするため、積極的に使いたい機能です。

参考リンク:length - CSS: カスケーディングスタイルシート | MDN

そのため、CSSを書く際にpxを見かけたら「もっと相対的にできないか?」を考えるのが私の習慣になっています。 メディアクエリを極力使わずに対応できることを目指してみるのも面白いアプローチだと思います。

レイアウトの責任はどこに置くべきか

リスト表示のUIを作成する際、リストアイテム間のスペースをどこで制御するべきか迷うことがあります。私は以下のアプローチが有効だと考えています。

  • リスト全体で制御

flexのgapや、以下のようなCSSルールでリスト要素間のスペースを管理します。

.list > * + * {
margin-top: 1rem;
}

このように、子要素ではなく親要素にスペース管理を委ねると、個別要素の再利用性が高まります。 特に、要素が自分の外側のスタイル(marginなど)を持つと、再利用時に制約が生じやすいため注意が必要です。

また、スペースの管理には以下を使い分けるのが重要です。

  • padding: 要素の内側のスペースに使用
  • margin: 要素間のスペースを管理する際に使用

この考え方を元に、flexやgridを使いこなせば、効率的なレイアウト設計が可能です。 また、最近ではサブグリッドも利用できるようになり、複雑なカードレイアウトでも縦横の整列が容易になっています。

まとめ

『Every Layout』はCSS設計の新しい視点を与えてくれる良書でした。 特に、 「ブラウザに計算させる」という考え方や、「レイアウトの責任を親要素に持たせる」 というアプローチは、日々の実装にすぐに役立つ内容です。

CSSにおける「責任の分離」を意識することで、再利用性が高く、メンテナンス性の良いコードを目指せます。ぜひ興味のある方は一読してみてください!

書籍レビュー
フロントエンド

-

シェアする

フォローする

購読する

次のページ

はじめてのUXデザイン図鑑を読みました

前のページ

HTML解体新書を読みました

関連する記事

タグ「書籍レビュー」の記事

『Webフォント実践ガイド Google Fontsではじめる 美しく機能的なタイポグラフィ』を読みました。

たまたま、Googleレコメンドに "Webフォント実践ガイド Google Fontsではじめる 美しく機能的なタイポグラフィ" の本へのリンクが流れてきました。 Webフォントの記事って、あまり見かけなかったのでAmazonでポチりまし

2026年02月12日

書籍レビュー
久々に本を読んでよかったこと

今日、4ヶ月以上放置していた本を読み始めています。 読み始めて、本ってやっぱ良いものだなと思うことがありました。 そのことについて、簡単に書こうかなと思います。 今読んでいる本 "Webフォント実践ガイド Google Fontsではじめる

2026年02月11日

書籍レビュー
『ザ・ダークパターン ユーザーの心や行動をあざむくデザイン』書籍レビュー

今回、以下の書籍を読みました。『ザ・ダークパターン ユーザーの心や行動をあざむくデザイン』せっかくなので、感じたことや気づきをまとめてみます。

2025年07月02日

書籍レビュー

タグ「フロントエンド」の記事

iframeの難しさ

最近、iframeを使っています。 クライアントサイドで埋め込む想定で、iframeを使おうとしています。 色々と苦労したことがあったので、書いて残しておこうと思います。 レスポンスヘッダー 前提として、ウェブアプリケーションをプロダクショ

2026年02月18日

フロントエンド
ブラウザ
SVGを書くと数学の知識が必要だった

紙を積んだイラストをSVGで書こうとしていました。 (当たり前ですが)図形を表現するためには数学の知識が必要で、学生の頃の記憶を思い出したので疲れました。 所感について、諸々書こうと思います。 成果物 実際に完成したのは、以下の画像ができま

2026年02月17日

フロントエンド
CSSを、Vitestでテストしてみる

以下の記事で書いた CSSをテストする方法について、試してみました。 https://zenn.dev/silverbirder/articles/df6752b230f04c ソースコードは、以下に置いています。 https://gith

2026年02月10日

フロントエンド
テスト
← ブログ一覧へ