当前位置:首页 > JavaScript

JS实现闪动

2026-03-15 06:09:40JavaScript

使用CSS动画实现闪动效果

通过CSS的@keyframes规则定义动画,结合opacity属性控制元素的透明度变化,实现闪动效果。JavaScript仅用于触发或控制动画。

.blink {
  animation: blink-animation 1s infinite;
}

@keyframes blink-animation {
  0% { opacity: 1; }
  50% { opacity: 0; }
  100% { opacity: 1; }
}
const element = document.getElementById('target');
element.classList.add('blink');

使用JavaScript定时器实现闪动

通过setInterval周期性切换元素的显示/隐藏状态,实现更灵活的闪动控制。可自定义闪动速度和次数。

function blink(element, duration = 500, times = Infinity) {
  let count = 0;
  const interval = setInterval(() => {
    element.style.visibility = 
      element.style.visibility === 'hidden' ? 'visible' : 'hidden';
    if (++count >= times * 2) clearInterval(interval);
  }, duration);
}

blink(document.getElementById('target'), 300, 5);

使用requestAnimationFrame实现高性能闪动

适合需要平滑动画效果的场景,通过浏览器原生动画API实现性能优化的闪动效果。

function smoothBlink(element, duration = 1000) {
  let start = null;
  function step(timestamp) {
    if (!start) start = timestamp;
    const progress = (timestamp - start) % duration;
    element.style.opacity = Math.abs(0.5 - progress / duration) * 2;
    requestAnimationFrame(step);
  }
  requestAnimationFrame(step);
}

smoothBlink(document.getElementById('target'));

结合CSS变量实现可控闪动

通过JavaScript动态修改CSS变量值,实现可实时调整的闪动效果。

.element {
  --blink-opacity: 1;
  opacity: var(--blink-opacity);
}
function variableBlink(element, speed = 1) {
  let direction = -0.05;
  function update() {
    const current = parseFloat(
      getComputedStyle(element).getPropertyValue('--blink-opacity')
    );
    const newValue = current + direction * speed;
    if (newValue <= 0 || newValue >= 1) direction *= -1;
    element.style.setProperty('--blink-opacity', newValue);
    requestAnimationFrame(update);
  }
  update();
}

variableBlink(document.querySelector('.element'));

使用Web Animations API实现

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

JS实现闪动

function webApiBlink(element) {
  element.animate([
    { opacity: 1 },
    { opacity: 0 },
    { opacity: 1 }
  ], {
    duration: 1000,
    iterations: Infinity
  });
}

webApiBlink(document.getElementById('anim-element'));

标签: JS
分享给朋友:

相关文章

JS实现哀悼

JS实现哀悼

实现网页哀悼效果的方法 通过CSS滤镜和全局样式调整,可以快速实现网页整体变灰的哀悼效果。以下是具体实现方式: document.addEventListener('DOMContentLo…

JS如何访问react内部的数据

JS如何访问react内部的数据

访问 React 组件内部数据的方法 在 React 中,组件内部的数据通常通过 state 或 props 管理。以下是几种常见的访问方式: 通过 state 访问数据 React 组件的内部状态…

JS如何实现左右滑动

JS如何实现左右滑动

实现左右滑动的方法 使用 touchstart、touchmove 和 touchend 事件监听触摸操作,计算滑动距离和方向。 let startX, moveX; element.addEve…

JS节流和防抖的实现

JS节流和防抖的实现

节流(Throttle)的实现 节流是指在一定时间间隔内,函数最多执行一次。常用于限制高频事件的触发频率,如滚动事件、窗口调整等。 function throttle(func, delay) {…

JS奇数实现

JS奇数实现

判断数字是否为奇数 在JavaScript中,可以通过取模运算符(%)来判断一个数字是否为奇数。奇数除以2的余数为1。 function isOdd(num) { return nu…

实现阶乘JS

实现阶乘JS

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