본문 바로가기

명쾌한 개념 정리 div display : inline block float

반응형
1. display
 
block Element 를 정렬할때 display: inline; 이나 float를 사용한다고 알고계시는 퍼블리셔들이 몇명이있다.
 
하지만 display경우에는 말그대로 디스플레이될 상태를 설정하는것이다.
 
즉 !  inline 레벨로 할것이냐 block레벨로 할것이냐 아니면 숨길것이냐를 설정하는것이다.
 
예전에 어딘가에서 display: inline; 과 float:left;를 같은 용도로 정렬로 사용하는데 차이점을 묻는 글을 본적이 있다.
 
block을 inline으로 하면 자연스럽게 인라인의 특징인 left정렬이 되는것이 당연하다.
 
예를 들어 spaninline요소이다 이녀석을 <span>aaa</span><span>aaa</span> 당연히 left정렬이 된다.
 
하지만 block요소들은 float로 설정하지않은이상은 떨어져서 한줄씩나온다.
 
고로 결론은
 
block의 정렬은 float  ! ! !
inline의 요소의 정렬은 text-align인것이다.
 
 
ps. block의 중앙정렬은 정 렬을 원하는 block요소에서 margin: 0 auto;를 해주면 중앙 정렬이 된다
단  block의 특성상(IE) width값을 줘야중앙정렬이 된다.
 (DTD설정은 당연 해줘야함)
 
 
2. float
 
float는 위에서 언급한 바와 같이 object 즉 block의 정렬을 담당하고있는 녀석이다.
 
float Attribute
-none Default. Object displays where it appears in the text.
-left Text flows to the right of the object.
-right Text flows to the left of the object.
 
위의 Attribute 를 보다싶이 총 3가지의 정렬이 존재 한다.
 
float자석과도 같다 서 로서로 왼쪽으로 붙을지 오른쪽으로 붙을지 결정만해주면
 
float해준 다음 Element 녀석들은 무조껀 그 효과로 인해서 붙어버린다.
 
이것을 미연에 방지하기위에서 clear을 해주는것이다.
 
다음은 clear에 관한 Attribute 이다.
 
clear Attribute
-none Default. Floating objects are allowed on both sides.
-left Object is moved below any floating object on the left side.
-right Object is moved below any floating object on the right side.
-both Object is moved below any floating object.
 
clear은 혼자 사용할때는 아무 효과가 없다 이녀석의 목적은 float된 녀석들을 초기화 시켜버리는 기능을 한다 .
 
 
clear:left; : 왼쪽으로 붙은 녀석들만 원래대로 떨어져 ! !
clear:right; : 오른쪽으로 붙은 녀석들만 원래대로 떨어져! !
clear:both; 다 떨어져 !
 
ps.떨어져는 원래의 속성으로 돌아가란말이다 ㅡ_ㅜ 즉 block요소의 고유의 정렬인 한줄씩정렬
 
float:right;float: left;를 같이 사용했는데
clear:left;를 해버리면 float:right;는 살아 있어서 후에 올 Element의 한놈은 오른쪽으로 붙어 버린다
잘생각해서 clear를 사용하자
 
그리고 하위 Element가 없어도 종료시점에는 가능하면 clear을 해주자 나중에 include로 불러들이거나 업데이트할때 또 오류가 발생할수있는걸 미연에 방지하기위해서이다.
 
 
=====================================================================================================================
=====================================================================================================================
 

* display 속성
대부분의 마크업 요소는 기본적으로 display 속성을 갖습니다. 기본값은 태그마다 다르며 보통 block 또는 inline 의 기본값을 지니고 있습니다.

block 요소로는 div, p, form 등의 요소가 있고

inline 요소로는 span, img 등의 요소가 있습니다.

 

 block 은 한 줄에 하나의 요소만 존재하고 주변 요소들은 모두 줄바꿈 시켜버리는 속성을 지니고 있으며 inline 요소는 한 줄에 여러개의 inline 요소들이 줄바꿈되지 않고도 존재할 수 있습니다. block 요소와는 다르게 inline 요소는 margin, padding, width, height, offset(left, top, right, bottom) 값을 지정할 수 없습니다. 따라서 자유로운 위치 값과 영역 값을 가지려면 display:block 상태로 존재해야 합니다.

* display 값
display 의 값으로는 다음과 같은 것들이 올 수 있는데 IE 에서 지원하지 않는 것들은 (*) 표기 하였습니다.
none
inline
block
list-item
run-in(*)
compact(*)
marker(*)
table(*)
inline-table(*)
table-row-group(*)
table-header-group
table-footer-group
table-row(*)
table-column-group(*)
table-column(*)
table-cell(*)
table-caption(*)

* position 값
posision 속성은 다음과 같은 값을 가질 수 있고 아무것도 지정하지 않은 경우의 기본값은 static 입니다. IE에서 지원하지 않는 속성에 대하여 (*) 표시 하였습니다.
static
relative
absolute
fixed(*)

- static 은 자신의 위치값을 스스로 결정하지 못합니다. 주변 요소에 의하여 밀리면서 자기 자신의 위치를 잡습니다.
- relative 는 static 과 absolute 의 속성을 반반씩 취하고 있습니다. 주변 요소에 의하여 자신의 위치값이 결정 되지만 offset(left, right, top, bottom) 속성과 함께 사용되면 스스로도 자신의 위치값을 결정할 수 있습니다.
- absolute 는 우리가 흔히 레이어라고 부르는 녀석이 갖는 값으로서 다른 요소의 방해를 받지 않고 자기 자신의 위치를 스스로 결정 합니다. 오직 offset(left, right, top, bottom) 값에 의하여 자신의 위치값이 결정되기 때문에 다른 요소들과 겹쳐 보일 수도 있습니다. 하지만 이 녀석도 offset 값의 기준이 offset 값을 가지고 있는 부모로 부터 시작되기 때문에 offset 속성이 포함된 부모요소의 위치가 변경될 때 함께 따라서 움직 입니다. 완전히 절대적이지는 않다는 이야기죠. 완전히 절대적인 위치값을 가지고 다른 요소의 움직임에 영향을 받지 않으려면 부모태그가 body 이어야만 합니다

반응형