display 프로퍼티
display 프로퍼티는 HTML 요소들을 레이아웃 하는데 자주 사용된다.
- display: block; –> block 특성을 가지는 요소로 지정
- display: inline; –> inline 특성을 가지는 요소로 지정
- display: inline-block; –> inline-block 특성을 가지는 요소로 지정
- display: none; –> 요소를 화면에 표시하지 않음(공간도 제거)
각 HTML 요소들은 block 또는 inline의 특성을 가지고 있다.
요소의 종류
block 요소
[1] block 요소 특징
- 새로운 라인에서 시작
- width, height, margin, padding 프로퍼티 지정이 가능
- block 요소내에 inline 레벨 요소를 포함 가능
- 화면 크기 전체의 가로폭을 차지(width: 100%)
[2] block 요소 종류
- div
- ul
- li
- p
- h1~h6
- table
- form
- hr
- ol
inline 요소
[1] inline 요소 특징
- 줄을 바꾸지 않고 다른 요소와 함께 한 행에 위치
- width, height, margin, padding 프로퍼티 지정이 ‘불’가능
- inline 요소내에 block 레벨 요소를 포함 ‘불’가능(inline 요소는 일반적으로 block 요소내에 포함되어 사용)
- content의 너비만큼 가로폭을 차지
- 상, 하 여백은 line-height로 지정
- inline 요소 뒤에 공백(엔터, 스페이스 등)이 있는 경우, 정의하지 않은 space(4px)가 자동 지정
[2] inline 요소 종류
- span
- a
- img
- strong
- br
- input
- select
- button
- textarea
inline-block 요소
[1] inline-block 요소 특징(block과 inline 요소의 특징을 모두 갖음)
- inline 요소와 같이 줄을 바꾸지 않고 다른 요소와 함께 한 행에 위치시킬 수 있음
- block 요소와 같이 width, height, margin, padding 프로퍼티 지정이 가능
- content의 너비만큼 가로폭을 차지
- 상, 하 여백을 margin과 line-height 두가지 프로퍼티 모두를 통해 제어 가능
- inline-block 요소 뒤에 공백(엔터, 스페이스 등)이 있는 경우, 정의하지 않은 space(4px)가 자동 지정
display v. visibility
visibility 프로퍼티는 요소를 보이게/안보이게 할 것인지를 정의한다. 즉, 요소의 렌더링 여부를 결정한다.
- display: visible; –> 해당 요소를 보이게 함 (default)
- display: hidden; –> 해당 요소를 보이지 않게 함
- display: collapse; –> table 요소에 사용하며 행이나 열을 보이지 않게 함
- display: none; –> table 요소의 row나 column을 보이지 않게 함.(IE, 파이어폭스에서만 동작하며 크롬에서는 hidden과 동일하게 동작)
display:none; 과 visibility:hidden 의 차이
- display: none;은 해당 요소의 공간까지 사라진다.
- visibility: hidden;은 해당 요소의 공간은 사라지지 않고 남아있게 된다.
display 활용 방법
로고와 navigation을 포함한 Header를 다음과 같이 만들어보자.(React)
현재상태는 다음과 같다.
1 | // css |
[1] Navagation을 우측 상단으로 정렬한다.
1 | nav { |
[2] logo 이미지를 수직으로 중앙 정렬을 한다.
- logo 이미지를 포함하는 “a” 태그의 height를 img 태그(logo 이미지)와 동일한 height인 36px로 지정한다.
- header의 height인 60px과 맞추기 위해, 상/하 여백으로 맞추는데, margin을 사용한다.
- 이때, a 태그는 inline 요소이기 때문에, margin을 적용하기 위해서는 “display: inline-block;”을 설정해야 한다.
1 | .logo { |
[3] Navigation의 각 요소들을 수평정렬한다.
- 각 Navigation의 요소들은 “li”로 block 요소이기 때문에, “display:inline-block;”로 설정해야한다.
1 | .nav-items > li { |
[4] 각 Navigation 요소들을 Header와 맞추기 위해 수직으로 중앙 정렬한다.
- 각 Navigation의 텍스트의 높이를 Header의 height 동일하게 하기 위해 “line-height: 60px;”를 설정한다.
1 | .nav-items > li > a { |
[5] 각 Navigation의 텍스트에 Mouse를 갖다대면 색상이 변하게 한다.
- 가상 셀렉터인 “:hover”를 이용한다.
1 | .nav-items > li > a:hover { |