スマホ対応に便利!CSSのbox-sizingの使い方【初心者向け】

初心者向けにCSSで書くbox-sizingの使い方について解説しています。今流行りのレスポンシブデザインにも活用できます。簡単に表示させることができるので、ぜひ自分でも書いてみましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

CSSで書くbox-sizingの使い方について解説する記事になります。

Webデザインをする上で今や必須のスマホ対応にも便利です。paddingやborderに依存せず活用できるのでぜひ覚えておきましょう。

 

なお本記事は、TechAcademyのWebデザインオンラインブートキャンプのカリキュラムをもとに執筆しています。

 

なお、今回の記事の内容は動画でもご覧いただけます。

テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。

 

大石ゆかり

田島メンター!!paddingを設定したらボックス自体の大きさも変わってしまって……ボックスの大きさをそのままにするにはどうしたらいいですか~?

田島悠介

そういうときはbox-sizingがとても便利だよ。

大石ゆかり

box-sizingは何をするんですか?

田島悠介

最初に指定したwidthとheightの範囲内でpaddingやborderを設定できる機能なんだ。まずは普段、paddingを設定したときにボックスの大きさがどうなっているかを確認してみよう。

 

box-sizingとは

box-sizingプロパティは、領域の大きさの算出に関する設定を変更する時に使用されます。

paddingやborderプロパティを使用して余白や境界線の太さを設定すると、領域のwidthやheightにpadding,borderの分が加わります。

その為、paddingやborderの値によって領域全体の大きさが変わってしまう形になります。

bsi_p_1

これはpadding,borderの値が領域の大きさに含まれず、別のものとして扱われているためです。

box-sizingプロパティで設定を変えることによって、領域の大きさの中でpaddingやborderを設定することができます。これにより、余白や境界線の太さに影響されずにボックスの大きさを決めることが可能になります。
 

大石ゆかり

そうそう、こんな感じで大きさが変わっちゃうんです。

田島悠介

これはpaddingやborderが元々のwidthやheightの領域の上に加わってしまっているからなんだね。

大石ゆかり

そこでbox-sizingを使うんですね。実際にはどう書くんですか?

 

box-sizingの書き方

box-sizingは以下のように記述します。

box-sizing: ;

値の部分には以下のいずれかを入力します。

content-box:padding,borderを高さや幅に含めません。(初期値)
border-box:padding,borderを高さや幅に含めます。

また、inheritを入力した場合は親要素の値が継承されます。

 

[PR] HTML/CSSで挫折しない学習方法を動画で公開中

実際にbox-sizingを書いてみよう

以下のhtmlにbox-sizingプロパティを使用します。
(※htmlとcssのファイルが同じディレクトリ内にあり、cssのファイル名が”sample.css”である場合の例です)

html

<!DOCTYPE html>
<html>
<head>
<meta charset=”utf-8″ />
<link rel=”stylesheet” href=”sample.css” type=”text/css”>
</head>
<body>
<p class=”content1″>content-box(初期値)の場合、paddingとborderはwidthとheightに含まれない</p>
<p class=”content2″>border-boxの場合、paddingとborderがwidthとheightに含まれる</p>
</body>
</html>

全く同じwidthとheightを設定した領域(幅400px、高さ150px)を2つ並べ、1つ目のボックスには初期値であるcontent-boxを、2つ目のボックスにはborder-boxを設定します。

css

p.content1 {
width: 400px; height: 150px; background-color:#f0f8ff;
border: 30px solid #4169e1; padding: 10px;
box-sizing: content-box;
}
p.content2 {
width: 400px; height: 150px; background-color:#f0f8ff;
border: 30px solid #4169e1; padding: 10px;
box-sizing: border-box;
}

画面では以下のように表示されます。

bsi_p_2

上のボックスではpaddingとborderに設定した分の領域が元の幅と高さに追加されています。
下のボックスではwidthとheightの範囲内でpadding,borderが生成されています。

 

以上、CSSで書くbox-sizingの使い方について解説しました。

ぜひレスポンシブデザインを作る上で参考にしてみてください。
 

田島悠介

box-sizingのふたつの値を比較してみたよ。

大石ゆかり

content-boxは普段の状態、ボックスが大きくなっちゃうやつですね。

田島悠介

そうだね。そこで値をborder-boxにすることで領域内でpaddingやborderを設定することができるようになるんだ。

大石ゆかり

これで領域の設定がやりやすくなりそうですね。ありがとうございました!

 

[お知らせ]TechAcademyでは初心者でも最短4週間でオリジナルWebサイトを公開できるWebデザインオンラインブートキャンプを開催しています。