2014년 4월 27일 일요일

CSS position


position 으로 위치정하기

position은 요소의 위치를 정할 때 어디를 기준으로 할지 정하는 속성입니다. 속성값은 static, absolute, fixed, relative가 있으며, 기본값은 static입니다.위치를 계산할 기준을 정하고 나면 top, right, bottom, left 속성으로 위치를 정할 수 있습니다. 단, position의 속성값으로 static을 사용하면 top, right, bottom, left를 설정해도 적용되지 않습니다.간단한 예는 다음과 같습니다.

<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>CSS | position</title>
    <style>
      .container {
        width: 500px;
        height: 500px;
        margin: auto;
        border: 1px solid #da9627;
        background-color: #ffb848;
      }
      .po {
        width: 200px;
        border: 1px solid #17a668;
        background-color: #27a9e3;
        position: static;
        top: 100px;
        left: 100px;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <p>Lorem ipsum dolor.</p>
      <div class="po">
        <p>Lorem ipsum dolor.</p>
      </div>
      <p>Lorem ipsum dolor.</p>
    </div>
  </body>
</html>

파란 박스의 position을 static으로 설정했기 때문에 HTML 요소의 계층구조와 순서에 맞게 위치합니다. 그리고, top과 left 속성은 아무런 의미가 없습니다.


이제 속성값을 absolute으로 바꿔보겠습니다.
position: absolute;
문서의 꼭짓점을 기준으로 위치가 계산됩니다.

속성값을 fixed로 바꿔보겠습니다.
position: fixed;
웹브라우저의 꼭짓점을 기준으로 위치가 계산됩니다. 따라서 스크롤을 해도 위치가 변하지 않습니다.


속성값을 relative로 바꿔보겠습니다.
position: relative;
static일 때의 위치를 기준으로 위치를 계산합니다. 주의할 점은 원래의 자리가 다른 요소로 채워지지 않고 공백으로 남는다는 것입니다.


absolute이 문서의 꼭짓점을 기준으로 위치를 계산하지만, 상위 요소에 relative를 가진 요소가 있다면, 그 요소의 꼭짓점을 기준으로 계산합니다. 주황색 박스에 position: relative;를 추가하고, 파란색 박스의 위치를 정해보겠습니다.

.container {
  width: 500px;
  height: 500px;
  margin: auto;
  border: 1px solid #da9627;
  background-color: #ffb848;
  position: relative;
}
.po {
  width: 200px;
  border: 1px solid #17a668;
  background-color: #27a9e3;
  position: absolute;
  top: 100px;
  left: 100px;
}

주황색 박스를 기준으로 위치가 정해지는 것을 확인할 수 있습니다.




출처
http://www.cmsfactory.net/node/10242