Computer >> 컴퓨터 >  >> 프로그래밍 >> CSS

CSS filter 속성에 애니메이션 효과 적용하기

CSS filter 속성 애니메이션이란?

CSS의 filter 속성은 요소나 이미지에 흐림(blur), 밝기(brightness), 대비(contrast) 등 다양한 시각적 효과를 적용할 수 있는 강력한 도구입니다. 이 속성에 @keyframes 규칙을 활용한 애니메이션을 결합하면, 효과가 서서히 변화하는 역동적인 연출이 가능합니다.

filter 속성에 애니메이션을 적용하려면 먼저 @keyframes로 애니메이션 단계를 정의하고, 원하는 진행 시점(예: 20%, 50% 등)에 변경할 filter 값을 지정한 뒤, animation 속성으로 요소에 연결하면 됩니다.

예제 코드

아래 예제는 이미지가 담긴 div 요소에 대비(contrast) 변화 애니메이션을 무한 반복으로 적용하는 코드입니다.

<!DOCTYPE html>
<html>
  <head>
    <style>
      div {
        width: 600px;
        height: 300px;
        background-image: url('https://www.tutorialspoint.com/assets/videotutorials/courses/swift_4_online_training/380_course_210_image.jpg');
        border: 2px solid blue;
        animation: myanim 3s infinite;
        position: absolute;
        column-rule: 10px inset orange;
        column-count: 4;
      }
      @keyframes myanim {
        20% {
          filter: contrast(400%);
        }
      }
    </style>
  </head>
  <body>
    <h2>filter 속성 애니메이션 실행</h2>
    <div></div>
  </body>
</html>

코드 핵심 포인트

  • animation: myanim 3s infinite; — 'myanim'이라는 이름의 애니메이션을 3초 동안 한 번 실행하며, 무한히 반복합니다.
  • @keyframes myanim — 애니메이션의 중간 단계를 정의합니다. 여기서는 전체 진행률의 20% 지점에 contrast(400%)를 적용해 이미지 대비를 크게 높입니다.
  • 20% 지점을 벗어나면 filter 값이 기본 상태로 되돌아가므로, 이미지의 대비가 주기적으로 강해졌다 약해지는 효과를 볼 수 있습니다.

응용 팁

contrast() 외에도 blur(), brightness(), saturate(), hue-rotate() 등 다양한 filter 함수를 keyframes 안에서 조합하면 더욱 풍부한 시각 효과를 만들 수 있습니다. 여러 시점(0%, 50%, 100%)에 값을 배치하면 변화의 흐름도 자유롭게 조절할 수 있습니다.