CSS

CSS3 position

이건탁 2021. 3. 20. 02:57
728x90

네모를 내가 원하는 위치로 옮기는 방법

방법1
빨간 네모를 중앙에 두는 방법  (position: absolute; 사용)

저 빨간 네모를 브라우저의 가운데에 둘려고

position: absolute;
left: 50%;
top: 50%;
를 했는데 가운데로 안온다
그 이유는 검은 네모를 브라우저라고 생각하고

화면을 나누면 저 마우스쪽에 있는 모서리가 기준이 되서
left 50% top 50% 위치로 가기 때문에
정가운데로 가지 않는다

그럼 이걸 가운데로 보내는 방법은?
지금 저 상태에서 빨간 네모의 위치를
왼쪽으로 반 위로 반 옮기면 중앙으로 간다!
지금 빨간 네모의 크기는 
10+100+10 으로 가로 세로 120이다
가로세로 크기가 120인 네모를 가운데로 옮길려면 
왼쪽으로 60 위로 60만큼 가면되는데
left, top에 50%를 이미 선언했기 때문에 -를 넣으면 안된다

그래서 margin을 사용한다
margin은 양수면 밀어내는데?
음수면 당긴다.
그래서 left, top으로 -60을 주면 네모가 가운데로 옮긴다.
 
 원하는 요소를 position:absolute; 를 사용해서 브라우저 가운데로 오려고 한다면,
이동하고자 하는 요소릐 가로, 세로 사이즈의 반의 크기만큼 margin을 활용해서 -값을 준다

 

2번째 방법

빨간박스만 위치를 옮기는 방법(position: relative 사용)

 
margin: -20px 0 0 0;을 주면
빨간 네모와 아래에 있는게 전부 올라간다

position: relative를 사용해본다.
절대좌표인 position: relative를 사용하고
빨간 네모인 div를 옮긴다
top: -20px를 줘서
빨간 박스만 위로 옮긴다.

이렇게 position: relative사용해 절대 좌표를 이용할 수 있다.

 

3번째

 
abc중 제일 높은 , 부모인 a한테
position : relative;를 주니까
a 하위에 있는 b,c의 위치들이 브라우저가 아닌 a에 기준이 되어서 움직인다
거기에 또 b에도 position : relative;를 주면
이제 c의 부모는 b가 되어서 b를 기준으로 위치하게 된다

 

위에는
a의 position : relative;
b의 position : relative;
c의 position : absolute;이고

아래에는
a의 position : relative;
b의 position : absolute;
c의 position : absolute;이다

지금은 두개의 차이는 없다. 똑같다

relative만 부모좌표의 역할을 하는게 아니라
absolute도 부모의 역할을 한다.
그냥 가장 가까이에 있는 상위의 position을 따라간다.

 

 


728x90