当前位置:首页 > JavaScript

JS实现闪动

2026-04-06 23:39:16JavaScript

实现闪动效果的方法

使用JavaScript实现闪动效果可以通过多种方式完成,以下是几种常见的方法:

方法一:使用CSS动画结合JavaScript控制

定义一个CSS动画,通过JavaScript动态添加或移除类名来触发闪动效果。

/* CSS部分 */
.flash {
  animation: flash 0.5s infinite;
}

@keyframes flash {
  0% { opacity: 1; }
  50% { opacity: 0; }
  100% { opacity: 1; }
}
// JavaScript部分
const element = document.getElementById('target');
element.classList.add('flash');

// 停止闪动
function stopFlash() {
  element.classList.remove('flash');
}

方法二:纯JavaScript实现

使用setInterval不断改变元素的可见性来实现闪动效果。

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

// 停止闪动
function stopFlash() {
  clearInterval(flashInterval);
  element.style.opacity = '1';
}

方法三:使用requestAnimationFrame

这种方法性能更好,适合需要精细控制动画的场景。

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

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

  element.style.opacity = progress < 0.5 ? '1' : '0';

  if (flashing) {
    requestAnimationFrame(flash);
  }
}

// 开始闪动
requestAnimationFrame(flash);

// 停止闪动
function stopFlash() {
  flashing = false;
  element.style.opacity = '1';
}

注意事项

  • 对于简单的闪动效果,CSS动画方案性能更好且代码更简洁
  • 使用JavaScript控制可以实现更复杂的闪动逻辑和交互
  • 记得在不需要闪动时清除定时器或动画帧请求,避免内存泄漏
  • 考虑添加过渡效果使闪动更平滑,例如使用transition属性

扩展应用

可以通过修改上述代码实现不同形式的闪动:

JS实现闪动

  • 改变颜色而非透明度
  • 添加缩放效果
  • 实现有节奏的闪动模式
  • 根据用户交互触发闪动

标签: JS
分享给朋友:

相关文章

JS实现文本的删除

JS实现文本的删除

使用 substring() 方法 通过指定起始和结束索引截取字符串的一部分,间接实现删除效果。 let str = "Hello World"; let newStr = str.substr…

JS实现勋章

JS实现勋章

实现动态勋章效果 使用CSS和JavaScript创建动态旋转勋章。HTML部分定义勋章容器,CSS设置样式和动画,JavaScript控制交互行为。 <div class="badge-co…

实现阶乘JS

实现阶乘JS

递归实现阶乘 递归是一种直接按照数学定义实现阶乘的方法。n的阶乘可以表示为n乘以(n-1)的阶乘,基础情况是0的阶乘为1。 function factorialRecursive(n) { if…

JS实现取色

JS实现取色

使用 input[type="color"] 获取颜色值 HTML5 提供了原生颜色选择器,通过 <input type="color"> 可直接调用系统取色工具。用户选择的颜色会以十六进…

JS实现并发请求

JS实现并发请求

使用Promise.all实现并发请求 Promise.all可以同时发起多个异步请求,并在所有请求完成后统一处理结果。该方法适用于需要同时获取多个独立数据的场景。 const urls = ['u…

JS实现小手状

JS实现小手状

使用CSS cursor属性实现小手状 在网页中实现鼠标悬停时显示小手形状,最简单的方法是使用CSS的cursor属性。该属性可以直接设置为pointer,浏览器会自动渲染为手型图标。 .click…