코딩ㆍ개발 정보/HTML 연습

[CSS] position 속성 예제

RioRex 2024. 7. 25.
position을 사용하는 방법에 대해서 예를 들어 설명해줘

 

CSS에서 position 속성은 요소의 위치를 제어하는 데 사용됩니다. 이 속성에는 여러 값이 있으며, 각 값에 따라 요소의 배치 방식이 달라집니다. 아래는 각 position 값에 대한 설명과 예제입니다.

 

1. static

기본값입니다. 요소는 문서의 정상적인 흐름에 따라 배치됩니다.
특별한 위치 지정이 필요 없는 경우에 사용됩니다.

<style>
  .static-box {
    position: static;
    background-color: lightblue;
  }
</style>
<div class="static-box">This is a static box.</div>

 

2. relative:
    요소는 문서의 정상적인 흐름에 따라 배치되지만, top, right, bottom, left 속성을 사용하여 자신의 원래 위치를 기준으로 이동할 수 있습니다.

<style>
  .relative-box {
    position: relative;
    top: 10px; /* 요소를 위에서 아래로 10px 이동 */
    left: 20px; /* 요소를 왼쪽에서 오른쪽으로 20px 이동 */
    background-color: lightgreen;
  }
</style>
<div class="relative-box">This is a relative box.</div>

 

3. absolute:
    요소는 문서의 정상적인 흐름에서 제거되고, 가장 가까운 조상 요소 중 relative, absolute 또는 fixed 속성을 가진 요소를 기준으로 배치됩니다. 그렇지 않은 경우 initial containing block (즉, 브라우저 창)을 기준으로 배치됩니다.

<style>
  .absolute-container {
    position: relative; /* 기준이 되는 조상 요소 */
    height: 200px;
    background-color: lightgray;
  }
  .absolute-box {
    position: absolute;
    top: 50px; /* 컨테이너의 위쪽에서 50px 떨어진 위치 */
    left: 50px; /* 컨테이너의 왼쪽에서 50px 떨어진 위치 */
    background-color: lightcoral;
  }
</style>
<div class="absolute-container">
  <div class="absolute-box">This is an absolute box.</div>
</div>

 

4. fixed:
    요소는 문서의 정상적인 흐름에서 제거되고, 브라우저 창을 기준으로 배치됩니다. 따라서 페이지를 스크롤해도 요소는 항상 같은 위치에 고정되어 있습니다.

<style>
  .fixed-box {
    position: fixed;
    top: 0;
    right: 0;
    width: 200px;
    background-color: lightpink;
  }
</style>
<div class="fixed-box">This is a fixed box.</div>

 

5. sticky:
    요소는 스크롤 위치에 따라 relative와 fixed 사이에서 전환됩니다. 요소가 지정된 임계값에 도달할 때까지는 relative처럼 동작하다가, 한 번 임계값을 넘으면 fixed처럼 동작합니다.

<style>
  .sticky-box {
    position: sticky;
    top: 10px; /* 스크롤이 10px 이상 되면 요소가 고정됨 */
    background-color: lightyellow;
  }
</style>
<div class="sticky-box">This is a sticky box.</div>

 

이 예제들을 통해 position 속성을 사용하는 방법을 이해할 수 있습니다. 각 속성은 특정한 상황에 적합하며, 필요에 따라 적절하게 사용해야 합니다.


safari 또는 firefox에도 모두 동작할 수 있어?

 

위에서 설명한 position 속성 값들은 대부분의 최신 웹 브라우저, 즉 Safari와 Firefox를 포함한 주요 브라우저에서 잘 동작합니다. 그러나 position: sticky의 경우 과거 일부 브라우저에서 지원 문제가 있었습니다. 최신 버전의 Safari와 Firefox에서는 position: sticky가 잘 지원되지만, 이전 버전에서는 제대로 동작하지 않을 수 있습니다.

따라서, position: sticky를 사용할 때 브라우저 호환성을 고려해야 합니다. 이를 확인하기 위해 브라우저의 호환성 정보를 참조하거나, 필요 시 폴리필(polyfill) 또는 대체 방법을 사용할 수 있습니다.

브라우저 호환성 확인

  1. Can I use: Can I use position: sticky에서 특정 CSS 속성의 브라우저 지원 정보를 확인할 수 있습니다.
  2. MDN Web Docs: MDN Web Docs position에서 각 속성의 호환성 정보를 확인할 수 있습니다.

브라우저 지원 코드 예시

아래는 position: sticky가 제대로 지원되지 않는 경우를 대비한 대체 코드 예시입니다.

<style>
  .sticky-box {
    position: -webkit-sticky; /* Safari */
    position: sticky;
    top: 10px;
    background-color: lightyellow;
  }
</style>
<div class="sticky-box">This is a sticky box.</div>

 

호환성 테스트

CSS 속성이 제대로 동작하는지 확인하기 위해 실제로 Safari와 Firefox에서 테스트하는 것이 좋습니다. HTML 파일을 만들고 브라우저에서 열어보세요.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    .static-box {
      position: static;
      background-color: lightblue;
    }
    .relative-box {
      position: relative;
      top: 10px;
      left: 20px;
      background-color: lightgreen;
    }
    .absolute-container {
      position: relative;
      height: 200px;
      background-color: lightgray;
    }
    .absolute-box {
      position: absolute;
      top: 50px;
      left: 50px;
      background-color: lightcoral;
    }
    .fixed-box {
      position: fixed;
      top: 0;
      right: 0;
      width: 200px;
      background-color: lightpink;
    }
    .sticky-box {
      position: -webkit-sticky; /* Safari */
      position: sticky;
      top: 10px;
      background-color: lightyellow;
    }
  </style>
</head>
<body>
  <div class="static-box">This is a static box.</div>
  <div class="relative-box">This is a relative box.</div>
  <div class="absolute-container">
    <div class="absolute-box">This is an absolute box.</div>
  </div>
  <div class="fixed-box">This is a fixed box.</div>
  <div class="sticky-box">This is a sticky box.</div>
</body>
</html>

 

이 예제를 통해 각 position 값이 Safari와 Firefox에서 잘 동작하는지 직접 확인할 수 있습니다. 최신 브라우저를 사용하면 대부분의 CSS 속성이 문제 없이 작동할 것입니다.

 

반응형

댓글