display
inline, block, inline-block
inline
은 요소의 내부 콘텐츠 크기만큼만 영역을 차지해서, width
와 height
의 값을 임의로 지정할 수 없습니다. 요소가 여러개면 가로로 배치 됩니다.
block
은 요소의 내부 콘텐츠와 상관없이 가로는 세로로 배치되어 가로 한 줄을 모두 사용합니다.
inline-block
은 가로로 배치되고 콘텐츠 영역만큼만 차지하지만, width
와 height
값을 지정할 수 있습니다.
display: none
vs visibility: hidden
display: none
(위)은 브라우저 화면에서 요소 자체가 사라지고, visibility: hidden
(아래)은 브라우저 화면에 보이지는 않지만 원래 요소가 차지하는 공간만큼 영역을 차지합니다.
position
static
- 기본값으로
normal flow
에 따라 인라인 요소는 인라인의 영향을, 블록 요소는 블록의 영향을 받습니다.
relative
normal flow
에 따르지만, top, bottom, left, right
속성을 이용하여 원래 본인의 요소를 기준으로 해당 요소를 이동할 수 있습니다. top
과 bottom
처럼 상반되는 요소가 같이 사용된다면, top
과 left
가 우선시됩니다.
absolute
- 요소를
normal flow
에서 제거하고, 해당 요소는 별도의 공간을 차지않고 다른 요소의 위에 겹쳐집니다. 부모 요소를 타고 올라가면서 position이 static
이 아닌 요소 중 가장 가까운 요소를 기준으로 하여, top, bottom, left ,top
을 이용하여 상대적으로 배치할 수 있습니다. 조상 요소 중에 static
이 아닌 요소가 없다면, 최상위 요소(body
)를 기준으로 합니다.
- 일반적으로
absolute
를 사용하는 경우에는 부모 요소에 relative
속성을 주고 사용합니다.
fixed
- 요소를
normal flow
에서 제거하고, absolute
와 달리 뷰포트를 기준으로 하여 위치를 지정합니다. 뷰포트를 기준으로 하기 때문에, 뷰포트가 변하지 않는다면 위치가 고정됩니다.
sticky
- 요소를
normal flow
에 맞게 배치하고, 스크롤이 되는 대상의 자식 요소에 값을 지정했을 때만 동작합니다. top, bottom, left, right
의 값에 따라 해당 위치에 다다랐을 때, fixed
처럼 요소가 고정됩니다.
overflow
visible
은 기본 값으로 콘텐츠가 요소의 영역을 벗어나더라도, 요소의 영역이 아닌 부분까지 콘텐츠가 보이게 됩니다. 해당 요소의 영역이 아닌 부분은 브라우저 화면에서 공간을 차지하지 않으므로, 다른 요소와 겹치게 됩니다.
hidden
은 콘텐츠가 해당 요소의 영역을 벗어난 부분은 잘라서 보이지 않게 합니다.
scroll
은 해당 요소에 스크롤
을 생성해서, 해당 요소의 영역은 유지한 채로 모든 콘텐츠를 확인할 수 있습니다.
auto
는 콘텐츠의 양에 따라, 콘텐츠가 요소의 영역 이상을 차지한다면 자동으로 스크롤
을 생성합니다.
z-index
z축
은 x축(가로), y축(세로)
이 아닌 입체적인 개념입니다.
- 기본값은
auto
이고, 정수를 값으로 사용할 수 있습니다. 값이 높을수록 상위에 존재하게 됩니다.
z-index
속성이 아니더라도, static
이 아닌 다른 display
속성을 사용하면 z-index
가 우위에 있는 효과를 나타낼 수 있습니다.