width
속성의 이해
width
속성은 요소의 너비, 즉 가로 크기를 지정합니다.
이 크기의 기준은 기본적으로 콘텐츠 영역의 너비입니다.
그러나, 요소의 크기를 계산할 때 크기의 기준을 설정하는 box-sizing
이 border-box
로 설정되어 있다면 테두리 영역까지의 너비가 기준이 됩니다.
width 속성은 요소의 너비, 즉 가로 크기를 지정합니다.
형식 구문
selector {
width: <길이> | <백분율(%)> | <키워드>
}
구문
/* <길이> 단위 값 */
width: 120px;
width: 13rem;
width: 15rem;
/* <백분율(%)> 단위 값 */
width: 50%; /* 컨테이닝 블록 너비의 50% */
width: 100%; /* 컨테이닝 블록 너비의 100% */
/* <키워드> 값 */
width: auto; /* 초깃값 */
width: max-content;
width: min-content;
width: fit-content;
/* 전역 값 */
width: inherit;
width: initial;
width: revert;
width: revert-layer;
width: unset;
값
width
속성은 다양한 형태의 값을 사용할 수 있습니다.
이를 설명과 예제로 정리하면 다음과 같습니다.
<길이>
단위 값
길이 단위의 값은 항상 양수입니다. (음수 값은 유효하지 않습니다.)
상대적 <길이>
단위
절대적 <길이>
단위
-
px
- CSS에서 사용 가능한 절대적 길이 단위
예제
<p>width 속성은 요소의 너비, 즉 가로 크기를 지정합니다.</p>
p {
width: 100px;
background-color: gold;
}
width 속성은 요소의 너비, 즉 가로 크기를 지정합니다.
<백분율(%)>
단위 값
컨테이닝 블록(containing block)의 너비에 대한 백분율로 정의합니다. (음수 값은 유효하지 않습니다.)
예제
<div class="parent">
<p class="child">부모 요소(컨테이닝 블록)의 너비에 대한 백분율로 정의합니다.</p>
</div>
.parent {
background-color: silver;
}
.child {
width: 50%;
background-color: gold;
}
부모 요소(컨테이닝 블록)의 너비에 대한 백분율로 정의합니다.
auto
초깃값이며, 브라우저가 너비를 자동으로 결정합니다.
이때 브라우저가 너비를 결정하는 요인은 크게 두 가지입니다.
- 일반적인 문서 흐름에 배치된 요소
- 일반적이지 않은 문서 흐름에 배치된 요소
일반적인 문서 흐름에 배치된 요소
일반적인 문서 흐름에 배치된 요소는 display
속성 값이 어떻게 설정되어 있는지에 따라 달라집니다.
display: block
, display: flex
, display: grid
display: block
,
display: flex
,
display: grid
등으로 설정된 요소는 부모 컨테이너의 너비를 꽉 채웁니다. 이 때, 부모 요소에 안쪽 여백을 설정하는 padding
이 있거나, 자식 요소인 자신에 바깥쪽 여백인 margin
이 있으면, 이 여백들과 함께 꽉 채우게 됩니다.
display: inline
display: inline
값이 설정된 요소들 중에서 대체 요소에만 적용이 가능하고 너비는 콘텐츼의 너비와 동일합니다.
display: inline-block
, display: inline-flex
, display: inline-grid
display: inline-block
, display: inline-flex
, display: inline-grid
등으로 설정된 요소는 콘텐츠의 너비와 동일합니다.
일반적이지 않은 문서 흐름에 배치된 요소
일반적이지 않은 문서 흐름이란 다음과 같은 경우입니다.
float
이 설정된 경우position: absolute
또는position: fixed
가 설정된 경우- 플렉스 박스의 아이템으로 사용되는 경우
- 그리드 박스의 아이템으로 사용되는 경우
이러한 경우에는 일반적인 문서 흐름을 벗어나 독자적인 레이아웃으로 배치되기 때문에 설정되어 있는 display
속성 값과는 상관없이 다음과 같이 결정됩니다.
float
이 설정된 경우에는 콘텐츠의 폭(fit-content
크기)이 너비가 됩니다.position: absolute
또는position: fixed
가 설정된 경우에는left
와right
속성의 값이 모두auto
값이 아닌 값으로 지정되어 있을 경우에는 그 차이의 폭이 너비가 됩니다. 이 경우를 제외하면 콘텐츠의 폭(fit-content
크기)이 너비가 됩니다.- 플렉스 박스의 아이템으로 사용되는 경우에는 플렉스 컨테이너에 설정된 레이아웃에 따라 달라집니다.
- 그리드 박스의 아이템으로 사용되는 경우에는 그리드 컨테이너에 설정된 레이아웃에 따라 달라집니다.
max-content
width
속성에서 max-content
값은 텍스트나 인라인 콘텐츠의 경우, 오버플로가 발생하더라도 전혀 자동 줄바꿈(soft-wrapping)을 수행하지 않고, 텍스트나 인라인 콘텐츠를 모두 펼쳐서 표시할 수 있는 이상적으로 충분히 차지할 수 있는 가장 작은 크기를 의미합니다. 블록 콘텐츠는 그 고유 너비를 그대로 의미합니다.
max-content
는 그 콘텐츠가 차지하는 최적의 충분한 너비만큼 요소의 크기를 맞추는 역할을 합니다.
예제를 통해 살펴보겠습니다.
<div class="parent">
<p class="child">width의 max-content</p>
<p class="child">width의 max-content 값의 이해</p>
<p class="child">width의 max-content 값은 그 콘텐츠가 차지하는 최적의 충분한 너비만큼 요소의 크기를 맞추는 역할</p>
</div>
.parent {
width: 400px;
background-color: silver;
border: 5px dashed red;
}
.child {
width: max-content;
background-color: gold;
}
width의 max-content
width의 max-content 값의 이해
width의 max-content 값은 그 콘텐츠가 차지하는 최적의 충분한 너비만큼 요소의 크기를 맞추는 역할
주의할 점
위 예제에서 적용된 모습을 보면 알 수 있듯이, max-content
는 해당 요소의 콘텐츠 길이만을 고려하여, 너비를 설정합니다. 컨테이닝 블록(containing block)의 너비나 레이아웃 제약 조건은 고려하지 않습니다.
만약 해당 요소의 max-content
값으로 구현되는 콘텐츠의 너비가 컨테이닝 블록(containing block)의 너비보다 클 경우에는 오버플로(overflow, 경계를 넘어섬)가 발생하여 콘텐츠가 컨테이닝 블록(containing block)의 경계를 넘어설 수 있습니다.
min-content
width
속성에서 min-content
값은 해당 요소의 콘텐츠인 텍스트나 인라인 콘텐츠의 경우 자동 줄바꿈(soft-wrapping)할 수 있으면 모두 줄바꿈하여 가장 큰 단어나 인라인 콘텐츠만큼 작아짐을 의미합니다.
이 값은 컨테이닝 블록(containing block)의 너비나 레이아웃에 영향을 받지 않으며, 콘텐츠 자체만을 기준으로 계산됩니다.
예제를 통해 살펴보겠습니다.
<div class="parent">
<p class="child">width의 min-content</p>
<p class="child">width의 min-content 값의 이해</p>
<p class="child">codingeverybody{} 모든 사람을 위한 코딩 학습서입니다.</p>
</div>
.parent {
width: 400px;
background-color: silver;
border: 5px dashed red;
}
.child {
width: min-content;
background-color: gold;
}
width의 min-content
width의 min-content 값의 이해
codingeverybody{} 모든 사람을 위한 코딩 학습서입니다.
fit-content
width
속성에서 fit-content
값은 컨테이닝 블록(containing block)의 너비나 레이아웃 제약을 고려하여,
요소의 너비를 min-content
와 max-content
사이의 적합한 값으로 설정합니다.
min-content
보다 작아질 수 없고,max-content
보다 커질 수 없으며,- 콘텐츠가 컨테이닝 블록(containing block)의 경계를 넘지 않도록 컨테이닝 블록(containing block)의 너비를 초과하지 않습니다.
예제를 통해 살펴보겠습니다.
<div class="parent">
<p class="child">width의 fit-content</p>
<p class="child">width의 fit-content 값의 이해</p>
<p class="child">containing block의 너비나 레이아웃 제약을 고려하여 min-content와 max-content 사이의 적합한 값으로 설정합니다.</p>
</div>
.parent {
width: 400px;
background-color: silver;
border: 5px dashed red;
}
.child {
width: fit-content;
background-color: gold;
}
width의 fit-content
width의 fit-content 값의 이해
containing block의 너비나 레이아웃 제약을 고려하여 min-content와 max-content 사이의 적합한 값으로 설정합니다.
min-width
와 max-width
와의 관계
주의할 점
<span>display가 inline</span>
width: 50px;
은 적용되지 않습니다.
span {
display: inline; /* 이 값을 지정하지 않아도 span 요소의 display 초깃값은 inline이다. */
width: 50px;
background-color: gold;
}
width: 50px;
은 적용되지 않습니다. 자신 요소의 보여지는 콘텐츠의 너비가 적용됩니다.
table columns(<col>
), column groups(<colgroup>
)인 요소에서는 width
가 min-width
처럼 작동합니다.
형식 정의
초깃값 | auto |
---|---|
적용 요소 |
<tr> ), row groups(<thead> , <tbody> , <tfoot> )는 제외 |
상속 | 아니오 |
애니메이션 | <길이> 단위 값, <백분율(%)> 단위 값, calc() 로 계산된 값 |
브라우저 호환성
속성과 값 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
---|---|---|---|---|
width
|
1 | 12 | 1 | 1 |
max-content
|
46 | 79 | 66 | 11 |
min-content
|
46 | 79 | 66 | 11 |
fit-content
|
46 | 79 | 94 | 11 |
명세서
명세서 사양 | |
---|---|
width
|
CSS Box Sizing Module Level 4 #width-height-keywords |
참고문헌
같이 보기
- CSS min-width 속성 – 요소의 최소 너비 지정
- CSS max-width 속성 – 요소의 최대 너비 지정
- CSS height 속성 – 요소의 높이 지정
- CSS min-height 속성 – 요소의 최소 높이 지정
- CSS max-height 속성 – 요소의 최대 높이 지정
- CSS box-sizing 속성 – 요소의 너비와 높이의 크기 계산의 기준 설정
- CSS aspect-ratio 속성 – 요소의 가로 세로 비율 설정
- CSS overflow 속성 – 내용이 요소보다 클 때 처리 방식 지정
- CSS table-layout 속성 – 테이블 너비 레이아웃 구현 방식 선택