当前位置:首页 > JavaScript

js实现淡入

2026-03-14 06:29:20JavaScript

js实现淡入淡出的方法

使用纯JavaScript实现淡入效果

通过修改元素的opacity属性,结合setIntervalrequestAnimationFrame实现逐渐显示的效果:

function fadeIn(element, duration) {
  let opacity = 0;
  const interval = 10;
  const delta = interval / duration;

  const timer = setInterval(function() {
    opacity += delta;
    element.style.opacity = opacity;

    if (opacity >= 1) {
      clearInterval(timer);
    }
  }, interval);
}

使用CSS过渡配合JavaScript

更高效的实现方式是利用CSS过渡特性,只需通过JavaScript触发类名变化:

js实现淡入

.fade-in {
  opacity: 1;
  transition: opacity 0.5s ease-in;
}
function fadeIn(element) {
  element.style.opacity = 0;
  element.classList.add('fade-in');
  element.style.opacity = 1;
}

requestAnimationFrame实现

高性能动画推荐使用这个API,能保证与浏览器刷新率同步:

js实现淡入

function fadeIn(element, duration) {
  let start = null;
  element.style.opacity = 0;

  function step(timestamp) {
    if (!start) start = timestamp;
    const progress = timestamp - start;
    const opacity = Math.min(progress / duration, 1);
    element.style.opacity = opacity;

    if (progress < duration) {
      window.requestAnimationFrame(step);
    }
  }
  window.requestAnimationFrame(step);
}

带回调函数的版本

可以在动画完成后执行回调函数:

function fadeIn(element, duration, callback) {
  let opacity = 0;
  const interval = 10;
  const delta = interval / duration;

  const timer = setInterval(function() {
    opacity += delta;
    element.style.opacity = opacity;

    if (opacity >= 1) {
      clearInterval(timer);
      if (callback) callback();
    }
  }, interval);
}

注意事项

  • 确保目标元素初始状态为opacity: 0display: block(非none
  • 对于需要先隐藏再淡入的元素,应先设置display属性再开始淡入
  • 考虑添加will-change: opacity优化性能
  • 移动端注意硬件加速,可添加transform: translateZ(0)

标签: js
分享给朋友:

相关文章

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…