0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【CSS】ボックスモデル

Posted at

目次

  1. ボックスモデル
  2. Border
  3. Padding
  4. Margin
  5. Displayプロパティ
  6. 単位

ボックスモデル

ボックスモデルは、以下の4つの領域で構成されている。

  • Content: 要素自体の中身
  • Border: 要素の外周を囲む枠
  • Padding: コンテンツとボーダーの間のスペース
  • Margin: ボーダーの外側のスペース

開発者ツールでそれぞれ色分けされて表示されている。

 

Border

枠線

index.css
div {
  border: 2px solid red;  /* 2pxの赤いボーダー */
  border-radius: 50px;  /* 角を丸くする */
}
  • border-radius を使って角を丸くすることができる

 

Padding

内側の隙間

div {
  padding: 20px 30px;  /* 上下に20px、左右に30px */
}

スクリーンショット 2024-10-05 19.21.15.png

設定する時の種類

  • 上下 / 左右 の設定: padding: 10px 20px;
  • 上 / 左右 / 下 の設定: padding: 10px 20px 30px;
  • 上 / 右 / 下 / 左 の設定: padding: 10px 20px 30px 40px;

 

Margin

外側

div {
  margin: 10px 15px;  /* 上下に10px、左右に15pxのマージン */
}

スクリーンショット 2024-10-05 19.36.36.png

  • 画像のオレンジの部分margin
  • 細い黄色い部分border
  • 黄緑の部分padding
  • 水色の部分がコンテンツ

 

Displayプロパティ

要素がインライン要素かブロック要素かを指定する

  • ブロックレベル要素とは:h1, div など、幅と高さを持ち、改行される要素
  • インライン要素とは: span, a など、テキストのように横並びになる要素

スクリーンショット 2024-10-05 19.47.50.png

h1 {
  display: inline;  /* h1をインライン要素に変更 */
}
span {
  display: block;   /* spanをブロックレベル要素に変更 */
}

スクリーンショット 2024-10-05 19.49.02.png
h1がブロックレベル要素になって、spanがインライン要素に変わった!


ブロックレベル要素とインライン要素の特徴

  • ブロックレベル要素widthheightpaddingmarginがすべて適用される
  • インライン要素widthheightは適用されず、paddingmarginは横方向にしか適用されない

でも、インライン要素にwidthpaddingを適用させたい!

そんなときは!

inline-block

インライン要素のように横並びにしつつ、幅や高さ、マージン、パディングも適用可能にする。

span {
  display: inline-block;
  width: 100px;
  height: 50px;
  padding: 10px;
  margin: 20px;
}

スクリーンショット 2024-10-05 20.01.50.png
インライン要素のspanに、marginなどで余白ができてる!


display: none;

要素を完全に非表示にする。

div {
  display: none;
}

 

単位

% (パーセント)

親要素に対して相対的なサイズを指定する

例:

index.html
<body>
    <div>親要素はbody</div>
</body>
index.css
div {
  width: 50%;  /* 親要素の幅の50% */
}

divの幅は親要素(body)の幅の50%を指定する。

 

例外

  • line-height
    行の高さを指定するプロパティ。
    このプロパティで%を使った場合、その文字の大きさに対して、動作する。
h1 {
  font-size: 40px;
  line-height: 200%;  /* 行の高さは80px */
}

この場合、行の高さはh1のフォントサイズの2倍になる。


em

font-sizeの場合

親要素に対して相対的なサイズを指定する

例:

index.html
<div>
    <p>親要素はdiv</p>
</div>
index.css
div {
  font-size: 50px;  
}

p {
  font-size: 2em;  /* 親要素のフォントサイズの2倍、つまり100px */
}

この場合、親要素のdivのフォントサイズが50pxなので、divの中にあるp2emつまり、100pxとなる。

font-size以外の場合

その要素自身font-sizeを基準とする

例:

index.css
div {
  font-size: 20px;  
  padding: 2em; /* 20pxの2倍の40pxのパディング */
}

emが便利な場面

  • 親要素の font-size を変更すると、em で指定した値が全て連動して変更される
  • これにより、全体のデザインを一括で調整できる

emの問題点

  • emを使用する際に、階層構造が深くなると問題が発生することがある
  • ul>li>ul>li>ul>liがあったとして、そこにul1.5emを指定すると、
    ulがでるごとに1.5倍されるからどんどんデカくなっちゃう

例:

index.html
<ul>
  <li>最初のリスト項目</li>
  <ul>
    <li>ネストされたリスト1</li>
    <ul>
      <li>さらにネストされたリスト2</li>
      <ul>
        <li>さらにさらにネストされたリスト3</li>
      </ul>
    </ul>
  </ul>
</ul>
index.css
ul {
  font-size: 1.5em; /* 1.5倍にする */
}

スクリーンショット 2024-10-07 20.15.02.png
だんだんおっきくなっていっちゃう。


そこで!

rem

ルート要素font-sizeを基準とした相対単位

  • ルート要素とは:htmlタグ

  • ルート要素のfont-sizeが20pxなら1remは必ず20pxになり、2remは必ず40pxになる

例:

index.html
<html lang="ja" style="font-size: 20px;">
<body>
    <h1>これは2remの見出しです</h1>
    <p>これは1.5remの段落です</p> 
</body>
index.css
h1 {
    font-size: 2rem; 
}

p {
    font-size: 1.5rem; 
}
  • h1:ルート要素のfont-size (20px)の2倍、つまり40px
  • p:ルート要素のfont-size (20px)の1.5倍、つまり30px

em と rem の簡単な使い分け

  • em :親要素に合わせて 個別の要素のサイズを調整したいときに使う。
    • 例: ボタンやカード内の文字や余白を、親要素に合わせて変動させたいとき。
       
  • rem :サイト全体で 統一された基準を持たせたいときに使う。
    • 例: ルートフォントサイズを基準に、全体の文字やレイアウトを調整しやすくする。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?