Skip to content

Commit bf364f0

Browse files
committed
design: 랜딩페이지 시안 3
1 parent 8176ed1 commit bf364f0

File tree

1 file changed

+31
-22
lines changed

1 file changed

+31
-22
lines changed

src/app/(home)/page.tsx

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,12 @@ const bounceAnimation = {
6262
},
6363
};
6464

65-
// 배경 그라데이션 애니메이션 추가
6665
const backgroundVariants = {
6766
initial: {
68-
background: "linear-gradient(135deg, #1a1a1a 0%, #2a2a2a 100%)",
67+
background: "linear-gradient(135deg, #2B3A67 0%, #1E2B4D 100%)",
6968
},
7069
animate: {
71-
background: "linear-gradient(135deg, #1a1a1a 0%, #2a2a2a 100%)",
70+
background: "linear-gradient(135deg, #2B3A67 0%, #1E2B4D 100%)",
7271
transition: {
7372
duration: 20,
7473
repeat: Infinity,
@@ -167,7 +166,7 @@ export default function LandingPage() {
167166
animate="animate"
168167
exit={{ opacity: 0 }}
169168
ref={containerRef}
170-
className="relative h-[400vh] min-h-[768px] overflow-hidden bg-gradient-to-b from-slate-950 via-slate-900 to-slate-950"
169+
className="relative h-[400vh] min-h-[768px] overflow-hidden"
171170
>
172171
<motion.div
173172
className={`fixed inset-0 ${isLargeScreen ? "flex" : "flex flex-col"}`}
@@ -176,7 +175,6 @@ export default function LandingPage() {
176175
WebkitBackdropFilter: "blur(16px)",
177176
}}
178177
>
179-
{/* Hero Section */}
180178
<motion.div
181179
className={`relative ${isLargeScreen ? "w-1/2" : "h-1/2 w-full"}`}
182180
animate={{
@@ -197,9 +195,16 @@ export default function LandingPage() {
197195
initial={{ y: 30, opacity: 0 }}
198196
animate={{ y: 0, opacity: 1 }}
199197
transition={{ delay: 0.4, duration: 0.8 }}
200-
className="md:h-400 md:w-400 h-200 w-200 relative"
198+
className="relative h-[300px] w-[300px] md:h-[400px] md:w-[400px]"
201199
>
202-
<Image src="/brand.png" alt="Brand Logo" className="" priority width={800} height={800} />
200+
<Image
201+
src="/brand.png"
202+
alt="Brand Logo"
203+
className="drop-shadow-2xl"
204+
priority
205+
fill
206+
style={{ objectFit: "contain" }}
207+
/>
203208
</motion.div>
204209
</div>
205210
) : (
@@ -210,40 +215,42 @@ export default function LandingPage() {
210215
animate={{ opacity: 1 }}
211216
exit={{ opacity: 0 }}
212217
>
213-
<div className="relative h-full w-full overflow-hidden rounded-3xl bg-gradient-to-br from-[#1e3c72] to-[#2a5298] p-8 shadow-[0_8px_32px_rgba(0,0,0,0.3)]">
218+
<div className="group relative h-full w-full overflow-hidden rounded-3xl bg-gradient-to-br from-blue-900 to-blue-700 p-8 shadow-[0_8px_32px_rgba(0,0,0,0.3)] transition-all duration-500">
219+
<div className="absolute inset-0 bg-gradient-to-br from-blue-600/30 to-transparent opacity-0 transition-opacity duration-500 group-hover:opacity-100" />
214220
<Image
215221
src={slides[currentSlide].image}
216222
alt={slides[currentSlide].title}
217223
fill
218-
className="object-contain p-6 transition-all duration-700 ease-out hover:scale-105 hover:brightness-110"
224+
className="object-contain p-6 transition-all duration-700 ease-out group-hover:scale-105 group-hover:brightness-110"
219225
sizes="(max-width: 768px) 100vw, 50vw"
220226
/>
221227
</div>
222228
</motion.div>
223229
)}
224230
</motion.div>
225231

226-
{/* 스크롤 인디케이터 개선 */}
227232
{currentSlide === 0 && (
228233
<motion.div
229234
className="absolute bottom-5 left-0 right-0 flex flex-col items-center"
230235
animate={bounceAnimation}
231236
>
232-
<div className="flex flex-col items-center space-y-1 rounded-full p-5 backdrop-blur-lg transition-all duration-300 hover:bg-white/10">
233-
<IoIosArrowDown className="text-4xl text-primary-orange-300" />
234-
<span className="text-sm font-medium tracking-wide text-primary-orange-300">scroll</span>
235-
</div>
237+
<motion.div
238+
className="flex flex-col items-center space-y-1 rounded-full bg-white/5 p-5 backdrop-blur-lg transition-all duration-300 hover:bg-white/15"
239+
whileHover={{ scale: 1.1 }}
240+
>
241+
<IoIosArrowDown className="text-4xl text-orange-400" />
242+
<span className="text-sm font-medium tracking-wide text-orange-400">scroll</span>
243+
</motion.div>
236244
</motion.div>
237245
)}
238246
</motion.div>
239247

240-
{/* Content Section */}
241248
<AnimatePresence mode="wait">
242249
{currentSlide > 0 && (
243250
<motion.div
244251
className={`relative z-40 flex ${isLargeScreen ? "w-1/2" : "h-1/2 w-full"}`}
245252
style={{
246-
background: "linear-gradient(135deg, #66d06b 0%, #56c45d 100%)",
253+
background: "linear-gradient(135deg, #4CAF50 0%, #45A049 100%)",
247254
}}
248255
initial={{ width: 0 }}
249256
animate={{ width: isLargeScreen ? "50%" : "100%" }}
@@ -257,10 +264,10 @@ export default function LandingPage() {
257264
exit={{ opacity: 0, y: -20 }}
258265
transition={{ duration: 0.6 }}
259266
>
260-
<h2 className="text-center font-sans text-4xl font-bold tracking-tight text-white drop-shadow-[0_2px_4px_rgba(0,0,0,0.2)] md:text-5xl">
267+
<h2 className="text-center font-sans text-4xl font-bold tracking-tight text-white drop-shadow-lg md:text-5xl">
261268
{slides[currentSlide].title}
262269
</h2>
263-
<p className="max-w-2xl text-center font-sans text-xl leading-relaxed text-white/95 drop-shadow-[0_1px_2px_rgba(0,0,0,0.1)] md:text-2xl">
270+
<p className="max-w-2xl text-center font-sans text-xl leading-relaxed text-white/95 drop-shadow-md md:text-2xl">
264271
<TypewriterText text={slides[currentSlide].content} />
265272
</p>
266273
</motion.div>
@@ -269,7 +276,6 @@ export default function LandingPage() {
269276
</AnimatePresence>
270277
</motion.div>
271278

272-
{/* Navigation Dots 개선 */}
273279
<motion.div
274280
className={`fixed ${
275281
isLargeScreen
@@ -279,13 +285,16 @@ export default function LandingPage() {
279285
>
280286
{slides.slice(1).map((_, index) => (
281287
<motion.div key={index + 1} className="group relative h-3 w-3" whileHover={{ scale: 1.2 }}>
282-
<motion.div className="absolute -inset-2 rounded-full bg-white/10 opacity-0 backdrop-blur-sm transition-opacity group-hover:opacity-100" />
288+
<motion.div className="absolute -inset-2 rounded-full bg-white/10 opacity-0 backdrop-blur-sm transition-opacity duration-300 group-hover:opacity-100" />
283289
<motion.div
284-
className="h-full w-full cursor-pointer rounded-full border-2 border-white/50"
290+
className="h-full w-full cursor-pointer rounded-full border-2 border-white/50 transition-colors duration-300"
285291
animate={{
286-
backgroundColor: index + 1 === currentSlide ? "#108b2d" : "transparent",
292+
backgroundColor: index + 1 === currentSlide ? "#4CAF50" : "transparent",
287293
scale: index + 1 === currentSlide ? 1.2 : 1,
288294
}}
295+
whileHover={{
296+
borderColor: "rgba(255, 255, 255, 0.8)",
297+
}}
289298
onClick={() => {
290299
const targetSlide = index + 1;
291300
const totalSlides = slides.length;

0 commit comments

Comments
 (0)