CSS의 height:100%와 height:100vh의 차이 (+width)

height: 100%

부모의 높이 값에 의존한다. 부모에게 height가 설정되어있어야한다

( 단위가 %일땐 부모의 값에서 높이를 상속받는다)

(height와 width는 상속받지 않는다 %라는 단위가 상속을 받을뿐이다)

height: 100vh

사용기기의 높이에 의존한다. 부모에게 height가 설정되어있지 않아도 된다


차이

height:100vh (현재화면 뷰포트기준)

height:100% (부모기준이다 그러므로 부모의 height가 지정되지 않으면 사용할수없다)

↑ 그래서 html,body 태그에도 height:100%를 사용하지 않으면 사용할수없는 경우가 많다




height:100%를 사용한 NG사례

NG사례

사례1

NG를 무리하게 수정한 경우

(부모인 html과 body에 height:100%을 줬다)

사례2

height:100vh를 사용한 OK사례

사례3100vh를 사용하여 브라우저의 높이에 의존하는중




min-height: 100vh

현재 스크린의 화면을 최소 100%높이로 꽉 채운다는 의미로 사용된다 ( 즉 최소 화면을 100%로 유지한다는 뜻 )

min-h-[calc(100vh - 20px - 20px)] // tailwindcss의 예제



1.Width에 대해서

1. width를 px로 설정하는 경우 , 부모의 width보다 자식의 width가 큰 경우 자식요소가 밖으로 삐져나와서 무너진다. 그러므로 반응형 고려시 %가 좋다

2. width:100%라도 margin이 합해지면 width:100% +margin이 표현 되므로 레이아웃 무너지는 경우가 있다

그러므로 width는 아무것도 설정하지 않거나 width:auto라는 기본 설정을 해주면 된다

3. width의 default값은 width:auto이다. width:auto는 margin이 제외된 최대 width를 가지므로 2번의 문제는 고려하지않아도 된다

4. 즉 margin과 width:100%는 같이 사용하는것은 피하는게 좋다

(참조)


2.Width와 box-sizing의 content-box와 border-box에 대해서

- width 값에는 margin / padding / border가 포함되지 않는다 (*중요)

- 그러나 예외적으로 box-sizing가 content-box인가 border-box인가에 따라서 padding과 border는 width에 포함시킬수있다

content-box width가 margin , padding , border를 포함하지않는다 (*중요) // 디폴트값

border-box width가 margin을 포함하지않는다. 그러나 padding , border을 포함한다 (*중요)

div {
  width: 100px;
  height: 100px;
  padding: 20px;
  margin: 20px;
  border: 5px solid red;
}

.content-box {
  box-sizing: content-box;
  /* 일반적인 디폴트 설정이며 width에 margin,padding,border는 포함되지 않는다 */
  /* width or height: 100px + (2 * 20px) + (2 * 5px) = 150px
     Content box width or height: 100px */
}

.border-box {
  box-sizing: border-box;
  
  /* width에 padding,border을 포함하는 설정이다. 그러나 margin은 포함하지 않는다 */
  /* width or height: 100px
     Content box width or height: 100px - (2 * 20px) - (2 * 5px) = 50px */
}


3. div에 width를 설정하면 margin은 어떻게 되는가?

그리고 div는 블록으로 기본적으로 width가 100%이다

그러나 width:100px처럼 지정해주면 100px의 div를 생성후 나머지는 공간은 margin으로 자동으로 채워져서 처리된다 ( 아래 이미지 참조 )

사진

3. width와 height는 상속가능한 속성인가?

아니다. 기본적으로 상속 불가능하다

그러나 width와 height의 단위로 %를 사용할 경우는 상속하게 된다

예를들어 자식요소가 height에 %를 사용할 경우 부모의 height 기준으로 자식의 height를 설정하게 된다

그러므로 %를 사용하는 경우 부모 요소를 상속한다고 볼수있다.

(그래서 자식 요소에서 height에 %를 사용하고 부모 요소에 height를 설정하지 않는 경우, 자식 요소의 높이는 적용되지않는다) -> 내가 자주 헷갈리는 부분이였음



참조

https://goodteacher.tistory.com/560

https://unit-15.tistory.com/16

https://jobcoding.tistory.com/48

width에는 margin,padding,border가포함되지않는다

Nov 11, 2023 Views 325