当前位置:首页 > JavaScript

js实现淡入效果

2026-03-15 17:03:49JavaScript

使用CSS transition实现淡入效果

通过CSS的transition属性结合opacity实现淡入效果,JavaScript仅用于触发样式变化。HTML元素初始状态设置为opacity: 0,通过添加类名触发过渡。

<style>
  .fade-in {
    opacity: 1;
    transition: opacity 1s ease-in;
  }
  .element {
    opacity: 0;
  }
</style>

<script>
  document.querySelector('.element').classList.add('fade-in');
</script>

使用requestAnimationFrame手动控制透明度

通过JavaScript逐帧修改opacity值实现更精细的控制。适合需要自定义动画曲线或动态调整时长的场景。

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);
}

fadeIn(document.getElementById('target'), 1000);

使用Web Animations API

现代浏览器支持的Web Animations API提供更高效的动画控制方式,性能优于传统JavaScript动画。

js实现淡入效果

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

结合Promise实现链式调用

将淡入效果封装为返回Promise的函数,便于在动画完成后执行后续操作。

function promiseFadeIn(element, duration) {
  return new Promise((resolve) => {
    element.style.transition = `opacity ${duration}ms ease-in`;
    element.style.opacity = 1;
    setTimeout(resolve, duration);
  });
}

promiseFadeIn(document.getElementById('banner'), 800)
  .then(() => console.log('Animation complete'));

淡入完成后自动移除样式

通过transitionend事件监听动画结束,自动清理临时添加的样式。

const box = document.querySelector('.box');
box.style.opacity = 0;
box.style.transition = 'opacity 1s';

setTimeout(() => {
  box.style.opacity = 1;
  box.addEventListener('transitionend', () => {
    box.style.transition = '';
  }, { once: true });
}, 100);

标签: 效果js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js防抖和节流实现

js防抖和节流实现

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

js实现报表

js实现报表

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

js实现图片滚动效果

js实现图片滚动效果

使用CSS动画实现图片滚动 通过CSS的@keyframes和animation属性实现无缝滚动效果。将图片容器设置为横向排列,通过动画平移位置。 <style> .scroll-c…

vue实现气泡效果

vue实现气泡效果

实现气泡效果的方法 在Vue中实现气泡效果可以通过CSS动画、第三方库或自定义组件完成。以下是几种常见方法: 使用纯CSS动画 通过CSS的@keyframes和transform属性创建气泡上升动…

js实现防洪

js实现防洪

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