"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 더 이상 사용되지 않는 SMIL 애니메이션을 CSS 또는 웹 애니메이션으로 대체하려면 어떻게 해야 합니까?

더 이상 사용되지 않는 SMIL 애니메이션을 CSS 또는 웹 애니메이션으로 대체하려면 어떻게 해야 합니까?

2024-11-03에 게시됨
검색:704

How Can I Replace Deprecated SMIL Animations with CSS or Web Animations?

호버 효과: CSS 애니메이션 또는 웹 애니메이션

문제:
SMIL의 애니메이션 태그는 더 이상 사용되지 않으며 CSS 호버 전환이 필요합니다. 이를 대체하기 위해 구현되었습니다.

해결책:
설정 태그를 제거하고 CSS를 element_tpl:hover 의사 클래스에 추가합니다:

.element_tpl:hover {
    stroke-opacity: 0.5;
}

변경 시 크기 조정 효과

문제:
변경 시 몇 배로 크기가 조정되도록 요소에 애니메이션을 적용합니다.

해결책:
다음 옵션을 고려하십시오:

  1. CSS 애니메이션: CSS 키프레임을 사용하여 크기 조정:
@keyframes scale-animation {
    0% { transform: scale(1); }
    50% { transform: scale(1.12); }
    100% { transform: scale(1); }
}

그런 다음 요소에 애니메이션을 적용합니다.

.element_tpl {
    animation: scale-animation 0.5s infinite alternate;
}
  1. 웹 애니메이션: 웹 애니메이션 API를 사용하여 프로그래밍 방식으로 크기 조정을 제어합니다.
// Create a new animation
const animation = document.timeline.addAnimation();

// Define keyframes
const keyframes = [
    { transform: 'scale(1)', offset: 0 },
    { transform: 'scale(1.12)', offset: 0.5 },
    { transform: 'scale(1)', offset: 1 }
];

// Apply keyframes to the animation
animation.effect = keyframes;

// Target the element
animation.target = document.querySelector('.element_tpl');

클릭 시 크기 확대 및 축소

문제:
요소에 애니메이션을 적용하여 크기를 확대하고 클릭 시 아래로 이동합니다.

해결책:

  1. CSS 전환: CSS 전환을 사용하여 mousedown 및 mouseup 이벤트에서 크기 변경을 트리거합니다.
.element_tpl {
    transition: transform 0.2s;
}

.element_tpl:active {
    transform: scale(1.1);
}
  1. 웹 애니메이션: 웹 애니메이션 API를 사용하여 클릭 이벤트를 처리하고 그에 따라 요소 크기를 조정합니다.
// Add event listener
document.querySelector('.element_tpl').addEventListener('click', (event) => {

    // Create a new animation
    const animation = document.timeline.addAnimation();

    // Define keyframes
    const keyframes = [
        { transform: 'scale(1)', offset: 0 },
        { transform: 'scale(1.1)', offset: 0.2 },
        { transform: 'scale(1)', offset: 0.4 },
    ];

    // Apply keyframes to the animation
    animation.effect = keyframes;

    // Target the element
    animation.target = event.target;
});

SMIL 애니메이션 저장

문제:
SMIL 애니메이션을 CSS 또는 웹 애니메이션으로 전송합니다.

해결책:
Eric Willigers가 만든 SMIL 폴리필을 사용하세요: https://github.com/ericwilligers/svg-animation. 이 폴리필은 SMIL 애니메이션을 웹 애니메이션으로 변환하여 이를 구현하는 대체 방법을 제공합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3