当前位置:首页 > 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值实现更精细的控制。适合需要自定义动画曲线或动态调整时长的场景。

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动画。

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事件监听动画结束,自动清理临时添加的样式。

js实现淡入效果

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
分享给朋友:

相关文章

vue实现吸附效果

vue实现吸附效果

Vue实现吸附效果的方法 吸附效果通常指页面滚动时,某个元素固定在特定位置(如顶部或底部)。以下是几种实现方式: 使用CSS的position: sticky 通过CSS的sticky定位实现吸附效…

js实现分页

js实现分页

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

js 实现vue

js 实现vue

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

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js实现排序

js实现排序

数组排序方法 JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。 const num…

js实现导航菜单

js实现导航菜单

使用HTML和CSS创建基础结构 导航菜单的基础结构通常由HTML的无序列表(<ul>)和列表项(<li>)组成,每个列表项包含一个链接(<a>)。CSS用于样式化…