JavaScript를 위한 CSS 요소 확장

width와 height CSS 속성을 설정하는 것이 요소가 해당 크기로 될 것임을 보장하지는 않습니다. 예제를 통해 살펴보겠습니다.

예제

현재 요소의 크기는 지정된 것과 일치합니다:

html<div id="elem">
  text
</div>
css#elem {
  width: 200px;
  height: 200px;
  margin: 50px auto;
  background: #CFF5BF;
}

Результат:

예제

이제 요소에 padding 속성을 설정해 보겠습니다. 결과적으로 요소의 실제 너비는 지정된 안쪽 여백 값만큼 더 커지고 확장될 것입니다:

html<div id="elem">
  text
</div>
css#elem {
  padding: 25px;
  width: 200px;
  height: 200px;
  margin: 50px auto;
  background: #CFF5BF;
}

Результат:

예제

테두리가 존재하는 것도 요소를 확장시킵니다:

html<div id="elem">
  text
</div>
css#elem {
  width: 200px;
  height: 200px;
  margin: 50px auto;
  background: #CFF5BF;
  border: 20px solid #F0D7A1;
}

Результат:

예제

box-sizing 속성은 위에서 설명한 동작을 변경할 수 있게 합니다. 안쪽 여백이나 테두리가 요소를 확장하지 않도록 만들 수 있습니다. 이를 위해 이 속성에 border-box 값을 설정해야 합니다:

html<div id="elem">
  text
</div>
css#elem {
  box-sizing: border-box;
  padding: 20px;
  width: 200px;
  height: 200px;
  margin: 50px auto;
  background: #CFF5BF;
  border: 20px solid #F0D7A1;
}

Результат:

설명된 내용의 중요성

JavaScript의 관점에서 보면, 설명된 상황은 그다지 편리하지 않습니다. 결국 width 속성의 값을 읽었다고 해서 우리가 요소가 정확히 그 너비일 것이라고 확신할 수는 없게 됩니다.