본문 바로가기

Programming/HTML5 & CSS3

[CSS] 배치 형태 - position

웹 문서를 만들 때 각 요소들을 원하는 위치에 배치하고자 하는 경우 position 속성을 사용하면 됩니다. position 속성의 값은 static, absolute, relative, fixed 총 4가지가 있습니다. 

 

position 속성 값 설명
static 기본값. 위->아래, 좌->우 순으로 배치.
relative 요소의 원래 static 위치를 기준으로 상대적으로 배치.
absolute 가장 가까운 relative를 기준으로 상대적으로 배치.
fixed 고정된 위치.

 

(실습1) static


static은 position의 값을 따로 지정하지 않았을 때 기본으로 지정되어 있는 기본값입니다. static은 위에서 아래로, 왼쪽에서 오른쪽으로 요소들을 배치합니다. 

 

<head>
    <style>
        div{
            width:30px;
            height:30px;
            text-align:center;
            color:white;
        }
        .one{
            background-color : red;
            position : static;
            /*float:left;*/
            /*float:right;*/
        }
        .two{
            background-color : blue;
            position : static;
            /*float:left;*/
            /*float:right;*/
        }
        .three{
            background-color : blueviolet;
            position : static;
            /*float:left;*/
            /*float:right;*/
        }
    </style>
</head>
<body>
    <div class="one">A</div>
    <div class="two">B</div>
    <div class="three">C</div>
</body>

 

아래의 사진은 위의 코드를 실행한 결과입니다. 위쪽 -> 아래쪽으로 배치된 것을 확인하실 수 있습니다. 

 

여기서 한가지 의문이 생길 수도 있습니다. 이전에 static 값은 위쪽 -> 아래쪽으로 배치하는 것 뿐만 아니라 왼쪽 -> 오른쪽으로도 배치한다고 언급했는데 오른쪽에 빈공간이 있음에도 줄바꿈이 되어 있습니다. 이는 div가 블록 레벨의 성질을 지니기 때문입니다. 따라서, 줄바꿈을 방지하려면 추가로 코드를 작성해주어야합니다. 이는 ' float : left; '라는 코드를 한 줄 추가해주면 해결됩니다.

 

float : left;

 

만약, 왼쪽부터 배열하는 것이 아닌 오른쪽부터 배열하고 싶다면 ' float : right; '라는 코드를 한 줄 추가하시면 됩니다.

 

float : right;

 

 

(실습2) relative


relative는 요소의 원래 static 위치를 기준으로 요소들을 상대적으로 배치합니다. 원래 자신이 있어야하는 위치에서 설정한 값만큼 이동한 위치에 요소를 배치하는 것입니다. 예를 들어, position : relative; 이고 left:10px;이라면 원래 자신이 있어야하는 위치에서 왼쪽으로 10px만큼 떨어진 곳에 요소를 배치합니다.

 

<head>
    <style>
        div{
            width:30px;
            height:30px;
            text-align:center;
            color:white;
        }
        .one{
            background-color : red;
            position : relative;
            left :10px;
        }
        .two{
            background-color : blue;
            position : relative;
        }
        .three{
            background-color : blueviolet;
            position : relative;
            left : 5px;
            top : -10px;
        }
    </style>
</head>
<body>
    <div class="one">A</div>
    <div class="two">B</div>
    <div class="three">C</div>
</body>

 

relative

 

(실습3) absolute


absolute는 가장 가까운 relative를 기준으로 상대적으로 요소들을 배치합니다. position이 relative인 요소가 없다면 웹브라우저 화면의 가장 왼쪽 위 모서리를 기준으로 요소들을 배치합니다.

 

<head>
    <style>
        div{
            width:30px;
            height:30px;
            text-align:center;
            color:white;
        }
        .one{
            background-color : red;
            position : absolute;
            left : 80px;
        }
        .two{
            background-color : blue;
            position : absolute;
        }
        .three{
            background-color : blueviolet;
            position : absolute;
            top : 80px;
        }
    </style>
</head>
<body>
    <div class="one">A</div>
    <div class="two">B</div>
    <div class="three">C</div>
</body>

 

위의 코드를 실행한 결과를 보면 absolute가 기준으로 삼을만한 부모 요소가 없기 때문에 웹 브라우저 화면의 가장 왼쪽 위 모서리를 기준으로 요소들을 배치했음을 알 수 있습니다. B의 경우 absolute값 외에 지정된 좌표값이 없기 때문에 화면의 가장 왼쪽 위 모서리에 배치됩니다. A의 경우 left : 80px로 위치값이 지정되어 있기 때문에 화면의 가장 왼쪽 위 모서리를 기준으로 왼쪽으로 80px이 떨어진 곳에 배치됩니다. C의 경우 top : 80px로 위치값이 지정되어 있기 때문에 화면의 가장 왼쪽 위 모서리를 기준으로 위쪽에서 80px이 떨어진 곳에 배치됩니다.

 

absolute

 

(실습4) fixed


fixed는 요소에 좌표값을 주면 그 요소의 위치는 고정되며 변하지 않습니다. 위치의 기준은 body(보통 웹 브라우저 화면의 가장 왼쪽 위 모서리)입니다.

 

<head>
    <style>
        div{
            width:30px;
            height:30px;
            text-align:center;
            color:white;
        }
        .one{
            background-color : red;
            position : fixed;
            left :80px;
            top : 80px;
        }
        .two{
            background-color : blue;
            position : fixed;
            left : 80px;
        }
        .three{
            background-color : blueviolet;
            position : fixed;
            top : 80px;
        }
    </style>
</head>
<body>
    <div class="one">A</div>
    <div class="two">B</div>
    <div class="three">C</div>
</body>

 

위의 코드를 실행한 결과를 보면 A의 경우 left : 80px; top : 80px; 로 지정되어 있기 때문에 웹브라우저 화면의 가장 왼쪽 위 모서리에서 왼쪽과 위쪽으로부터 80px 떨어진 곳에 배치됨을 확인할 수 있습니다. B의 경우 left : 80px;, C의 경우 top : 80px; 임으로 각각 웹브라우저 화면의 가장 왼쪽 위 모서리에서부터 왼쪽으로 80px 위쪽응로부터 80px 떨어진 곳에 배치됨을 확인하실 수 있습니다.

 

fixed

'Programming > HTML5 & CSS3' 카테고리의 다른 글

[CSS] Grid 사용하는 법  (0) 2021.02.05
[CSS] 미디어쿼리 사용하는 법  (0) 2021.02.04
[CSS] 배치 형태 - display  (0) 2021.01.30
[CSS] 다단 만드는 법  (0) 2021.01.29
[CSS] 글자 스타일  (0) 2021.01.28