diff --git a/frontend/src/components/common/Modal/Modal.styles.ts b/frontend/src/components/common/Modal/Modal.styles.ts
index 22a1486c2..b44567224 100644
--- a/frontend/src/components/common/Modal/Modal.styles.ts
+++ b/frontend/src/components/common/Modal/Modal.styles.ts
@@ -11,6 +11,7 @@ export const Overlay = styled.div`
justify-content: center;
align-items: center;
transition: background-color 0.2s ease;
+ touch-action: none;
`;
export const ContentWrapper = styled.div`
diff --git a/frontend/src/pages/ClubDetailPage/components/PhotoModal/PhotoModal.styles.ts b/frontend/src/pages/ClubDetailPage/components/PhotoModal/PhotoModal.styles.ts
index b7b30f3c6..e6213b5d0 100644
--- a/frontend/src/pages/ClubDetailPage/components/PhotoModal/PhotoModal.styles.ts
+++ b/frontend/src/pages/ClubDetailPage/components/PhotoModal/PhotoModal.styles.ts
@@ -16,56 +16,63 @@ export const ModalContent = styled.div`
${media.mobile} {
width: 100vw;
- height: 100vh;
+ height: 100dvh;
border-radius: 0;
}
`;
export const CloseButton = styled.button`
- position: absolute;
- right: 10px;
- background: none;
+ justify-self: end;
+ background: transparent;
border: none;
- font-size: 2.5rem;
cursor: pointer;
- padding: 10px;
- opacity: 0.7;
- transition: opacity 0.2s;
- z-index: 3;
+ padding: 10px 0 10px 10px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
- &:hover {
- opacity: 1;
+ svg {
+ width: 20px;
+ height: 20px;
}
`;
export const ModalHeader = styled.div`
width: 100%;
height: 60px;
- display: flex;
- justify-content: space-between;
+ display: grid;
+ grid-template-columns: 1fr auto 1fr;
+ column-gap: 20px;
align-items: center;
- padding: 0 32px;
+ padding: 0 20px;
position: absolute;
top: 0;
left: 0;
z-index: 10;
background: ${colors.base.white};
backdrop-filter: blur(10px);
+
+ ${media.mobile} {
+ height: calc(60px + var(--rn-safe-top, 0px));
+ padding-top: var(--rn-safe-top, 0px);
+ }
`;
export const ClubName = styled.div`
font-size: 1.3rem;
font-weight: 600;
color: ${colors.base.black};
+ min-width: 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
`;
export const ImageCounter = styled.div`
- position: absolute;
- left: 50%;
- transform: translateX(-50%);
font-size: 0.95rem;
font-weight: 500;
color: ${colors.gray[700]};
+ text-align: center;
`;
export const ModalBody = styled.div`
@@ -89,6 +96,7 @@ export const ImageContainer = styled.div`
${media.mobile} {
padding: 0 16px;
+ margin-top: calc(60px + var(--rn-safe-top, 0px));
}
`;
diff --git a/frontend/src/pages/ClubDetailPage/components/PhotoModal/PhotoModal.tsx b/frontend/src/pages/ClubDetailPage/components/PhotoModal/PhotoModal.tsx
index 24c5ffae7..9bf25561b 100644
--- a/frontend/src/pages/ClubDetailPage/components/PhotoModal/PhotoModal.tsx
+++ b/frontend/src/pages/ClubDetailPage/components/PhotoModal/PhotoModal.tsx
@@ -3,6 +3,7 @@ import type { Swiper as SwiperType } from 'swiper';
import { Keyboard, Navigation } from 'swiper/modules';
import { Swiper, SwiperSlide } from 'swiper/react';
import 'swiper/css/navigation';
+import CloseButtonIcon from '@/assets/images/icons/close_button_icon.svg?react';
import NextButton from '@/assets/images/icons/next_button_icon.svg';
import PrevButton from '@/assets/images/icons/prev_button_icon.svg';
import Modal from '@/components/common/Modal/Modal';
@@ -47,7 +48,7 @@ const PhotoModal = ({ isOpen, onClose, clubName, photos }: PhotoModalProps) => {
{currentIndex + 1} / {urls.length}
- ×
+