当前位置:首页 > JavaScript

js实现渐隐渐现

2026-03-16 07:27:25JavaScript

使用CSS transition和opacity实现渐隐渐现

通过CSS的transition属性和opacity属性结合JavaScript控制元素的透明度变化,实现平滑的渐隐渐现效果。

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

<script>
  const element = document.querySelector('.fade-element');

  // 渐隐
  function fadeOut() {
    element.classList.add('hidden');
  }

  // 渐现
  function fadeIn() {
    element.classList.remove('hidden');
  }
</script>

使用纯JavaScript实现渐隐渐现

通过JavaScript直接操作元素的opacity属性,结合requestAnimationFrame实现更精细的控制。

js实现渐隐渐现

function fade(element, duration, targetOpacity) {
  const startOpacity = parseFloat(getComputedStyle(element).opacity);
  const deltaOpacity = targetOpacity - startOpacity;
  const startTime = performance.now();

  function animate(currentTime) {
    const elapsedTime = currentTime - startTime;
    const progress = Math.min(elapsedTime / duration, 1);
    element.style.opacity = startOpacity + deltaOpacity * progress;

    if (progress < 1) {
      requestAnimationFrame(animate);
    }
  }

  requestAnimationFrame(animate);
}

// 渐隐
fade(element, 500, 0);

// 渐现
fade(element, 500, 1);

使用jQuery实现渐隐渐现

如果项目中已引入jQuery库,可以使用其内置的fade方法快速实现效果。

js实现渐隐渐现

// 渐隐
$('#element').fadeOut(500);

// 渐现
$('#element').fadeIn(500);

// 切换显示状态
$('#element').fadeToggle(500);

使用CSS动画实现渐隐渐现

定义CSS关键帧动画,通过JavaScript添加/移除类名触发动画效果。

<style>
  @keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
  }

  @keyframes fadeOut {
    from { opacity: 1; }
    to { opacity: 0; }
  }

  .fade-in {
    animation: fadeIn 0.5s forwards;
  }

  .fade-out {
    animation: fadeOut 0.5s forwards;
  }
</style>

<script>
  const element = document.getElementById('element');

  // 渐现
  element.classList.add('fade-in');
  element.classList.remove('fade-out');

  // 渐隐
  element.classList.add('fade-out');
  element.classList.remove('fade-in');
</script>

使用Web Animations API实现

现代浏览器支持的Web Animations API提供了更强大的动画控制能力。

const element = document.getElementById('element');

// 渐现
element.animate(
  [{ opacity: 0 }, { opacity: 1 }],
  { duration: 500, fill: 'forwards' }
);

// 渐隐
element.animate(
  [{ opacity: 1 }, { opacity: 0 }],
  { duration: 500, fill: 'forwards' }
);

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

相关文章

js实现渐隐

js实现渐隐

使用 CSS 过渡实现渐隐 通过 CSS 的 transition 和 opacity 属性实现渐隐效果,JavaScript 仅用于触发状态变化。 .fade-element { opacit…