[CSS] Box Model


📦Box Model


  • コンテンツ:コンテンツの領域が表示されます.
  • padding:コンテンツと枠線の間の領域.
  • border:枠線と枠線の間の枠線を塗りつぶします.既定値は0
  • です.
  • 余白:一番外側のレイヤーで、内容とpadding、borderの周りで、このボックスと他の要素の間で空白として機能します.
  • <サイズ>


    これらは
  • boxサイズを設定できる要素です.
  • ブロック要素のサイズはデフォルトと同じで、height、widthに適用され、直接指定すると指定されたサイズがあります.ex)div
  • inline要素height/widthプロパティを適用しない->displayプロパティを使用してblock要素に変更できます.ex)span
  • 行のブロック要素はheight/width、margin/paddingに適しています.でも横に並べます.
  • 🗳️ width

  • 要素の幅を設定します.デフォルト値はコンテンツ領域の幅ですが、ボックスサイズがborder-boxの場合、枠線領域の幅を設定します.継承されません.
  • 🗳️ height

  • 要素の高さを指定します.コンテンツ領域の高さはデフォルトで設定されますが、ボックスサイズがborder-boxの場合は、枠線領域の高さが設定されます.継承されません.
  • 🗳️ min/max-height/width

  • は、最小/最大幅/高さを指定できます.この値を超えると、小さくなったり大きくなったりしません.
  •    .blcok {
          width: 100px
          height :200px
       }
       
       #parent {
          width: 100px
          height :200px
       }
       
       #child {
          width: 50%px
          min-wid: 100px -> 50%한 값이 100px이하로 줄어들게 되면 더이상 줄어들지 않는다.
          height :200px
       }

    <余白>


    これらは
  • boxモデルの空白を決定する要因である.
    1つの値
  • は、すべての4つの面の枠線スタイルを設定します.
  • 2つの値
  • を指定すると、1つ目は上下の枠線スタイル、2つ目は左右の枠線スタイルを設定します.
  • 3つの値
  • を指定すると、1つ目は上、2つ目は左と右、3つ目は下の枠線スタイルに設定されます.
  • の4つの値を指定すると、上、右、下、左の順に枠線スタイルが指定されます.(時計回り)
  • 🗳️ margin

  • boxモデルの一番外側の空白部分.
  • inline要素ではtop、bottomは指定できません.
  • ページ-下、ページ-左側、ページ-右側、ページ-上部の4つの部分を調整できます.
  •    /* Apply to all four sides */
      margin: 1em;
      margin: -3px;
    
      /* vertical | horizontal */
      margin: 5% auto;
    
      /* top | horizontal | bottom */
      margin: 1em auto 2em;
    
      /* top | right | bottom | left */
      margin: 2px 1em 0 auto;
    
      /* Global values */
      margin: inherit;
      margin: initial;
      margin: revert;
      margin: unset;

    <Value>

  • lengthを指定する場合:固定値を余白のサイズとして使用します.
  • %を使用する場合:輪郭ブロックの幅は、余白の割合で表されます.**親のwidth値の計算値.
  • 負の値は
  • で使用できます.
      #parent {
      	width: 200px
        	height: 200px
      }
      #child {
      	margin: 30% -> 부모의 width인 200px의 30%의 값을 가지게 된다.
      }

    🗳️ 境界崩壊(境界相殺)

  • 複数のブロック要素の上下の余白は、場合によっては最大の余白にマージ(相殺)されます.
  • 次の3つの場合に発生します.

    1.近所の兄弟

  • 兄弟の要素の上下の空白は出会って相殺します.
    ex)boxの上端が10 px、下端が20 pxの場合、2つのboxが重なると、20 pxでマージンが得られる.
  • 2.親子の間

  • 親ブロックにはborder、padding、inlineの内容はありません.親ブロックが子ブロックのmargine-topと出会った場合、
  • の下の画像では、border、padding、およびコンテンツ値がなければ、子供のピッチおよび特許のピッチしか遭遇しない.
  • などの理由で高さ値が指定されていないため、親子のbottomが出会うと
  • 3.ブランクブロック

  • border、padding、inlineの内容がなく、height値が指定されていない場合、ブロックのmarging-topおよびmargine-bottomは相殺されます.
  • 🗳️ padding


    <ボーダー>

  • 要素の4方向内側の空白領域を設定します.padding-top、padding-right、padding-bott、padding-leftのショートカットプロパティ.
  • inline要素ではtop、bottomは指定できません.
  •     /* 네 면 모두 적용 */
        padding: 1em;
    
        /* 세로방향 | 가로방향 */
        padding: 5% 10%;
    
        /* 위 | 가로방향 | 아래 */
        padding: 1em 2em 2em;
    
        /* 위 | 오른쪽 | 아래 | 왼쪽 */
        padding: 5px 1em 0 2em;
    
        /* 전역 값 */
        padding: inherit;
        padding: initial;
        padding: unset;
  • lengthを指定する場合:固定値を余白のサイズとして使用します.
  • %を使用する場合:輪郭ブロックの幅は、余白の割合で表されます.**親のwidth値の計算値.
  • 負の値は使用できません
  • 🗳️ border

  • 要素の枠線を設定します.border-width(枠線の厚さ)、border-style(枠線の形状)border-colo(枠線の色)の値を設定します.
  • borderスタイルにはいろいろあります.
  • スタイルがnoneの場合、他のプロパティは適用されません.
  • line-width:枠線の太さ、デフォルト値はmediumです.border-widthを参照してください.
  • line-style:枠線のスタイルで、デフォルトはnoneです.border-styleを参照してください.
  • color:枠線のデフォルト色はcurrentcolorです.border-colorを参照してください.
  •   /* 스타일 */
      border: solid;
    
      /* 너비 | 스타일 */
      border: 2px dotted;
    
      /* 스타일 | 색 */
      border: outset #f33;
    
      /* 너비 | 스타일 | 색 */
      border: medium dashed green;
    
      /* 전역 값 */
      border: inherit;
      border: initial;
      border: unset;
    

    ✅ border vs outline

  • outline要素の内容の外部のみを描画し、スペースを消費しません.
  • outlineはboxモデルに含まれません.
  • 🗳️ border-radius

    border-bottom-right-radius: 5px;
  • 要素の境界の頂点を丸くします.円形頂点を適用するには1つの値、楕円頂点を適用するには2つの値を使用します.
  • radiusを使用すると、指定したpxを半径の円として描画できます.
  • radiusにはいろいろな種類があります.
  • の長さを指定する場合:長さの値を使用して円の半径または楕円の短い半径と長い半径を指定します.
  • %を使用する場合は、パーセンテージ値を使用して円の半径または楕円の短い半径と長い半径を指定します.[水平軸](Horizontal Axis)は要素ボックスの幅のパーセント、垂直軸の値はボックスの高さのパーセントです.
  • の負の値は使用できません.
  • 🗳️ box-sizing

  • CSSボックスモデルのデフォルト値では、指定した幅と高さは要素のコンテンツボックスサイズにのみ適用されます.すなわち,要素に枠や内側の空白があれば,幅と高さで画面に再描画する.
  • box-sizing: content-box;
    width: 100%;
    border: solid #5B6DCD 10px;
    padding: 5px;

    したがって、ボックス全体のサイズを変更したくない場合は、border-boxを指定する必要があります.
    <属性値>content-box
    デフォルトは
  • です.水平幅と垂直幅をコンテンツ領域の水平幅と垂直幅に設定します.ダウンジャケット、枠線、およびマージン領域は、指定したサイズに含まれません.
    border-box
  • 横幅および縦幅は、コンテンツ領域、ダウンジャケット領域、および枠線領域を含む余白領域を含まない大きさに設定される.
  • buttonは基本的にborder boxです.
    initial
  • プロパティのデフォルト値に設定します.
    inherit
  • の親要素の属性値を継承するように設定します.
  • 🗳️ border-box

    box-sizing: border-box;を使用します.
  • 要素の幅と高さを計算する方法を指定します.
  • したがって、寸法を設定するときに必要な寸法を得るには、枠線または内側の余白を考慮する必要があります.
    下図では、横長と縦長はそれぞれ300200であるが、borderの30 pxを加えると、実際には360、260である.
  • bord−boxはborderおよびpaddingのサイズも要素のサイズとして考慮する.
  • ✅ border vs outline


    cssの上部に次のコードのように宣言する場合は、各要素に属性を与える必要はありません.
      * {
        box-sizing: content-box;
      }