17) CSS 속성 - width

width 속성은 요소의 가로 크기를 정의하는 데 사용하는 속성입니다.

정확히는 content 영역의 너비를 지정하는 것을 의미합니다.

크기를 지정한다는 것은 같지만, 요소의 종류나 특징에 따라서 다르게 동작하기도 합니다.

 

요소의 가로 크기를 지정하는 width 속성은 인라인 레벨 요소를 제외한 모든 요소에 적용됩니다.

 

width 속성

      기본 값 : 0

 

< 속성 값 >

auto 브라우저에 의해 자동으로 계산하여 적용합니다. * 요소의 레벨 기본 특성에 따라 다르게 동작합니다.
length 고정값으로 지정합니다. (ex. px, em ....)
percent 부모 요소의 width에 상대적인 크기를 지정합니다.

width는 content 영역의 너비를 제어할 때 사용하는데 이때 auto가 아닌 특정한 값을 지정하여 사용하면,

그 크기는 box model 영역에서 margin 영역을 제외한 모든 영역에 대해 영향을 받습니다. (content, padding, border) 

예를 들어,

<div class="box"> box </div>
 
.box {
  width: 100px;
  padding: 20px;
  border: 10px solid black;
}

위와 같이 선언되어있다면 요소의 총 가로 크기는 160px가 됩니다.

분명 width: 100px를 적용했는데 어떻게 160px가 된 걸까요?

앞선 설명에서 언급한 바와 같이 width는 padding, border 영역에 대해서 영향을 받기 때문입니다.

 

식으로 나타내면,

100px content + ( 20px * 2) padding + ( 10px * 2 ) border = 160px 가 된 것입니다.   

또한, width는 %를 이용해서도 크기를 지정할 수 있습니다.

<div class="parent">
  <div class="child">
    child
  </div>
</div>
 
.parent {
  width: 300px;
  border: 20px solid red;
}
.child {
  width: 50%;
  padding: 20px;
  border: 10px solid black;
}

위와 같이 코드를 적용 했을 때 .child의 크기는 어떻게 적용될까요?

 

정답은 210px 입니다.

우선, padding (20px * 2) + border (10px * 2) = 60px 입니다.

210px - 60px = 150px 이며, 150px은 부모의 width가 300px이므로 300px의 50%인 150px이 width값으로 결정된 것입니다.

결국 %값일 때에는 부모의 width값에 대해서 계산되어지는데,

이때 부모의 width는 content 영역의 크기를 의미합니다.

부모의 padding과 border까지 더해진 요소의 전체 크기가 아닌, content 영역의 크기가 기준이라는 것을 기억하시면 됩니다.

child{ width: 300px; }

 

'코딩 이야기 > CSS' 카테고리의 다른 글

19) CSS 속성 - font-family  (0) 2024.04.23
18) CSS 속성 - height  (0) 2024.04.23
16) CSS 속성 - margin & padding  (0) 2024.04.23
15) CSS 속성 - margin  (0) 2024.04.23
14) CSS 속성 - padding  (2) 2024.04.22