当前位置:首页 > JavaScript

js实现渐隐

2026-03-14 06:50:48JavaScript

使用 CSS 过渡实现渐隐

通过 CSS 的 transitionopacity 属性实现渐隐效果,JavaScript 仅用于触发状态变化。

.fade-element {
  opacity: 1;
  transition: opacity 0.5s ease-in-out;
}
.fade-out {
  opacity: 0;
}
const element = document.querySelector('.fade-element');
element.classList.add('fade-out');

使用 requestAnimationFrame 手动控制渐隐

通过 JavaScript 逐帧修改透明度实现更精细的控制。

function fadeOut(element, duration) {
  let opacity = 1;
  const startTime = performance.now();

  function animate(currentTime) {
    const elapsed = currentTime - startTime;
    opacity = 1 - (elapsed / duration);
    opacity = Math.max(0, opacity);
    element.style.opacity = opacity;

    if (opacity > 0) {
      requestAnimationFrame(animate);
    }
  }

  requestAnimationFrame(animate);
}

fadeOut(document.getElementById('target'), 1000); // 1秒渐隐

使用 Web Animations API 实现渐隐

现代浏览器支持的动画 API,性能更好。

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

结合 Promise 的渐隐方法

返回 Promise 以便在动画完成后执行回调。

js实现渐隐

function fadeOut(element, duration) {
  return new Promise((resolve) => {
    element.style.transition = `opacity ${duration}ms`;
    element.style.opacity = 0;

    setTimeout(() => {
      resolve();
    }, duration);
  });
}

fadeOut(document.querySelector('.box'), 500)
  .then(() => console.log('渐隐完成'));

注意事项

  • 渐隐结束后如需隐藏元素,应添加 visibility: hiddendisplay: none
  • 考虑浏览器兼容性,Web Animations API 需要 polyfill 支持旧浏览器
  • 移动端设备上注意动画性能优化
  • 复杂场景建议使用 GSAP 等专业动画库

标签: 渐隐js
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Promise…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 const…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…