익명의 개발노트

[CSS] position 본문

프로그래밍/html, css

[CSS] position

캡틴.JS 2019. 3. 2. 21:04
반응형

1. static : 모든 태그들의 기본. 디폴드 값이 static이라 따로 써주지 않아도 됨.


2. relative :  태그 위치 변경하고 싶을때 position : relative 사용. top, right, bottom, left 속성 사용 할 수 있음.


               각각의 방향을 기준으로 태그 안쪽방향으로 이동하기 때문에 바깥쪽으로 이동하게 하려면 -값을 줘야


 하는 특징이 있음. static 상태를 기준으로 주어진 값만 큼 움직임.

 

 top, left, right, bottom 속성이 있어야 움직임.


3. absolute : position : static 속성을 가지고 있지 않은 parents를 기준으로 움직인다. 


       부모 포지션이 relative, absolute, fixed인 태그가 없다면 가장 위의 태그(body)가 기준이 된다.


  absolute가 되면 div여도 더는 width가 100%가 아니다.


※ 3번은 부모 중에 position: relative;를 갖고 있는 요소에 의해 절대적인 위치를 갖게 된다. 


4. fixed : 위치를 아예 고정시켜버림. 스크롤로 해도 고정됨. absolute와 마찬가지로 더이상 div의 width 100%가 


아님.


예시)



박스 두개를 감싸는 div와 감싸져있는 박스 one, two를 만들어보고 포지션을 적용해보자.




노란색 박스는 one, 파란박스는 two 겉에 테두리는 두 박스를 감싸고 있는 div이다.


위의 설명대로 파란색에 absolute를 줘서 위치 이동을 저렇게 하고자 하려면??


감싸고 있는 부모에 포지션 relative를 주면 된다.


그리고 원하는 만큼. top, left, bottom, right를 이용해서 이동~!


노란상자는 fixed를 해놓았다. 이건 부모와 상관없음.


겉에 감싸고 있는 div를 옮기고 싶으면??


이미 포지션 relative를 적용시켜놨으니, 파란색 상자와 같이 top, left, bottom, right 를 이용해서 이동시키면 


된다.


만약에 감싸고 있는 div에 포지션값이 없이   top, left, bottom, right  만 속성으로 준다면, 아무런 변화가 없을 


것이다.


*하면서 느낀점 

  태그별로 border : 1px solid red 등 으로 각각 위 그림처럼 테두리나 배경화면 표시 후 움직이는거 보면

  작업하기 수월하다. absolute는 내가 어떤 것을 움직일까 고민하고, 움직이고자 하는 물체에 부여하고,

  그 물체는 어디에 감싸여있는지 부모태그를 확인해서 position : relative 값을 주면, 이해하기 쉬울 것 같다.



* 포지션 값은 같은 레벨의 태그에게 우선 적용된다.

   같은 레벨의 박스 3개가 있다고 보자

<div id="one">

 

</div>


<div id="two">


 </div>


 <div id="three">

  

 </div>


#one {

  border : 1px solid red;

  width : 500px;

  height : 500px;

  background-color : yellow;

  position : absolute;

  left : 100px;

}


#two {

  border : 1px solid red;

  width : 300px;

  height : 300px;

  background-color : green;

  position : absolute;

  left : 500px;

}


#three {

  border : 1px solid red;

  width : 100px;

  height : 100px;

  background-color : blue;

  position : relative;

  left : 400px;

}


상자안의 포지션값을 보면 알 수가 있다.

relative는 가장가까운 곳의 relative에게 반응한다.


1번 상자가 relative, 2번상자가 absolute, 3상자가 relative면

1번상자 밑으로 2번상자, 3번상자가 붙어있을 것 이다.  2번이 앱솔루트이기 때문에 3번상자는 1번상자 밑으로 기준을 잡고 이동한다.


1번 상자가 absolute, 2번상자가 absolute, 3상자가 relative면

2번 3번상자는 브라우져를 기준으로 위치를 잡는다.


3개다 릴레티브이면 1번밑에 2번, 2번밑에 3번상자가 온다.

반응형

'프로그래밍 > html, css' 카테고리의 다른 글

[CSS] font-family, indent, box-sizing  (0) 2019.06.03
[CSS] z-index  (0) 2019.03.02
[CSS] 정렬방법  (0) 2019.03.02
[CSS] 레이아웃 & Box Model  (0) 2019.03.02
[HTML] Tag의 종류  (0) 2019.02.28
Comments