[CSS] display 속성 (화면 배치 방법 결정) block, inline, inline-block, none
display 속성을 이용하면 블록 레벨 요소도 인라인 레벨 요소로 변경이 가능하며 반대로도 변환이 가능하다.
display 속성의 경우 여러 경우에 사용되지만 일반적으로 세로로 출력되는 목록을 가로 네비게이션 메뉴로 바꿀때 사용한다.
{ display : block; }
블록 레벨 요소는 해당 컨텐츠의 크기가 아닌 해당 컨텐츠가있는 해당 행을 모두 차지하며 다른 컨텐츠가 추가되면 줄바꿈이 발생하게 된다.
{ display : inline; }
인라인 레벨 요소는 해당 컨텐츠의 크기 만큼만 화면에서 차지한다. 그래서 추가적으로 컨텐츠가 추가되어도 같은 행에 출력될 수 있다.
예시로 보면
반대로 블록 레벨 요소에 display:inline 속성을 작성해주면 세로에서 가로 방향으로 화면에 출력된다.
대표적으로 많이 사용되는 경우가 세로 목록을 가로 목록의 네비게이션바로 변경할때이다.
하지만 이러한 display:inline 속성은 단점이 존재한다.
한 줄에 여러개의 컨텐츠를 배치할 수 있지만 너비나 높이, 마진, float 과 같은 값이 정확히 적용되지 않는다.
특히 마진값을 주더라도 좌우에는 적용되지만 위아래에는 마진값이 적용되지 않는 문제가 발생한다.
이러한 특성을 보완할 수 있는 속성이 display:inline-block 이다.
{ display : inline-block; }
display:inline-block 속성을 적용하면 블록 레벨 요소의 특성과 인라인 레벨 요소의 두 가지 특성을 모두 갖게 된다.
즉 출력은 inline 방식으로 하면서 inline 방식에서는 하지 못했던 너비나 높이, 마진, float 값을 정확히 적용할 수 있게 된다.
다만 inline-block도 고려할 점이 있다.
inline-block 사이에 공백이 생기게 되는데 이때 부모 태그에 {font-size : 0;} 을 적용하면 공백 문제를 해결할 수 있다.
inline-block 끼리 높이가 안맞을 때 vertical-align 속성을 적용하여 문제를 해결할 수 있다.
{ display : none; }
이 속성을 사용하면 해당 요소를 화면에 아예 표시하지 않는다.
visibility:hidden; 속성도 비슷한 역할을 하는데 visibility 속성은 화면에서 감추기만 할 뿐 원래 요소가 있는 공간은 그대로 차지하지만
dipslay:none; 속성은 아예 공간조차 차지하지 않는다.
댓글
댓글 쓰기