티스토리 뷰

코드스테이츠

TIL 23.03.17

_Yunhwan 2023. 3. 17. 21:22

오늘은 CSS 애니메이션에 대해서 배웠다.

 

@keyframes 라는 키워드를 활용하여 애니메이션 효과를 나타내는데,

 

우선  css 키프레임 블록을 생성한 뒤,

애니메이션을 적용시키고 싶은 요소에 animation 속성으로 키프레임 이름을 불러와서 사용을 한다.

 

회전하는 키프레임 예시

@keyframes lotate {
	0% {
		transform : rotate(0deg)
	}

	50% {
		transform : rotate(180deg)
	}

	100% {
		transform : rotate(360deg)
	}
}

/* 시작 시점에선 0도, 50% 시점에선 180도, 완료 시점에선 360도 회전시키는 애니메이션입니다. */

/*3초 동안 lotate 애니메이션이 재생*/
#logo {
	animation : lotate 3s ;
}

 

 

배운 것을 활용해서 애니메이션을 적용하여 글자를 깜빡거리게 하는 예시를 만들어 보려고 했다.

 

하지만, styled-component 내에서 keyframe을 어떻게 적용할지 몰라서 헤매다가 관련내용을 찾아보았다.

 

 

styled-components에서 style keyframes을 불러와 애니메이션 동작과 엘리먼트를 생성해야 했던 것이었다.

 

 

해당 방법을 적용했더니 잘 작동이 되었다.

import styled, { keyframes } from "styled-components";
import "../App.css";
const BREAK_POINT_TABLET = 768;
const BREAK_POINT_PC = 1200;

const lotate = keyframes`
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
`;

const MainArea = styled.div`
  background-image: url("https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQax6rmz_WKtNg2LTxSDYodb3uo_Apj4KcbDQ&usqp=CAU");
  /* background-repeat: repeat; */
  max-height: 864px;
  height: 100vh;
  width: 100%;
  overflow: hidden;
  padding: 128px 0px 0 0px;

  div.text {
    width: 1200px;
    margin: 0 auto;
    .large_screen {
      display: none;
    }
    .small_screen {
      display: block;
      animation: ${lotate} 1s infinite;
    }
    p {
      position: relative;
      top: 60px;
      width: 100%;
      height: auto;
      color: black;
      font-weight: 600;
      font-size: 60px;
      letter-spacing: 6px;
      line-height: 1.4;
    }
  }

  // 태블릿 : 1200px ~ 768px :: 768px 이상 적용되는 css
  @media only screen and (min-width: ${BREAK_POINT_TABLET}px) {
    background-image: url("https://item.kakaocdn.net/do/1d495862f49c38232ca8b6cc6a9679a08f324a0b9c48f77dbce3a43bd11ce785");
    background-repeat: no-repeat;
    background-color: skyblue;
    background-position: right;

    div.text {
      p {
        color: white;
      }
      .large_screen {
        display: block;
      }
      .small_screen {
        display: none;
      }
    }
  }
  // PC : 1200px 이상 :: 1200px 이상 적용되는 css
  @media only screen and (min-width: ${BREAK_POINT_PC}px) {
    background-color: antiquewhite;
  }
`;

const Render = () => {
  return (
    <>
      <MainArea>
        <div className="text">
          <div className="small_screen">
            <p>군침이</p>
            <p>싹</p>
          </div>

          <div className="large_screen">
            <p>작은화면으로</p>
            <p>줄여보세요</p>
          </div>
        </div>
      </MainArea>
    </>
  );
};

export default Render;

 

 

 

 

'코드스테이츠' 카테고리의 다른 글

TIL 23.03.24  (0) 2023.03.24
TIL 23.03.23  (0) 2023.03.23
TIL 23.03.16  (0) 2023.03.16
TIL 23.03.14  (0) 2023.03.14
TIL 23.03.13 & Section3 회고  (0) 2023.03.13
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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 29 30
글 보관함