Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원/6월

22. 06. 15 - [ CSS 스타일 ] 레이아웃 관련 스타일 - display , position , z-index , visibility , float , clear

giggs 2022. 6. 16. 21:19

 

 

 


 

 

기본 개념 체크

 

 

 


 

 

블록 요소

  • 한 줄로 영역을 차지하는 요소
  • 줄 바꿈 발생
  • 높이, 너비 지정 가능
  • div, p, pre, h1~h6

 

 

인라인 요소

  • content 부부만 영역을 차지하는 요소
  • 옆으로 배치
  • 높이, 너비 지정 불가능
  • span, label, input, img, 글자 관련

 

 

요소 영역

  • content + padding + border + margin

 

 

 

 

 


 

 

 

 

 

 

 

1. 레이아웃 스타일

display : [ inline, inline-block , block  ]

 

 

 


 

 

기본 세팅

 

#1 - 클래스로 공통 스타일 적용 -  .display-test

 

 


 

 

#2 - 색상 주는 클래스 스타일 미리 만들어 놓고 사용하기

 

 

 

 


 

 

 

1. display : inline; - 인라인 요소 특징 적용

  • 블록 요소의 특징 없어지고 인라인 요소의 특징 적용
  •  display: inline; 을 하게 되면, width height 속성은 적용되지 않음
  • inline으로 변경했더니 우리가 지정했던 가로/세로 크기 지정한 것이 적용 안 되는구나.

 

 

 


 

 

2. display : inline-block; - 인라인 요소와 블록 요소 특징 적용

  • inline요소처럼 – 옆으로 배치되고
  • block요소처럼 – 가로세로 크기 지정 가능하게 된다.

 

 

 


 

 

 

+@ div 사이 조금의 공간 있다.. 이 공간을 없애는 방법은?

 

 

 

#2-1.  < div 태그 > 쭉 연결해서 써준다. ( 엔터키 없애준다.)

  • inline-block 애는 엔터키 1개 이상 있으면 조금 띄어주는구나.

 

 


 

#2-2.  font-size: 0px; 스타일 적용

  • <div>들 사이에 엔터키 있어도 결과는 붙여짐
  • 새로운 div로 전체 감싸주고 – class준 다음 - 스타일 지정 
  • 태그를 쭉 이어 써야 하는 1번 방법에 비해 가독성면에서 더 좋아진다.

 

 

 


 

 

3. display : block; - 블록 요소 특징 적용

  • span 태그를 - block 요소로 바꾸기
  • inline 요소는 너비 / 높이 반영 안 됨. 테두리만 적용됨
  • display:block; 해주면 우리가 적용해주었던 너비 / 높이 적용됨!

 

 

 

 

 

  • span 태그는 원래 inline 스타일인데 display: block; 형식으로 변경해주니
  • 너비와 높이 지정해놓았던 거 적용됨을 확인

 

 

display [ inline , inline-block , block ] 끝

 

 

 

 

 


 

 

 

 

 

 

2. 레이아웃 스타일

position : [ relative ,  absolute , fixed ]

 

 

 

 


 

 

 

 

기본 세팅 

  • < div class="outer" > 안에 3개의 div 만들어 놓은 상태
  • #outer 안에 <div> 들을 아래의 모양처럼 위치 조정해보자.

 

 


 

 

# 크기 다르게 만들기

 

 

 

 

 

 


 

 

 

 

위치 지정해보기

 

 

 

 

1. position : relative; // positon : absolute; 

 

 

1-1 부모 태그에 position : realtive; 적용

 

 


 

 

1-2 자식 태그들에 positon : absolute; 적용

 

  1. position: absolute; 해주면 – 부모 태그를 기준으로 자리 잡는다.
  2. 그냥 부모 태그가 아니라, 조상 태그 중에서 static이 아닌 애를 기준으로 잡는다.
  3. static 아닌 부모 태그를 찾기위해 하나씩 올라가다가 position= relatve || absolute || fixed ;되어있는 부모 태그 중 첫 번째 만나는 부모태그를 기준으로 잡는다.
  4. positon: static;이 아닌 가장 가까운 조상을 기준으로 잡는다. 근데 아무도 없다면? - body태그 기준으로 위치 잡는다.
  5. 우리 예제에서는 부모 태그인 < div class="outer" >의 { position = "relative"; }
  6. 자식 <div 태그>들의  { positon = absolute } 이때 기준점은?   { position = "relative"; }인 .outer 가 잡힌다.

 


 

 

# positon 과 top left 로 위치 조정 ( 기준점은 .outer )

 

 


 

 

# positon 과 top left 로 위치조정 ( 기준점은 .outer )

 

빨간색까지 처리

 

 


 

 

2. position : fixed;  - 요소가 태어난 위치에 고정

  • 고정위치
  • 스크롤 움직여도 위치가 고정되어서 보인다!

 

 

 

 

  • # 태어난 위치 / 처음에 만들어진 위치에 고정된다
  • 흐름에 따라서 만들어진 위치에 고정된다.
  • 태어난 위치가 너무 밑이라서 안 보이면 top = 100px; 같은 조건 걸어주면 보인다.

 

 

 

 

position : relative || absolute || fixed;  끝

 

 

 

 

 

 


 

 

 

 

3. 레이아웃 스타일

[ z-index , visibility , float , clear , 가상요소 ]

 

 

 

 


 

 

 

 

1. z-index

  • 요소들을 index 값에 따라 쌓는 속성
  • z-index 값이 높은 순서대로 먼저 보인다.
  • 값이 같으면 문서의 흐름에 따라서 나중에 적용된 것이 먼저 보임

 

 

 

  • z-index 값 지정 전에는
  • 문서 흐름에 따라 가장 나중에 적용한 빨간색 3번째 요소가 제일 앞에 보였는데
  • z-index 값 지정 후에는 
  • z-index 값에 따라 가장 높은 z1> z2> z3 순으로 보인다.

 


 

 

# 주로 id = "header" 해서 많이 사용

 

 

 

 


 

 

 

 

2. visibility

  • 특정 요소를 보이거나 안 보이게 하는 스타일 속성
  • 2번 영역 - display : none; 해보기

 

 

 


 

 

  • 2번영역 - visibility : hidden; 해보기

 

 

  • 안 보이는 건 똑같은데 – 공간은 차지하도록 만들어주는구나~

 

 

 

 


 

 

3. float

  • 페이지 내의 요소들을 화면으로부터 띄워서 ( 스티커를 떼서 새로 붙이는 느낌 )
  • 왼쪽 또는 오른쪽으로 배치하는 속성

 

 

 

  • 3-1. float : left; ------번호 체크 : 1 2 3 4 5

 

 


 

 

  • 3-2. float : right; ------ 번호 체크 : 5 4 3 2 1

 

 

 

 

 

  • #+@ - float이랑 앱솔 같이 주면 – 앱솔 적용된다.
  • #+@ - float실제 사용 사례는 – list 정렬할 때 사용한다.

 

 


 

 

  • 3-3 . float 한 뒤에 < div태그 > 추가해보자

 

 

 

 

 

  • 이런 효과 주려고 만든 것이 float ! (이후에 이미지뿐 아니라 다른 요소들도 사용 가능하게 됨)

 

하지만 원치 않는다면?? 해결방법은?

 

 

 


 

4. clear

  • clear = left / right / both
  • float 속성 적용되어있는 거 없애준다.

 

 

 

 

 


 

 

5. 가상의 요소로 float 속성 없애주기

 

  • body 태그 안건들이고 요소 하나 추가하기
  • CSS를 이용하여 가상의 요소를 하나 만들었다.
  • #t2::after 
  • id="t2"; 인 div태그 안에 ::after로 가상의 요소 만들어서 스타일 적용

 

예전버전에서는 : 하나만 써도 되고, ///// :: 요즘은 2개 사용한다.

 


 

 

 

 

## 가상 요소 활용법은?

  • clear 해주려고 br 태그 만들어서 활용했는데
  • 필요 없는 br태그를 안 쓰고 싶다. 
  • 가상의 요소를 만들고 가상의 요소에게 clear : both; 처리해주고 싶다.
  • 이런 경우에 사용!

 

 

 

 

 

 

 


 

 

 

 



review


오늘 배운 레이아웃 관련 스타일들은
이해하기 좀 힘들었고
실제 어떻게 활용하는지 실습을 해봐야지
완벽히 이해할 수 있을 것 같다.

레이아웃 짜는 방법도 배우고
강사님과 같이 연습해보고
주말에 과제를 진행하며 사용해보아야겠다.

display나 position 설명해 주실 때
화면을 3차원적으로 생각해야한다고 하시며
그림이랑 예시를 들어서 설명해주셨는데
그 부분은 따로 정리해놓을 예정

어떤 사이트를 만들어 볼 것인지
어떤 레이아웃을 구성할지 정도는
미리 생각해놓기!