当前位置:首页 > JavaScript

js实现闪烁效果

2026-03-01 05:19:30JavaScript

使用CSS动画实现闪烁效果

通过CSS的@keyframes规则定义闪烁动画,再利用JavaScript动态添加/移除类名控制效果。

CSS部分:

.blink {
  animation: blink 1s infinite;
}
@keyframes blink {
  0% { opacity: 1; }
  50% { opacity: 0; }
  100% { opacity: 1; }
}

JavaScript部分:

js实现闪烁效果

const element = document.getElementById('target');
element.classList.add('blink');

// 停止闪烁
function stopBlink() {
  element.classList.remove('blink');
}

纯JavaScript定时器实现

通过setIntervalopacity属性切换实现基础闪烁效果:

const element = document.getElementById('target');
let isVisible = true;

const blinkInterval = setInterval(() => {
  isVisible = !isVisible;
  element.style.opacity = isVisible ? '1' : '0';
}, 500);

// 停止闪烁
clearInterval(blinkInterval);

使用requestAnimationFrame实现高性能闪烁

适合需要平滑动画效果的场景:

js实现闪烁效果

const element = document.getElementById('target');
let startTime = null;
let running = true;

function blink(timestamp) {
  if (!startTime) startTime = timestamp;
  const elapsed = timestamp - startTime;
  const progress = (elapsed % 1000) / 1000;

  element.style.opacity = Math.abs(progress - 0.5) * 2;

  if (running) {
    requestAnimationFrame(blink);
  }
}

requestAnimationFrame(blink);

// 停止闪烁
function stopBlink() {
  running = false;
  element.style.opacity = '1';
}

颜色闪烁实现

实现元素背景色或文字颜色的闪烁变化:

const element = document.getElementById('target');
let colors = ['red', 'yellow', 'blue'];
let currentIndex = 0;

setInterval(() => {
  currentIndex = (currentIndex + 1) % colors.length;
  element.style.color = colors[currentIndex];
}, 300);

带缓动效果的闪烁

使用非线性变化实现更自然的闪烁效果:

const element = document.getElementById('target');
function easeInOutSine(x) {
  return -(Math.cos(Math.PI * x) - 1) / 2;
}

function blink() {
  const now = Date.now();
  const duration = 2000;
  const progress = (now % duration) / duration;

  const easedProgress = easeInOutSine(progress);
  element.style.opacity = Math.sin(easedProgress * Math.PI);

  requestAnimationFrame(blink);
}

blink();

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

相关文章

css3制作立体效果

css3制作立体效果

使用 transform 属性实现立体旋转 通过 transform-style: preserve-3d 和 rotateX/Y/Z 实现 3D 空间变换: .container { t…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Pa…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…