"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo reemplazar animaciones SMIL obsoletas con CSS o animaciones web?

¿Cómo puedo reemplazar animaciones SMIL obsoletas con CSS o animaciones web?

Publicado el 2024-11-03
Navegar:258

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

Efecto de desplazamiento: animación CSS o animaciones web

Problema:
La etiqueta animada de SMIL está obsoleta y las transiciones de desplazamiento CSS deben realizarse implementado para reemplazarlo.

Solución:
Elimine las etiquetas establecidas y agregue CSS a la pseudoclase element_tpl:hover:

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

Efecto de escala tras el cambio

Problema:
Anima el elemento para escalar varias veces tras un cambio confirmado.

Solución:
Considere las siguientes opciones:

  1. Animación CSS: Utilice fotogramas clave CSS para lograr escalado:
@keyframes scale-animation {
    0% { transform: scale(1); }
    50% { transform: scale(1.12); }
    100% { transform: scale(1); }
}

Luego aplique la animación al elemento:

.element_tpl {
    animation: scale-animation 0.5s infinite alternate;
}
  1. Animaciones web: Utilice la API de animaciones web para controlar la escala mediante programación:
// 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');

Escalar hacia arriba y hacia abajo al hacer clic

Problema:
Anima el elemento para ampliar y hacia abajo al hacer clic.

Solución:

  1. Transiciones CSS: Use transiciones CSS para activar los cambios de escala en los eventos de mousedown y mouseup:
.element_tpl {
    transition: transform 0.2s;
}

.element_tpl:active {
    transform: scale(1.1);
}
  1. Animaciones web: Utilice la API de animaciones web para manejar el evento de clic y escalar el elemento en consecuencia:
// 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;
});

Guardar animaciones SMIL

Problema:
Transferir animaciones SMIL a CSS o animaciones web.

Solución:
Utilice el polirelleno SMIL creado por Eric Willigers: https://github.com/ericwilligers/svg-animation. Este polyfill convierte animaciones SMIL en animaciones web, proporcionando una forma alternativa de implementarlas.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3