みなさん、こんにちは。
今回はページヘッダーでよくある以下の様な構成をする際の方法をまとめます。

やりたいことは、「ページヘッダーで背景色付き、縦方向中央揃え、インナー幅内で左寄せをする」です。緑までがインナー幅ですね。インナー幅にpadding付けてます。

これ、よくありそうな実装でそこまで難しくないはずなのですが、なんだかものすごい時間がかかっちゃいました。なので、今後の自分の為の思考の整理として書きます。
コード:HTML
<div class="page-header">
<div class="inner-1200">
<div class="page-header__inner">
<h1 class="page-header__title">NEWS</h1>
</div>
</div>
</div>
</div>
シンプルです。
コード:CSS
お次はCSSです。
.page-header {
background-color: #f5f7f7;
}
.page-header__title {
text-align: left;
font-size: 28px;
font-weight: 700;
}
.page-header__inner {
display: flex;
align-items: center;
justify-content: flex-start;
height: 200px;
}
.inner-1200 {
max-width: calc(1200px + 80px);
margin: 0 auto;
padding: 0 40px;
}
気付き
これ実現するのにもっとも大事なポイントが、「インナー要素の下の要素にdisplay: flex;
で指示をすること」です。修正する前は.page-header__inner
はなく、.page-header
にdisplay: flex;
系の指示をしていました。
そうするとどーしてもタイトルが横中央になっちゃうんですよね。それは当然で.inner-1200にmargin:0 auto;
が入っているので、それに引きづられてました。