当前位置:首页 > JavaScript

js 实现闪烁

2026-03-13 21:13:25JavaScript

使用 CSS 动画实现闪烁

通过 animation@keyframes 定义透明度变化实现闪烁效果。CSS 动画性能更优,适合简单场景。

.blink {
  animation: blink 1s infinite;
}
@keyframes blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0; }
}
<div class="blink">闪烁内容</div>

使用 JavaScript 定时器实现闪烁

通过 setInterval 动态修改元素的 style.opacity 属性,适合需要精细控制闪烁逻辑的场景。

const element = document.getElementById('blink-element');
let visible = true;
setInterval(() => {
  visible = !visible;
  element.style.opacity = visible ? '1' : '0';
}, 500);

使用类切换实现闪烁

通过定时切换 CSS 类实现,可复用 CSS 样式且便于维护。

.blink-off {
  opacity: 0;
  transition: opacity 0.3s;
}
const element = document.getElementById('blink-element');
setInterval(() => {
  element.classList.toggle('blink-off');
}, 500);

使用 requestAnimationFrame 实现高性能闪烁

适合需要平滑动画或复杂闪烁模式的场景,避免定时器卡顿。

js 实现闪烁

const element = document.getElementById('blink-element');
let startTime = null;
function blink(timestamp) {
  if (!startTime) startTime = timestamp;
  const elapsed = timestamp - startTime;
  const progress = (elapsed % 1000) / 1000;
  element.style.opacity = Math.abs(0.5 - progress) * 2;
  requestAnimationFrame(blink);
}
requestAnimationFrame(blink);

注意事项

  • CSS 动画方案在移动端性能更好
  • JavaScript 方案需注意清除定时器(clearInterval
  • 高频闪烁(>5Hz)可能引发癫痫,需谨慎使用
  • 考虑添加 prefers-reduced-motion 媒体查询为动效敏感用户提供替代方案

标签: js
分享给朋友:

相关文章

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js验证码的实现

js验证码的实现

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

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…