Skip to main content

Command Palette

Search for a command to run...

Css로 텍스트 그라디언트 애니메이션 구현하기

Updated
•1 min read•View as Markdown
Css로 텍스트 그라디언트 애니메이션 구현하기

Apple 공식사이트 클론 코딩을 하면서 텍스트에 그라데이션과 애니메이션 구현하는 방법에 대해 공부하였다.

HTML 작성하기

<body>
  <span>
    shoot, view, edit,<br />and share in ProRes<br />or Dolby Vision HDR
  </span>
</body>

그라디언트 적용하기

background-clip: text;
-webkit-background-clip: text;
color: transparent;

텍스트와 배경 색상을 반전시키기 위한 코드이다.

background-image: linear-gradient(방향, 색상1 비율, 색상2 비율, 색상3 비율...);

그라디언트 색상은 background-image 안에 linear-gradient 함수로 표현한다. 방향은 deg 단위나 turn, 상하좌우로 설정한다. 색상은 시작부터 끝 지점까지 차례로 나열할 수 있으며, 비율을 지정하여 차지하는 범위를 조절한다.

span {
  background-clip: text;
  -webkit-background-clip: text;
  color: transparent;
  background-image: linear-gradient(
    180deg,
    #ffb6ff,
    #b344ff 10%,
    #ae38ff 33%,
    #ffb6ff 45%,
    #ffe3ff 50%,
    #ffb6ff 66%,
    #b344ff
  );
}

그라디언트의 줄바꿈 없애기

span은 display 속성이 inline인 태그이기 때문에 줄바꿈 된 문장 각각에 그라디언트가 적용된다. display 속성을 block으로 바꾸면 해결된다.

span {
  display: block;
  ...
}

애니메이션 효과

그라디언트 배경의 세로 크기를 원하는 배수로 늘리고 위치를 아래에서 위로 올리는 방식으로 구현한다.

텍스트 뒤에서 이런 애니메이션이 발생한다.

span {
  ...
  background-size: 100% 300%;
  background-position-y: 0%;
  animation: gradient 2s ease-in-out forwards;
}

@keyframes gradient {
  from {
    background-position-y: 0%;
  }
  to {
    background-position-y: 100%;
  }
}

결과

마치며

애플 공식사이트는 다양한 애니메이션으로 구성되어 있다. 하나씩 구현해가면서 CSS에 흥미를 더해가고 있다. 눈속임이 마술 같고 재밌다 🎭

More from this blog

시맨틱하게 다이얼로그 만들기

웹에서 양식을 제출하기 위한 다이얼로그를 작성할 때 시맨틱 태그를 무시하고 div 태그를 활용해 css로 스타일링을 하는 경우가 많다. 이렇게 작성할 경우, 동작에는 전혀 무리가 없지만 하지 않아도 될 스타일링 작업을 하는 데 시간을 쏟을 수 있고 웹접근성 측면에도 좋지 않다. 웹에서 다이얼로그는 모달, 대화상자, 알림창, 검사기와 같은 상호작용 가능한 컴포넌트를 말한다. HTML에서는 dialog 라는 태그를 사용하면 핵심적인 다이얼로그의 기...

Jan 13, 20262 min read

[JavaScript] 이미지 사이즈 압축해서 용량 줄이기

이미지를 받아서 저장하는 기능을 구현하고 며칠이 지난 후 한 가지 이슈를 발견하였다. 바로 이미지 업로드가 되지 않는 아주 치명적인 문제였다! 분명 테스트도 수 없이 진행하고 배포한 후에도 잘만 동작했는데 갑자기 이런 일이 왜 벌어진걸까? 문제 해결의 원인을 찾기 위해 다양한 방법을 시도하였다: 갤럭시의 갤러리에 있는 이미지 업로드 갤럭시의 카메라로 직접 찍어서 업로드 아이폰의 갤러리에 있는 이미지 업로드 아이폰의 카메라로 직접 찍어서 ...

Nov 16, 20242 min read
[JavaScript] 이미지 사이즈 압축해서 용량 줄이기

[JavaScript] 이미지 수정 시 브라우저 캐싱 방지하기

웹 개발을 하면서 한 번쯤 겪어볼 수 있는 이슈가 있다. A 사용자가 이미지를 업로드하면 B 사용자가 그 이미지를 확인하고, 재업로드를 요청하는 플로우다. A 사용자가 새로운 이미지를 업로드 했는데도 B 사용자는 여전히 처음 이미지를 볼 수 있다. 이 문제는 서버 측에서 "이미지 경로는 그대로 유지하고 이미지를 덮어씌운다"는 구조와 관련이 있다. 브라우저는 URL이 동일하면 캐싱된 이미지를 가져와 네트워크 요청을 줄인다. 따라서 새로운 이미지가...

Oct 3, 20242 min read
[JavaScript] 이미지 수정 시 브라우저 캐싱 방지하기

[React] 렌더링 관점에서 보는 react-hook-form (feat. useRef)

평소 한땀한땀 기능을 만들어나가는 걸 좋아해서 유명한 라이브러리들을 사용해보지 않았는데, 회사에서 프로젝트를 진행하며 다양한 라이브러리를 사용해보았다. 그 중 React-Hook-Form을 사용하며 평소에 리액트로 폼을 작성하며 겪은 불편한 점을 많이 해소했다. 코드 길이, 예외 처리, 렌더링 등 다양한 관점에서 개선할 수 있게 되었다. 오늘은 다양한 폼 상태 관리 방법을 비교하여 React-Hook-Form의 장점을 알아보자. useState...

Sep 5, 20243 min read
[React] 렌더링 관점에서 보는 react-hook-form (feat. useRef)

Untitled Publication

53 posts