当前位置:首页 > JavaScript

用js实现transition

2026-02-03 02:59:16JavaScript

使用 CSS 和 JavaScript 实现过渡效果

在 JavaScript 中实现 CSS 的 transition 效果,可以通过直接操作元素的样式或类名来触发过渡。以下是几种常见方法:

直接修改内联样式

通过 JavaScript 动态修改元素的 style 属性,结合 CSS 中定义的 transition 属性实现过渡效果。

用js实现transition

<style>
  .box {
    width: 100px;
    height: 100px;
    background: red;
    transition: all 0.5s ease;
  }
</style>

<div class="box"></div>

<script>
  const box = document.querySelector('.box');
  box.addEventListener('click', () => {
    box.style.width = '200px';
    box.style.backgroundColor = 'blue';
  });
</script>

通过切换类名触发过渡

通过添加或移除类名触发 CSS 中定义的过渡效果。

用js实现transition

<style>
  .box {
    width: 100px;
    height: 100px;
    background: red;
    transition: all 0.5s ease;
  }
  .box.active {
    width: 200px;
    background: blue;
  }
</style>

<div class="box"></div>

<script>
  const box = document.querySelector('.box');
  box.addEventListener('click', () => {
    box.classList.toggle('active');
  });
</script>

使用 requestAnimationFrame 实现动画

对于更复杂的过渡效果,可以通过 requestAnimationFrame 逐帧修改属性。

const box = document.querySelector('.box');
let width = 100;

function animate() {
  width += 1;
  box.style.width = `${width}px`;

  if (width < 200) {
    requestAnimationFrame(animate);
  }
}

box.addEventListener('click', animate);

使用 Web Animations API

现代浏览器支持 Web Animations API,可以直接通过 JavaScript 定义动画。

const box = document.querySelector('.box');
box.addEventListener('click', () => {
  box.animate([
    { width: '100px', backgroundColor: 'red' },
    { width: '200px', backgroundColor: 'blue' }
  ], {
    duration: 500,
    easing: 'ease'
  });
});

注意事项

  1. 性能优化:优先使用 CSS transitiontransform,硬件加速性能更好。
  2. 兼容性:Web Animations API 在旧浏览器中可能需要 polyfill。
  3. 事件监听:过渡结束后可通过 transitionend 事件触发回调。
box.addEventListener('transitionend', () => {
  console.log('过渡完成');
});

标签: jstransition
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClip…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…