はじめに
- だいぶ昔に学習したCSSですが、仕事上の役割とともにだいぶ忘れているなぁと思いますので、再度知識を整理したいと思います。
- 今回は、コンテンツ領域を中央に揃えるやつです。
- 昔に比べて横幅が1920を超えるPCは当たり前になってきまいたが、コンテンツ領域が画面いっぱいにあると見にくいです。
- なので、一般的にはコンテンツは、中央に配置する感じが普通かなと思います。
注意点
やってみた
- サンプル
import { FC, PropsWithChildren } from 'react'; type Props = PropsWithChildren; const Container: FC<Props> = ({ children }) => { return ( <> <div className="containerCSS">{children}</div> <div className="max-w-5xl mx-[10px] my-3 bg-gray-500 lg:mx-auto "> {children} </div> <div className="container bg-gray-700 mx-auto">fugafuga</div> </> ); }; export default Container;
@tailwind base; @tailwind components; @tailwind utilities; .containerCSS { margin: 12px 10px; background-color: gray; } @media (min-width: 1024px) { .containerCSS { max-width: 1024px; margin: 12px auto; background-color: gray; } }
- 表示イメージ
CSS解説
- 注目すべきは、
margin: 12px auto;
ここです。- margin: 〇 ×と書くことで、〇は上下のマージン領域の指定、×は左右のマージン領域の指定となります。
- margin: 〇 △ □ × と書くことで、〇は上、△は右、□は下、×は左のマージン領域の指定をすることになります。
- marginに
auto
をつけることで、親要素の幅 - 当該要素の幅を計算して、自動的にマージン領域を設定してくれます。- これによりautoを左右のマージンに設定することで、コンテンツ領域を中央に寄せることができます。
tailwind解説
- 注目すべきは、
lg:mx-auto
です。- lgをつけることで、
@media (min-width: 1024px)
におけるクラス指定の意味になります。- つまり、画面幅が、1024pxを超えた場合は、mx-autoを使いますよ♪という意味です。
- mx-autoは、X軸方向のマージンの意味で、設定する値が
auto
になります。
- lgをつけることで、
- 他に注目すべきは、
mx-[10px]
です。- tailwindはある程度の幅に応じたマージンを
mx-4
、mx-6
といった形で用意していますが、細かい値を指定したい場合は[]に単位付きで設定することができます。
- tailwindはある程度の幅に応じたマージンを
- なお、tailwindでは、様々な画面幅に応じた
container
というクラスが用意されていました。
マージンのたたき込み
- 一つ目のdivの領域(上下のマージンは、12とっている)
- 二つ目のdivの領域(上下のマージンは、12とっている)
- 一つ目の下マージンは12pxで、二つ目の上マージンは12pxだから、間は24pxマージンされるはずじゃ???
解説
- これは、マージンのたたき込みといわれるCSSの仕様です。
- マージンのたたき込みとは、ふたつの要素に設定した上下マージンが隣接するとき、どちらか大きい方のマージンが採用されるというルールです。
- なお、たたき込みが行われるのは、上下マージンだけで、左右のマージンの場合は発生しません。
- 今回の例は、兄弟要素におけるマージンのたたき込みです。
- 他に親要素と子要素のマージンのたたき込みも発生します。
- 親要素の上マージンと最初の子要素の上マージン、親要素の下マージンと最後の子要素の下マージンが叩き込まれます。
- この場合、親要素の外側にマージンが作られます。
- 親要素のマージンが0の場合でもたたみ込みが行われ、この場合は子要素のマージンが親要素の外側にできます。
- 他に親要素と子要素のマージンのたたき込みも発生します。
所感…
徐々に投稿していきますね。。