본문 바로가기
frontend/CSS

특정 섹션을 페이지 우측에 위치하도록 하는 CSS 속성?

by Mr.코딩 2023. 7. 21.

특정 섹션을 페이지 우측에 위치하도록 하는 CSS  속성?

 

chatGTP

특정 섹션을 페이지 우측에 위치하도록 하는 CSS 속성은 `float`와 `clear`를 함께 사용하는 방법과 `position` 속성을 사용하는 방법 두 가지가 있습니다.

1. `float`와 `clear`를 사용하는 방법:

```css
/* 우측 섹션을 float:right;로 설정하고, clear:right;로 float 영향을 제거합니다. */
.right-section {
    float: right;
    clear: right;
}
```

이 방법은 해당 요소를 우측으로 이동시키는 데 사용될 수 있지만, 주의해야 할 점은 부모 요소가 해당 섹션을 감싸도록 구조적으로 잘 설계되어야 합니다. 그렇지 않으면 다른 요소들과 겹칠 수 있습니다.

2. `position` 속성을 사용하는 방법:

```css
/* 우측 섹션을 절대적으로 배치하고, right:0;으로 우측에 위치시킵니다. */
.right-section {
    position: absolute;
    right: 0;
}
```

이 방법은 해당 요소를 페이지 우측에 고정적으로 위치시킵니다. 이 경우, 해당 요소의 부모 요소는 `relative`, `absolute`, 또는 `fixed` 중 하나의 `position` 속성을 가져야 합니다. 또한, 다른 요소들과 겹치지 않도록 조심해야 합니다.

두 방법 중 하나를 선택하여 해당 섹션을 페이지 우측에 위치시킬 수 있습니다. 각 방법은 상황에 맞게 적절하게 사용되어야 합니다.


 `relative`, `absolute`, 또는 `fixed` 의 차이는?

 

chatGTP

`relative`, `absolute`, `fixed`는 CSS의 `position` 속성 값으로, 요소의 위치를 지정하는 데 사용됩니다. 이들의 차이점은 해당 요소가 상대적으로 배치되는 위치와 기준점이 어떻게 결정되는지에 있습니다.

1. `position: relative;`
   - 상대적 위치: 요소가 원래 있어야 할 위치를 기준으로 위치가 결정됩니다. 다른 요소들과의 상대적인 위치를 조정할 수 있습니다.
   - 원래 레이아웃에 영향을 주지 않고 상대적으로 이동합니다. 다른 요소들에게 영향을 주지 않습니다.
   - `top`, `right`, `bottom`, `left` 속성을 사용하여 원래 위치로부터 얼마나 이동할지 설정할 수 있습니다.

2. `position: absolute;`
   - 절대적 위치: 요소가 가장 가까운 조상 요소 중 `position` 속성이 `relative`, `absolute`, 또는 `fixed`인 요소를 기준으로 위치가 결정됩니다. 만약 가까운 조상 요소 중에서 해당 속성을 가진 요소가 없다면, 문서의 뷰포트를 기준으로 위치가 결정됩니다.
   - 기존 레이아웃에서 완전히 벗어나 배치됩니다. 다른 요소들에게 영향을 주지 않습니다.
   - `top`, `right`, `bottom`, `left` 속성을 사용하여 기준점으로부터 얼마나 떨어진 위치에 배치할지 설정할 수 있습니다.

3. `position: fixed;`
   - 고정 위치: 요소가 뷰포트를 기준으로 위치가 결정되며 스크롤을 움직여도 항상 뷰포트의 고정된 위치에 유지됩니다.
   - 다른 요소들에게 영향을 주지 않으며, 기존 레이아웃에서 벗어납니다.
   - `top`, `right`, `bottom`, `left` 속성을 사용하여 뷰포트 기준으로 얼마나 떨어진 위치에 배치할지 설정할 수 있습니다.

예시로 다음과 같은 코드를 생각해봅시다:

<!DOCTYPE html>
<html>
<head>
    <title>Position Example</title>
    <style>
        .container {
            width: 200px;
            height: 200px;
            position: relative;
        }

        .box-relative {
            width: 50px;
            height: 50px;
            background-color: lightblue;
            position: relative;
            top: 20px;
            left: 30px;
        }

        .box-absolute {
            width: 50px;
            height: 50px;
            background-color: lightcoral;
            position: absolute;
            top: 30px;
            left: 20px;
        }

        .box-fixed {
            width: 50px;
            height: 50px;
            background-color: lightgreen;
            position: fixed;
            top: 10px;
            left: 10px;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="box-relative"></div>
    </div>
    <div class="box-absolute"></div>
    <div class="box-fixed"></div>
</body>
</html>



위의 코드에서 `.box-relative`는 상대적 위치로, `.box-absolute`는 절대적 위치로, `.box-fixed`는 고정 위치로 설정되었습니다. 각 박스는 다른 요소들에게 영향을 주지 않고, 자신의 위치 속성에 따라 다른 위치에 배치되는 것을 확인할 수 있습니다.



clear:right;로 float 영향을 제거합니다 // 이걸 좀 더 자세히 설명해.

 

chatGTP

`clear` 속성은 `float` 속성이 적용된 요소 주위의 레이아웃을 제어하는 데 사용됩니다. `float` 속성은 해당 요소를 띄우거나 부유시켜서 텍스트나 다른 인라인 요소들이 그 주위를 감싸도록 합니다. 이러한 특성으로 인해 다른 요소들이 `float` 속성이 적용된 요소 주위로 끌려갈 수 있습니다. 좀 쉽게 설명해보겠습니다.

 

물체들이 떠다니거나 띄워져서 주변에 있는 다른 물체들이 그 주위를 감싸게 만드는 것을 상상해보세요. 예를 들어, 바다에서 작은 부표들이 떠다니면 그 주변의 물이 부표를 따라 흐르고 다른 물체들이 부표를 피해서 지나가는 모습을 생각해볼 수 있습니다.

CSS에서 `float` 속성은 이와 비슷한 역할을 합니다. 요소에 `float` 속성을 적용하면 그 요소가 떠다니거나 부유하게 됩니다. 이로 인해 주변에 있는 텍스트나 다른 요소들이 `float` 속성이 적용된 요소를 따라 흐르고, 다른 물체들이 그 요소를 피해서 배치되는 것처럼 보입니다.

그러나 이 때문에 `float` 속성이 적용된 요소가 다른 요소들을 따라가기 때문에, 레이아웃이 예상하지 않은 방식으로 변할 수 있습니다. 이때 `clear` 속성이 등장합니다. `clear` 속성을 사용하면 어떤 방향에서부터 오는 `float` 속성이 적용된 요소의 영향을 제거할 수 있습니다. 따라서 다른 요소들이 그 영역을 피해 정상적으로 배치될 수 있습니다.

예를 들어, 다음과 같이 두 개의 박스를 만들고 하나는 `float: left;`로 설정하면 어떻게 동작하는지 살펴봅시다:

html
<!DOCTYPE html>
<html>
<head>
    <title>Float and Clear</title>
    <style>
        .box {
            width: 100px;
            height: 100px;
            background-color: lightblue;
            margin: 10px;
        }

        .left-box {
            float: left;
        }

        .right-box {
            clear: right;
        }
    </style>
</head>
<body>
    <div class="left-box box"></div>
    <div class="right-box box"></div>
</body>
</html>



위의 코드에서 `left-box` 클래스에 `float: left;` 속성이 적용되어 왼쪽으로 띄워집니다. `right-box` 클래스에 `clear: right;` 속성이 적용되어, 오른쪽에 띄워진 `left-box` 요소의 영향을 제거하고 현재 줄의 다른 요소들이 그 영역을 피할 수 있습니다.

`clear` 속성은 다음과 같은 값들을 가질 수 있습니다:

- `none`: 기본값으로, `float` 속성이 적용된 요소 주위를 무시합니다.
- `left`: `float: left;`가 적용된 요소 주위를 피합니다.
- `right`: `float: right;`가 적용된 요소 주위를 피합니다.
- `both`: `float: left;`와 `float: right;`가 모두 적용된 요소 주위를 피합니다.

`clear: right;`는 오른쪽에 `float` 속성이 적용된 요소가 있을 때 해당 요소의 영향을 제거하고, 현재 줄의 다른 요소들이 그 영역을 피하도록 합니다. 이렇게 함으로써 다음 줄에 오는 요소들은 오른쪽으로 띄워진 요소의 아래로 배치되게 됩니다.

'frontend > CSS' 카테고리의 다른 글

`div`로 요소를 감싸는 것은  (0) 2023.07.23
vw와 vh의 차이는?  (0) 2023.07.23
섹션 사이의 간격을 만드는 방법  (0) 2023.07.23
폰트 설정  (0) 2023.07.23
선택자 점(.)과 # 의 차이  (0) 2023.07.22
CSS style 적용의 3가지 방법  (0) 2023.07.22
CSS를 배울 수 있는 유튜브 채널  (0) 2023.07.19
CSS Grid로...  (0) 2023.07.19