jiho_bae
Go devlog
jiho_bae
전체 방문자
오늘
어제
  • 분류 전체보기 (158)
    • JavaScript (38)
      • theory (34)
      • vanilla (4)
    • HTML & CSS (2)
    • Browser (3)
    • CS (6)
      • linux (1)
      • shell (2)
      • compiler (2)
    • DS & Algorithm (87)
      • theory (5)
      • basic (7)
      • programmers (30)
      • baekjoon (45)
    • Design Pattern (2)
    • Error (4)
    • Git & Github (4)
    • Tools (1)
    • 부트캠프 (4)
    • Small Tips (2)
    • Java (3)
    • test (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 덧칠하기 javascript
  • 프로그래머스 숫자카드나누기 javascript
  • 자바스크립트 커링
  • safari Date format NaN
  • 가사 검색 자바스크립트
  • 13460 javascript nodejs
  • 외벽 점검 javascript
  • 자바스크립트 배열의 특수함
  • 백준 17406 nodeJS
  • 자바스크립트 모듈 시스템
  • 리액트 프로젝트 디버깅하기
  • 자바스크립트 비동기 마이크로 태스크 큐와 렌더링 과정
  • 자바스크립트 이벤트 위임
  • javascript use strict
  • fetch 취소하기
  • 자바스크립트 sort는 왜 그모양일까
  • 카카오 코딩테스트 양궁대회 nodeJS
  • 자바스크립트 채팅방 스크롤
  • safari invalid date error
  • 리코쳇 로봇 javascript
  • JavaScript
  • 계수정렬 자바스크립트
  • 억억단을 외우자 javascript
  • 깃 이전 커밋에서 새 브랜치 만들기
  • 25632 소수 부르기 게임
  • 퀵정렬 자바스크립트
  • 백준 자바스크립트 입력 템플릿
  • 1753 최단경로 javascript
  • 병합정렬 자바스크립트
  • 대충만든자판 javascript

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
jiho_bae

Go devlog

[CSS] box-sizing : border-box;
HTML & CSS

[CSS] box-sizing : border-box;

2022. 8. 30. 17:51

box-sizing : border-box!

요소의 크기가 원하는대로 보이지 않을 때 사용하는 CSS 프로퍼티다.

예전에는 뭔가 치트키스럽다는 생각을 가지고 있었다 ㅎㅎ..

 

사실 그냥 박스모델 개념을 알면 쉽게 풀린다.

 

아주 짧게 박스모델과 관련하여 box-sizing 속성에 대해 알아보자.


박스 모델

프론트엔드 개발자가 크롬에서 자주 만나는 사각형이다.

 

box model은 4가지 부분으로 구성된다.

margin, border, padding, content box!

 

margin은 생략하고, border, padding, content box를 중심으로 보자.

우리가 만들 요소의 크기가 border+pading+content box로 정해지기 때문이다.

 

 

우선, CSS box-sizing 속성의 기본값은 content-box이다.

 

content-box

content-box 일 때는 지정한 width 값이 content box의 크기를 의미하게 된다.

 

크기 400px짜리 요소를 만드려는 의도로, {width:400px;}를 적었다고 하자.

<!DOCTYPE html>
<html lang="en">
  <head>
    <style>
      div {
        width: 400px;
        height: 200px;
        margin: 10px;
        padding: 20px;
        border: 1px solid black;
      }
      #content-box {
        background-color: beige;
      }
    </style>
  </head>
  <body>
    <div id="content-box">Content Box</div>
  </body>
</html>

 

box-sizing:content-box (기본값)

그러나 의도와는 달리 width:400px가 content-box의 크기이기 때문에

- border : 1px

- padding : 20px

- content box width : 400px

결국 442px짜리 박스가 만들어지는 것이다.

 

 

border-box

box-sizing: border-box로 지정해주면, 박스 크기를 설정할 때 border 영역까지 포함하게 된다.

<!DOCTYPE html>
<html lang="en">
  <head>
    <style>
      div {
        width: 400px;
        height: 200px;
        margin: 10px;
        padding: 20px;
        border: 1px solid black;
      }
      #content-box {
        background-color: beige;
      }
      #border-box {
        background-color: coral;
        box-sizing: border-box;
      }
    </style>
  </head>
  <body>
    <div id="content-box">Content Box</div>
    <div id="border-box">Border Box</div>
  </body>
</html>

 

처음 의도했던 {width:400px;}가 전체 박스에 적용된 결과로,

 

- border : 1px

- padding : 20px

- content box : 400px - 1px - 1px - 20px - 20px = 358px

총 400px짜리 박스가 만들어진다.

 


요약

요소에 적용한 width 프로퍼티는 box-sizing 옵션에 따라 다음과 같이 결정된다.

 

content-box : border + padding + width(= content-box)

border-box : width(= border + padding + content-box)

 

저작자표시 (새창열림)

'HTML & CSS' 카테고리의 다른 글

[HTML] script 태그의 async, defer 속성  (0) 2021.12.12
    'HTML & CSS' 카테고리의 다른 글
    • [HTML] script 태그의 async, defer 속성
    jiho_bae
    jiho_bae
    하루에 한 걸음씩

    티스토리툴바