Skip to content

Commit 445f507

Browse files
committed
Fix: 깜빡임 문제 해결중
1 parent 307bb10 commit 445f507

File tree

3 files changed

+49
-1
lines changed

3 files changed

+49
-1
lines changed

app/globals.css

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,29 @@
231231
}
232232
}
233233

234+
/* iOS Safari 특화 스타일 */
235+
@supports (-webkit-touch-callout: none) {
236+
.motion-gpu {
237+
-webkit-transform: translate3d(0, 0, 0);
238+
transform: translate3d(0, 0, 0);
239+
-webkit-backface-visibility: hidden;
240+
backface-visibility: hidden;
241+
-webkit-perspective: 1000;
242+
perspective: 1000;
243+
}
244+
245+
body {
246+
-webkit-overflow-scrolling: touch;
247+
}
248+
249+
/* iOS에서 애니메이션 시간 추가 단축 */
250+
[class*="animate-"],
251+
[class*="motion-"] {
252+
transition-duration: 0.1s !important;
253+
animation-duration: 0.1s !important;
254+
}
255+
}
256+
234257
/* 사용자가 애니메이션 축소 선호 설정을 켠 경우 */
235258
@media (prefers-reduced-motion: reduce) {
236259
* {

app/layout.tsx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,25 @@ export default async function RootLayout({
5656

5757
return (
5858
<html lang="ko" suppressHydrationWarning>
59+
<head>
60+
<script
61+
dangerouslySetInnerHTML={{
62+
__html: `
63+
// iOS Safari 깜빡임 방지를 위한 즉시 실행 스크립트
64+
(function() {
65+
if (/iPhone|iPad|iPod/i.test(navigator.userAgent)) {
66+
document.documentElement.style.opacity = '0.99';
67+
window.addEventListener('load', function() {
68+
setTimeout(function() {
69+
document.documentElement.style.opacity = '1';
70+
}, 100);
71+
});
72+
}
73+
})();
74+
`,
75+
}}
76+
/>
77+
</head>
5978
<body
6079
className={`${geistSans.variable} ${geistMono.variable} ${inter.variable} ${notoSansKr.variable} antialiased transition-all`}
6180
>

components/page-loader.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,16 @@ export default function PageLoader() {
1212
// 초기 로딩 처리
1313
useEffect(() => {
1414
setLoading(true);
15+
16+
// iOS Safari 감지
17+
const isIOS = /iPhone|iPad|iPod/i.test(
18+
typeof navigator !== 'undefined' ? navigator.userAgent : ''
19+
);
20+
1521
const timer = setTimeout(() => {
1622
setLoading(false);
1723
setFirstRender(false);
18-
}, 600); // 600ms 정도의 로딩 시간
24+
}, isIOS ? 300 : 600); // iOS에서는 로딩 시간 단축
1925

2026
return () => clearTimeout(timer);
2127
}, [pathname]);

0 commit comments

Comments
 (0)