JavaScript 触发 CSS 定义好的动画主要涉及到两个方面的知识:CSS 动画和 JavaScript 事件处理。
CSS 动画:通过 CSS 的 @keyframes
规则定义动画序列,然后应用到一个元素上,使其按照定义好的样式变化进行动画效果展示。
JavaScript 事件处理:JavaScript 可以监听和响应各种事件,如点击事件、鼠标移动事件等,通过事件处理函数来执行特定的逻辑,包括触发动画。
@keyframes
定义一系列关键帧,元素在这些关键帧之间平滑过渡。假设我们有一个简单的 CSS 动画,定义如下:
/* 定义动画 */
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
/* 应用动画到元素 */
.fade-in-element {
animation-name: fadeIn;
animation-duration: 1s;
}
我们可以使用 JavaScript 来触发动画:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
.fade-in-element {
opacity: 0;
transition: opacity 1s;
}
.fade-in-active {
opacity: 1;
}
</style>
</head>
<body>
<div id="animatedElement" class="fade-in-element">Hello, World!</div>
<button onclick="startAnimation()">Start Animation</button>
<script>
function startAnimation() {
var element = document.getElementById('animatedElement');
element.classList.add('fade-in-active');
}
</script>
</body>
</html>
问题:动画没有按预期触发。
原因:
@keyframes
和动画属性是否正确设置。解决方法:
DOMContentLoaded
事件触发后执行,或将其放在 HTML 文档的底部。通过以上步骤,通常可以解决大多数与 JavaScript 触发 CSS 动画相关的问题。
领取专属 10元无门槛券
手把手带您无忧上云