2.BOX

3 minute read

1. Box Model

Box model Box model property

  • content : Content가 들어있는 상자, 가로를 width 세로를 height 라고 한다.

  • padding : Content와 Border(테두리) 사이에 있는 안쪽 공간을 padding 이라고 한다.

  • border : 테두리를 나타냄 , 그리고 border는 3가지 value를 사용한다 (크기 , 굵기 , 색상)
    selector {
      border: 1px solid #0000;
    }
    
  • margin : 요소와 요소의 간격을 나타낼때 사용함

꿀 Tip~

  • 이 속성들을 빠르게 사용하는 방법

  • bad example

selector {
  padding-left: 30px;
  padding-right: 30px;
  padding-top: 30px;
  padding-bottom: 30px;
}
selector {
  padding-top: 20px;
  padding-right: 50px;
  padding-bottom: 40px;
  padding-left: 30px;
}
selector {
  padding-top: 20px;
  padding-right: 30px;
  padding-bottom: 40px;
  padding-left: 30px;
}
  • good example
selector {
  padding: 30px 30px;
  /* 처음 value 30px은 top,bottom에 영향을 주고 , 두번째 value는 right와 left에 영향을 준다 */
}

selector {
  padding: 20px 40px 40px 30px;
  /* value는 차례대로 위 오른쪽 아래 왼쪽 에 영향을 준다. (시계방향)*/
}

selector {
  padding: 20px 30px 40px;
  /* 30px이 오른쪽과 왼쪽에 모두 영향을 줌 */
}

2. Box Sizing

  • box-sizing 이란 property 중 하나인데, 박스의 width와 height 를 내가 원하는 박스의 width와 height로 지정해주기 위해 사용한다.

    • box-sizing : content-box; (default값)

    • box-sizing : border-box;

  • 기본적으로 웹브라우저의 box-sizing은 content-box로 되어잇는것을 볼수 있는데, 이 말인즉슨 width와 height가 content-box 의 width와 height 라는 것이다. (box-model 사진을 보고 이해하면 더 쉽다.)

  • 예를들어

selector {
  width: 30px;
  height: 30px;
}

이라고 하면 여기서 width와 height는 content box의 width와 height 이다.


꿀 Tip

  • box-sizing이 content-box로 하면 불편함이 하나 생기는데 이 불편함이 무엇인지 예를들어 파악해보자

bad example;

selector {
  width: 100px;
  height: 100px;
  padding-top: 50px;
}

이럴경우 내가 원하는것은 가로가 100px 이고 세로가 100px인데, padding을 줬기 때문에 보이는 화면상 가로가 150px 이 되어버리는 불편함이 생긴다. 즉 화면상 padding, border에 의해서 가로와 세로의 길이를 달라져버린다. 이렇게 되면 나는 가로 100px 세로 100px를 하기 위해서는 hegiht:50px로 두어야지 화면상 가로 100px 세로 100px의 모양이 나온다. 하지만 이게 엄청 복잡해지면 내가 일일이 화면의 길이를 바꿔야하는 어려움이 생겨버린다.

  • 따라서 이를 방지하기 위해 box-sizing을 content-box가 아닌 border-box 으로 둔다. border-box로 두게 되면 border를 포함한 박스를 하나로 보게되며, 우리가 인지구조(?)에 맞게 동작하는 박스로 사용할수 있게 된다.

bad example;

selector {
  box-sizing: border-box;
  width: 100px;
  height: 100px;
  padding-top: 50px;
}

이렇게 하게 되면 내가 원하는 가로 100px 세로 100px이 만들어 지며, padding을 주었더라도 알아서 가로가 100px , 세로가 100px이 길이를 맞춰준다.

  • 따라서 일반적으로 대다수의 Front-end 개발자들은 전체의 box-sizing을 border-box로 둔다
* {
  box-sizing: border-box;
}

3. Box

  • 초보자들은 Box-model에 대해서 아는것도 중요하지만 Box 에 대해서 아는것이 더 중요하다!!!

4. Block(길막, 너무 중요하니까 외우고 이해해)

  • block : 영역을 잡아야할때 사용함

  • Box Type 을 결정 짓는 요소 Display

  • Display 값중 하나인 Block 에 대해서 배워보자 !!

    • block : 화면에서 내 박스 말고는 다른 박스가 오지 못하게 막는 값

      • 박스에 width를 선언하지 않을 경우 , width = 부모의 content-box의 100%

      non width

      • 따로 width를 선언한 경우, 남은 공간은 margin으로 자동으로 채움

      width

      • 따로 부모의 hegiht를 선언하지 않을경우 , 자식요소의 hegiht의 합 = 부모의 height

      non height

    • block 은 width, margin, height, padding , border 다 사용 가능


꿀 Tip

  • selector {
      margin: 0 auto;
    }
    

    에 대해서 이해해보자 일반적으로 개발자들이 박스의 가운데 정렬을 하기 위해서 사용하는데, 이경우 margin을 위 아래에 0을 주고 오른쪽 왼쪽의 margin을 auto로 주었다.

  • selector {
      margin-left: auto;
      margin-right: auto;
    }
    

    와 같은 기능을 하는데 이말인즉슨 width를 주고 남은 margin 을 왼쪽에 두고, 오른쪽에도 둔다는 얘기이다. 따라서 가운데 정렬이 되는 현상이 발생하는것이다.


5. inline(흐름)

  • inline : 콘텐츠를 옆으로 흐르게 하는 흐름

  • inline은 width, height, padding-top, padding-bottom, border-top, border-bottom , margin-top, margin-bottom (why? 인라인의 흐름을 방해하는 요소)

inline_img

보는 바와 같이 top 이나 bottom을 쓸경우, 글씨를 덮어버리면서 영역으로도 의미가 없고 흐름도 깨버리는 문제가 발생함 (따라서 padding-top, padding-bottom , border-top , border-bottom, margin-top, margin-bottom width, height를 쓰지 않음)

6. inline Block

  • inline Block : inline과 block 장점을 모두다 가지고 있는 요소, 흐름과 영역을 모두 가짐

inlineblock_img

  • display 속성이 inline-block으로 지정된 엘리먼트는 기본적으로 inline 엘리먼트처럼 전후 줄바꿈 없이 한 줄에 다른 엘리먼트들과 나란히 배치됩니다.하지만 inline 엘리먼트에서 불가능하던 width와 height 속성 지정 및 margin과 padding 속성의 상하 간격 지정이 가능해집니다.

  • 대표적인 inline-block 엘리먼트로

Tags:

Categories:

Updated:

Leave a comment