티스토리 뷰
안녕하세요. Teus입니다.
지난번 까지 대표사진의 그레디언트 음영까지 추가가 완료 되었습니다.
이번에는 웰컴문구를 추가하고
지금까지 만든 Components에 fade-in 효과(스르륵 올라오는 효과)를 넣어보겠습니다.
# 1. 웰컴 문구
웰컴문구는 별거 없습니다. 모바일 청첩장 보면 `환영합니다` 같은 멘트있죠?
그래서 아래와같이 작성해 보도록 하겠습니다.
![](https://blog.kakaocdn.net/dn/cE0CgL/btsL1Vy772K/5k4oNpdydSMJ2KMAuqBgVK/img.png)
이 부분 같은 경우는 div tag안에 text만 적절하게 배치하면 되기때문에 어려울게 없습니다.
아래 코드를 보면 쉬울거에요
App.jsx
import reactLogo from './assets/react.svg'
import viteLogo from '/vite.svg'
import './App.css'
import { useEffect, useRef, useState } from 'react';
import Audiocomp from './Audiocomp'
import Topmsg from './Topmsg';
import Mainphoto from './Mainphoto';
function App() {
const debug = process.env.NODE_ENV === 'development'?"solid":"none";
return (
<>
<div className='main-frame'>
<div style={{ border: debug, textAlign: 'right' }}>
<Audiocomp/>
</div>
<div style={{ border: debug }}>
<Topmsg/>
</div>
<div className="fade-in" style={{ border: debug }}>
<Mainphoto/>
</div>
<div style={{ border: debug}}>
<h1>INVITATION</h1>
소중한 분들을 모십니다.<br/>
지금까지 함께 뛰어온<br/> 던전의 탐험, 파티의 우정<br/>레이드의 마지막에 여러분을 초대합니다
<div style = {{marginBottom:"10px", marginTop : "20px"}}>
<b>아버지 · 어머니</b> 의 장남 <span style = {{fontFamily:"MaruBuriBold"}}>신랑</span><br/>
</div>
<div style = {{marginBottom:"10px", marginTop : "10px"}}>
<b>아버지 · 어머니</b> 의 차녀 <span style = {{fontFamily:"MaruBuriBold"}}>신부</span>
</div>
</div>
<div style={{ border: debug}}>
달력
</div>
<div style={{ border: debug}}>
이미지 갤러리
</div>
<div style={{ border: debug}}>
결혼식 장소
</div>
<div style={{ border: debug}}>
신랑신부 계좌 정보
</div>
<div style={{ border: debug}}>
카카오톡 공유하기 / 모청 주소 복사하기
</div>
</div>
</>
)
}
export default App
그러면 이제 아래처럼 어느정도 모바일 청첩장의 모습을 갖추어 갑니다!
![](https://blog.kakaocdn.net/dn/b3cDyB/btsL2JEFIwl/IfV5ghZc4QbUPNg20kskP0/img.png)
글씨체는 못본 걸로 치면 되겠습니다🙄
# 2. fade-in 효과 넣기
보는것처럼 스르륵 올라온다(표현이 개떡같지만, 뭔지 아시겠죠?)
이제 모바일청첩장이 켰을 때 모든 Components가 위와같은 효과와 함께 표시되게 만들어 보려고 합니다.
먼저 fade-in을 적용하기 위해서 className이 fade-in일 경우에 대한 css를 준비합니다.
App.css
#root {
margin: 0 auto;
text-align: center;
border-style : solid;
}
.main-frame {
display: flex;
flex-direction: column;
color : black;
background-color: rgb(251, 251, 251);
font-family: MaruBuriLight;
width: 100%;
max-width: 390px;
}
@media (max-width: 1400px) {
.main-frame {
width: 100%;
}
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.fade-in {
animation: fadeIn 1.5s ease-in-out;
}
@keyframe같은 경우는 뒤에 나오는 fadeIn이라는 변수가
CSS의 애니메이션을 정의하는 규칙이라고 알려주는 역할을 합니다.
그래서 fade-in 이라는 class는 fadeIn에서 정의된 from, to 규칙을 가지고
이 규칙이 1.5초에 걸쳐서 효과를 내구며, 뒤에있는 `ease-in-out`같은 경우는
이런 fade-in 효과가 어떤 타이밍으로 보여질지를 정의해줍니다.
(이를 timing-function이라고 하더라구요)
그리고 이제 App.jsx의 파일에서 div tag들의 className을 `fade-in`으로 변경해 줍니다.
그리고 겸사겸사 welcome문구도 별도의 components로 빼줍니다.
App.jsx
import reactLogo from './assets/react.svg'
import viteLogo from '/vite.svg'
import './App.css'
import { useEffect, useRef, useState } from 'react';
import Audiocomp from './Audiocomp'
import Topmsg from './Topmsg';
import Mainphoto from './Mainphoto';
import Invitation from './Invitation';
function App() {
const debug = process.env.NODE_ENV === 'development'?"solid":"none";
return (
<>
<div className='main-frame'>
<div style={{ border: debug, textAlign: 'right' }}>
<Audiocomp/>
</div>
<div className = "fade-in" style={{ border: debug}}>
<Topmsg/>
</div>
<div className = "fade-in" style={{ border: debug}}>
<Mainphoto/>
</div>
<div className = "fade-in" style={{ border: debug}}>
<Invitation/>
</div>
<div className = "fade-in" style={{ border: debug}}>
달력
</div>
<div className = "fade-in" style={{ border: debug}}>
이미지 갤러리
</div>
<div className = "fade-in" style={{ border: debug}}>
결혼식 장소
</div>
<div className = "fade-in" style={{ border: debug}}>
신랑신부 계좌 정보
</div>
<div className = "fade-in" style={{ border: debug}}>
카카오톡 공유하기 / 모청 주소 복사하기
</div>
</div>
</>
)
}
export default App
Invitation.jsx
const Invitation = () => {
return (
<>
<h1>INVITATION</h1>
소중한 분들을 모십니다.<br/>
지금까지 함께 뛰어온<br/> 던전의 탐험, 파티의 우정<br/>레이드의 마지막에 여러분을 초대합니다
<div style = {{marginBottom:"10px", marginTop : "20px"}}>
<b>아버지 · 어머니</b> 의 장남 <span style = {{fontFamily:"MaruBuriBold"}}>신랑</span><br/>
</div>
<div style = {{marginBottom:"10px", marginTop : "10px"}}>
<b>아버지 · 어머니</b> 의 차녀 <span style = {{fontFamily:"MaruBuriBold"}}>신부</span>
</div>
</>
)
}
export default Invitation
이러면 이제 좀더 미려한 효과가 입혀진 모바일청첩장을 확인할 수가 있습니다
'React로만드는 모바일청첩장' 카테고리의 다른 글
모바일청첩장 직접 만들기 with 코딩 - 7. 이미지갤러리 추가하기 (0) | 2025.01.29 |
---|---|
모바일청첩장 직접 만들기 with 코딩 - 6. 달력 추가하기 (0) | 2025.01.29 |
모바일청첩장 직접 만들기 with 코딩 - 4. 신부신랑이름, 어디서결혼할지, 대표사진 구현하기 (0) | 2025.01.29 |
모바일청첩장 직접 만들기 with 코딩 - 3. background music(bgm) 구현하기 (0) | 2025.01.29 |
모바일청첩장 직접 만들기 with 코딩 - 2. 페이지 레이아웃 설계하기 (0) | 2025.01.29 |
- Total
- Today
- Yesterday
- Sort알고리즘
- heap
- hash
- 자료구조
- 완전탐색 알고리즘
- git
- 모바일청첩장
- 분할정복
- SIMD
- 청첩장
- 동적계획법
- 컴퓨터그래픽스
- GDC
- prime number
- Search알고리즘
- 병렬처리
- 코딩테스트
- Python
- javascript
- 사칙연산
- 프로그래머스
- stack
- Greedy알고리즘
- 알고리즘
- 셀프모청
- AVX
- 이분탐색
- C++
- react
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |