프로그래밍 언어/HTML&CSS(Programming Language X)

[HTML&CSS Basic] 11. 레이아웃 배치(Position-absolute,-relative,-fixed/display -flex/float)

DigIT_JHB 2022. 12. 8. 16:31

[CSS] Position 

1. Position

→position은 요소들을 어떻게 배치할지 정하는 속성

  • static(기본값으로 요소를 나열한 순서대로 배치)
  • relative(원래 요소가 배치되는 위치를 기준으로 상대적 위치를 지정한다.)
  • absolute(특정한 상황에서 가장 가까운 부모 또는 조상 요소를 기준으로 절대적으로 위치 지정)
  • fixed(브라우저 화면을 기준으로 요소 배치)
  • sticky(설정된 위치 전까지는 static, 그 이후부터는 fixed처럼 행동하는 속성)

2. relative

position: relative; 만으로는 아무런 변화 없다.

top,left,bottom, right 값을 추가적으로 설정하게 되면

원래 그 요소가 있어야 할 자리를 기준으로 위치가 이동하게 된다.

 

Ex.)

<html><head><style>
    div{
  background-color:yellow;
  border:1px solid black;
}

#b{
  position:relative;
}
#c{
  position:relative;
  top:15px;
  left:30px;
  
}
</style></head><body><div id="a">
이것은 원래 모양
</div>
<div id="b">
이것은 relative만!
</div>
<div id="c">
이것은 div에 top 15px,left 30px
</div>


</body></html>


3. absolute

position: absolute; 는 

부모 중에 position이 relative, fixed, absolute 하나라도 있으면

그 부모에 대해 절대적으로 움직이게 된다.

따라서 absolute를 쓸 경우, 기준이 될 부모에게 position: relative; 를 부여.

 

Ex.

예제2가 부모인 예제1에 따라 위치 변경

<html><head>
<style>
    div{
  border:1px solid black;
}

#b{
position:relative;
height:50px;
}
#c{
position:absolute;
right:0;
bottom:0;
}
</style>
</head>
<body>
<div id="b">
예제 1
<div id="c">
예제 2(div지만 inline-block으로 변경)
</div>
</div>
</body>
</html>

cf. position:absolute / position:fixed를 할 경우에는 요소의 특성이 inline-block으로 변하게 된다.


 

반응형

 

4. fixed

position: fixed는 뷰포트(브라우저에서 페이지가 보이는 영역)를 기준으로 위치를 정할 때 사용

 

Ex.

네이버 사이트에 접속하면

오른쪽 아래에

1.다크모드로 보기

2.↑

스크롤을 내려도 고정되어있는 것을 알 수 있다.

특히 '다크 모드로 보기'의 CSS를 살펴보면

.btn_theme {
    position: fixed;
    right: 78px;
    bottom: 19px;
    display: inline-block;
    width: 136px;
    height: 53px;
    background-position: -270px -110px;
    background-repeat: no-repeat;
    vertical-align: top;
    cursor: pointer;
    z-index: 100;
    }

1. position:fixed;

2. rigth:78px 로 오른쪽에서 78px 떨어져있으며

3. bottom:19px 로 웹페이지 바닥에서 19px 떨어져있는 것을 알 수 있다.


5. sticky

설정된 위치 전까지는 static, 그 이후부터는 fixed처럼 행동하는 속성

 

Ex.

Apple-Macbook Pro 사이트의 예시

아래 사이트에서 위의 nav요소가

position:sticky가 적용되어있다.

 

위의 애플로고가 사라질 때 까지는 static으로 존재하다가

로고가 사라진 뒤에는 fixed처럼 행동하는 것을 알 수 있다.

(cf. sticky는 top,right,left,bottom 속성이 필수이다.)

(cf. 위의 사이트에는 top이 0으로 되어있는데 50px로 변경해보면 아래와 같다.


[CSS] display: flex

레이아웃을 배치할 때 사용하는 property로 가로 정렬할 때 사용하면 아주 유용하다.

1.부모 요소에 display flex 설정(부모가 flex container로 역할)

2.자식요소들은 flex item로 역할(가로로 정렬될 때 inline요소처럼 width를 가지게 됨)

 

추가 설정 특성

1. flex-direction(가로로 정렬, 세로로 정렬 설정)

2.flex-wrap(한줄에 정렬이 안 될 때 줄바꿈 설정)

3.flex-flow(1번과 2번 동시에 설정)

4.justify-content(기본 메인(가로)축에 대한 방향 정렬<왼쪽 정렬, 가운데 정렬,오른쪽 정렬......>)

5.align-items(메인 축에 대한 수직 축 방향 정렬<위쪽 정렬, 아래쪽 정렬, 가운데 정렬,......>)

6.align-content(flex-wrap:wrap 상태에서 줄바꿈이 되어있을 때 메인 축에 대한 수직 축 방향 정렬)

7.align-self(한 아이템에 대해 메인축에 대한 수직축 정렬)

8.order(아이템들의 배치 순서 결정)

9.z-index(z축 정렬로 숫자가 클수록 위로 올라온다.)

.

.

.

(*이런 내용들이 정말 잘 정리되어있는 사이트를 찾았다. 

https://studiomeal.com/archives/197

 

이번에야말로 CSS Flex를 익혀보자

이 튜토리얼은 “차세대 CSS 레이아웃” 시리즈의 첫번째 포스트입니다. 이번에야말로 CSS Flex를 익혀보자 이번에야말로 CSS Grid를 익혀보자 벌써부터 스크롤의 압박이 느껴지고,‘좀 편안하게 누

studiomeal.com

)


[CSS] Float 

1. float

float은 이미지 주변에 텍스트를 감싸기 위해 만들어진 property.

(레이아웃 용으로도 많이 사용된다.)

한글에서 이미지 속성의 본문과의 배치를 생각하면 쉽지 않을까 싶다.

float 속성으로

inherit-부모 요소의 float 속성 상속

left- 좌측으로 floating 시킴

right- 우측으로 floating 시킴

none- floating 시키지 않음

가운데 하나를 값으로 줄 수 있다.

 

(아래와 같이 레이아웃 정렬도 가능하다.)

<html>
<head>
<style>
*{
box-sizing:border-box;
}

	.a{ height: 300px }
	
	.b .left{
		float: left;
		width: 50px;
		height: 300px;
		border: 2px solid red;
		background-color: #ffe7d5;
	}
	.b .menu{
		float: left;
		width: 250px;
		height: 300px;
	}
	.b .menu .up{
		height: 250px;
		border: 2px solid blue;
		background-color: #e2e9ff;
	}
	.b .menu .down{
		height: 50px;
		border: 2px solid purple;
		background-color: #ffddff;
	}
</style>
</head>
<body>
	<div class="a">
		<div class="b">
			<div class="left">left</div>
			<div class="menu">
				<div class="up">up</div>
				<div class="down">down</div>
			</div>
		</div>
	</div>
</body>
</html>
left

참고 자료) float

반응형