
CSS의 'position' 속성은 요소가 문서 또는 부모 요소에 대해 어떻게 위치를 잡을지 정의한다. position 속성은 static, relative, absolute, fixed, sticky와 같은 여러 값들을 가질 수 있다.
이들 각각은 다양한 유스케이스에 맞춰 다르게 사용되며, 적절하게 사용하면 웹 페이지 레이아웃을 유연하게 다룰 수 있습니다.
<body>
<header>...
</header>
<div id="category-bar">...
</div>
<main>...
</main>
<button id="floating-map-button">
<img class="src" src="./imgs/map-trifold.png" alt="map icon" >
</button>
</body>
#floating-map-button {
position: fixed;
background-color: white;
border-radius: 24px;
}

이 CSS 규칙은 #floating-map-button이라는 id를 가진 요소에 적용된다. 다음은 각 속성에 대한 설명이다.
이 CSS 코드는 버튼을 화면의 아래쪽 가운데에 고정시키는 데 사용될 수 있다.

이제, 지도 표시하기 버튼에 글자를 입력하고 스타일을 다듬어보자.
<body>
<header>...
</header>
<div id="category-bar">...
</div>
<main>...
</main>
<button id="floating-map-button">
<span>지도 표시하기</span>
<img width="20" src="./imgs/map-trifold.png" alt="map icon" >
</button>
</body>
#floating-map-button {
position: fixed;
display: flex;
padding: 14px 19px;
align-items:center;
left: 50%; /*부모의 50%*/
bottom: 125px;
background-color: white;
border-radius: 24px;
transform: translateX(-50%);
color: black;
font-size: 14px;
font-weight: 600;
gap: 8px;
cursor: pointer;
}

이제, 지도 표시 버튼에 마우스를 올렸을 때, transform이 적용되도록 해보자.
#floating-map-button {
position: fixed;
display: flex;
padding: 14px 19px;
align-items:center;
left: 50%; /*부모의 50%*/
bottom: 125px;
background-color: white;
border-radius: 24px;
transform: translateX(-50%);
color: black;
font-size: 14px;
font-weight: 600;
gap: 8px;
cursor: pointer;
}
#floating-map-button:hover {
box-shadow: 0 0 0 1px transparent, 0 0 0 4px transparent, 0 6px 16px rgba(0,0,0,0.12) !important; /*그림자가 세개지만 마지막것만 표시된다.*/
transform:scale(1.04);
}
box-shadow: 0 0 0 1px transparent, 0 0 0 4px transparent, 0 6px 16px rgba(0,0,0,0.12) !important; - 이는 총 세 개의 박스 그림자를 설정한다.
transform: scale(1.04); - 요소의 크기를 원래 크기의 104%로 확대한다. 이 효과는 마우스를 버튼 위에 올려놓았을 때만 적용된다.

문제가 생겼다. 마우스를 올리면, 그림자가 생기고, 버튼이 살짝 확대되는 효과만 나타나야 하는데, 버튼의 위치가 움직이고 있다.
코드를 잘 살펴보면, transform이 floating-map-button과 floating-map-button:hover에 각각 다르게 적용되고 있다.
floating-map-button에는 자신의 너비의 50퍼센트 만큼 왼쪽으로 이동시키는 반면, floating-map-button:hover에서는 살짝 확대만 시키므로, 마우스를 올렸을때 너비 기준 왼쪽 이동의 효과가 없어지고, 확대 효과만 나타나는 것이다. 이 오류는 다음과 같이 코드를 변경해서 해결할 수 있다.
#floating-map-button {
position: fixed;
display: flex;
padding: 14px 19px;
align-items:center;
left: 50%; /*부모의 50%*/
bottom: 125px;
background-color: white;
border-radius: 24px;
transform: translateX(-50%);
color: black;
font-size: 14px;
font-weight: 600;
gap: 8px;
cursor: pointer;
}
#floating-map-button:hover {
box-shadow: 0 0 0 1px transparent, 0 0 0 4px transparent, 0 6px 16px rgba(0,0,0,0.12) !important; /*그림자가 세개지만 마지막것만 표시된다.*/
transform: translateX(-50%) scale(1.04);
}
이렇게 코드를 수정하면, hover 상태에서도 위치가 변경되지 않는다.
