개발공부 190일차 TIL React로 비 내리는 효과 구현

2023. 7. 18. 23:44·TIL

🧑🏻‍💻오늘 한 일 

- 프로그래머스 문제풀기

- TS강의

- 지원하기

- 이력서 수정 

⏰내일 할 일 

- 프로그래머스 문제풀기

- 운동하기

- 포트폴리오 페이지 작업 

- 지원하기

🔍 React로 비 내리는 효과 구현 

BackEffect.tsx 

import React, {useEffect,useRef} from 'react'
import { useRecoilState } from 'recoil';
import { RainToggleState } from '../atoms';
import './BackEffect.css'

const BackEffect:React.FC = () => {
    const [isRain, setIsRain] = useRecoilState(RainToggleState);
    const rainIntervalRef = useRef<number>();

    useEffect(() => {
      if(isRain){
        const createRaindrop = () => {
          const raindrop = document.createElement('div');
          raindrop.className = 'raindrop';
          raindrop.style.left = `${Math.random() * 100}vw`;
          document.body.appendChild(raindrop);
    
          setTimeout(() => {
            raindrop.remove();
          }, 1000);
        };
    
        rainIntervalRef.current = window.setInterval(createRaindrop, 100);
    
        return () => {
          clearInterval(rainIntervalRef.current);
        };
      }
      
    }, [isRain]);
  
    return <div className="rain-animation" />;
  };
    
    
export default BackEffect

BackEffect.css 

.rain-animation {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 99;
}

.raindrop {
  position: absolute;
  top: -20px;
  left: 50%;
  width: 2px;
  height: 50px;
  background-image: linear-gradient(
    rgba(255, 255, 255, 0.8) 70%,
    transparent 70%
  );
  transform: translateX(-50%);
  pointer-events: none;
  animation: fall 1.75s linear infinite;
}

@keyframes fall {
  0% {
    transform: translate(-50%, -20px);
  }
  100% {
    transform: translate(-50%, 4000px);
  }
}

막히는 순간도 많았지만 하나하나 해결해 나아가는 과정이 재미있어서 재밌게 코딩 했던것 같다. 

나중에 계절에 따라 이펙트로 바꾸는 작업 예정이다!

'TIL' 카테고리의 다른 글

개발공부 192일차 TIL  (0) 2023.07.21
개발공부 191일차 TIL 체이닝이란 ?  (0) 2023.07.19
개발공부 189일차 TIL TTD란  (0) 2023.07.17
개발공부 188일차 TIL  (0) 2023.07.16
개발공부 187일차 TIL React에서 상태 관리를 위한 방법  (1) 2023.07.15
'TIL' 카테고리의 다른 글
  • 개발공부 192일차 TIL
  • 개발공부 191일차 TIL 체이닝이란 ?
  • 개발공부 189일차 TIL TTD란
  • 개발공부 188일차 TIL
jihun_BS
jihun_BS
  • jihun_BS
    Harry 개발블로그
    jihun_BS
  • 전체
    오늘
    어제
    • 분류 전체보기 (507)
      • React Native (2)
      • React (7)
      • 알고리즘 (37)
      • JavaScript (11)
      • 항해99 (12)
        • 항해 WIL (13)
      • TIL (405)
      • TypeScript (3)
      • 트러블 슈팅 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    항해99
    다양한 스타일의 버튼 컴포넌트
    자바스크립트
    Received true` for a non-boolean attribute`mode`Warning
    react-native-dropdown-picker 오류
    n의 배수
    프로그래머스
    virtualizedlists should never be nested inside plain scrollviews with the same orientation because it can break windowing and other functionality - use another virtualizedlist-backed container instead. [component stack]
    pxemrem
    vite svg
    React-hook-form 등록 버튼 활성화
    n의 배수 자바스크립트
    잔디 기부
    pxemrem차이
    vite 환경에서 svg 컴포넌트
    react-native-dropdown-picker
    React-hook-form watch
    잔디 기부 캠페인
    typescript 환경에서 다양한 버튼 컴포넌트
    til
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
jihun_BS
개발공부 190일차 TIL React로 비 내리는 효과 구현
상단으로

티스토리툴바