当前位置:首页 > 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
分享给朋友:

相关文章

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…

js实现导航菜单

js实现导航菜单

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