«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как заменить устаревшие SMIL-анимации CSS или веб-анимациями?

Как заменить устаревшие SMIL-анимации CSS или веб-анимациями?

Опубликовано 3 ноября 2024 г.
Просматривать:308

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 или веб-анимацию.

Решение:
Используйте полифил SMIL, созданный Эриком Виллигерсом: https://github.com/ericwilligers/svg-animation. Этот полифил преобразует SMIL-анимацию в веб-анимацию, предоставляя альтернативный способ ее реализации.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3