当前位置:首页 > JavaScript

js实现css3动画

2026-04-04 08:27:54JavaScript

使用 JavaScript 触发 CSS3 动画

JavaScript 可以通过操作 DOM 元素的类名或直接修改样式来触发 CSS3 动画。CSS3 动画通常通过 @keyframes 定义,再通过 animation 属性应用到元素上。

方法 1:通过添加/移除类名触发动画

定义 CSS 动画和类名:

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

.animate-fadeIn {
  animation: fadeIn 1s ease-in-out;
}

JavaScript 代码:

js实现css3动画

const element = document.getElementById('target');
element.classList.add('animate-fadeIn');

// 动画结束后移除类名(可选)
element.addEventListener('animationend', () => {
  element.classList.remove('animate-fadeIn');
});

方法 2:直接修改元素的 style 属性

JavaScript 代码:

const element = document.getElementById('target');
element.style.animation = 'fadeIn 1s ease-in-out';

方法 3:动态创建并插入 @keyframes

通过 JavaScript 动态创建样式表并插入 @keyframes

js实现css3动画

const style = document.createElement('style');
style.innerHTML = `
  @keyframes slideIn {
    from { transform: translateX(-100%); }
    to { transform: translateX(0); }
  }
`;
document.head.appendChild(style);

const element = document.getElementById('target');
element.style.animation = 'slideIn 0.5s ease-out';

方法 4:使用 animate() API

现代浏览器支持 Web Animations API,无需 CSS 即可创建动画:

const element = document.getElementById('target');
element.animate(
  [
    { opacity: 0 },
    { opacity: 1 }
  ],
  {
    duration: 1000,
    easing: 'ease-in-out',
    iterations: 1
  }
);

方法 5:控制动画播放状态

通过 JavaScript 控制动画的播放、暂停等状态:

const element = document.getElementById('target');
element.style.animation = 'fadeIn 2s ease-in-out forwards';
element.style.animationPlayState = 'paused';

// 播放动画
element.style.animationPlayState = 'running';

// 重置动画
element.style.animation = 'none';
element.offsetHeight; // 触发重绘
element.style.animation = 'fadeIn 2s ease-in-out forwards';

注意事项

  • 确保动画性能优化,优先使用 transformopacity 属性。
  • 考虑浏览器兼容性,必要时添加前缀(如 -webkit-)。
  • 对于复杂动画序列,可以使用 animation-delay 或 Promise 链式调用。
  • 监听 animationstartanimationiterationanimationend 事件以实现更精细的控制。

标签: 动画js
分享给朋友:

相关文章

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与响应式…

vue哪个组件实现动画

vue哪个组件实现动画

在Vue中实现动画效果,可以通过以下组件和方法实现: Vue内置动画组件 Vue提供了<transition>和<transition-group>两个内置组件,用于处理进入…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

vue加载动画实现

vue加载动画实现

Vue 加载动画实现方法 使用 CSS 动画或过渡 在 Vue 组件中可以直接通过 CSS 实现加载动画效果。定义一个简单的旋转动画: .loading-spinner { width: 40p…